15#ifndef ECDDR_EINSTEIN_DTB_HPP
16#define ECDDR_EINSTEIN_DTB_HPP
20#include <boost/math/constants/constants.hpp>
22#include <Eigen/Sparse>
23#include <unsupported/Eigen/SparseExtra>
63 typedef std::function<Eigen::Vector3d(
const Eigen::Vector3d &)>
OneFormType;
64 typedef std::function<Eigen::Vector3d(
const Eigen::Vector3d &)>
TwoFormType;
74 typedef std::function<Eigen::Vector3d(
const double t,
const Eigen::Vector3d &)>
TOneFormType;
75 typedef std::function<Eigen::Vector3d(
const double t,
const Eigen::Vector3d &)>
TTwoFormType;
84 typedef std::function<Eigen::Vector3d(
const Eigen::MatrixXd & E,
const Eigen::MatrixXd & B)>
CompositeHType;
86 typedef std::function<Eigen::Vector3d(
const Eigen::MatrixXd & D)>
CompositeEType;
88 typedef std::function<Eigen::Vector3d(
const Eigen::VectorXd &
E0,
const Eigen::VectorXd &
D0,
const Eigen::MatrixXd &
H,
const Eigen::MatrixXd & E,
const Eigen::MatrixXd & D,
const Eigen::MatrixXd & B)>
CompositeUType;
96 std::ostream &
output = std::cout
111 const Eigen::VectorXd &
starDtB
117 const std::vector<TwoFormType> & D,
118 const std::vector<OneFormType> & theta,
119 const std::vector<TwoFormType> & B,
120 const std::vector<TwoFormType> &
dtD,
121 const std::vector<OneFormType> & E,
122 const std::vector<OneFormType> &
H,
123 const std::vector<TwoFormType> &
dH
128 const Eigen::VectorXd &
starD
133 const Eigen::VectorXd &
starDB
139 const std::vector<OneFormType> &
theta0,
140 const std::vector<OneFormType> &
thetan,
141 const Eigen::VectorXd &
starDB0,
142 const Eigen::VectorXd &
starDBn,
148 const std::vector<Eigen::VectorXd> &
list_dofs
152 const Eigen::VectorXd &
starDt,
153 const std::vector<OneFormType> &
starD,
154 const std::vector<TwoFormType> &
starTheta,
155 const std::vector<TwoFormType> &
starB
161 const Eigen::MatrixXd &
forms,
162 const Eigen::MatrixXd & basis
168 const Eigen::MatrixXd &
forms
180 const Eigen::Vector3d &
form1,
181 const Eigen::Vector3d &
form2
186 const Eigen::Vector3d &
form
195 return Eigen::Vector3d(
204 return Eigen::Vector3d(
213 return Eigen::Vector3d(
222 return Eigen::Vector3d(
233 return Eigen::Vector3d(
242 Eigen::Matrix3d
starD = Eigen::Matrix<double,3,3>{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}} *
orth_D;
243 return Eigen::Vector3d(
252 Eigen::Matrix3d
starD = Eigen::Matrix<double,3,3>{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}} *
orth_D;
253 return Eigen::Vector3d(
262 Eigen::Matrix3d
starD = Eigen::Matrix<double,3,3>{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}} *
orth_D;
263 return Eigen::Vector3d(
273 composite_orth_U0 = [](
const Eigen::Vector3d &
E0,
const Eigen::Vector3d &
D0,
const Eigen::Matrix3d &
H,
const Eigen::Matrix3d & E,
const Eigen::Matrix3d & D,
const Eigen::Matrix3d & B) -> Eigen::Vector3d {
274 return Eigen::Vector3d(
282 composite_orth_U1 = [](
const Eigen::Vector3d &
E0,
const Eigen::Vector3d &
D0,
const Eigen::Matrix3d &
H,
const Eigen::Matrix3d & E,
const Eigen::Matrix3d & D,
const Eigen::Matrix3d & B) -> Eigen::Vector3d {
283 Eigen::Matrix<double,3,3>
hstar{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}};
287 Eigen::MatrixXd
starU = Eigen::MatrixXd::Identity(3,3)
295 composite_orth_U2 = [](
const Eigen::Vector3d &
E0,
const Eigen::Vector3d &
D0,
const Eigen::Matrix3d &
H,
const Eigen::Matrix3d & E,
const Eigen::Matrix3d & D,
const Eigen::Matrix3d & B) -> Eigen::Vector3d {
296 Eigen::Matrix<double,3,3>
hstar{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}};
300 Eigen::MatrixXd
starU = Eigen::MatrixXd::Identity(3,3)
308 composite_orth_U3 = [](
const Eigen::Vector3d &
E0,
const Eigen::Vector3d &
D0,
const Eigen::Matrix3d &
H,
const Eigen::Matrix3d & E,
const Eigen::Matrix3d & D,
const Eigen::Matrix3d & B) -> Eigen::Vector3d {
309 Eigen::Matrix<double,3,3>
hstar{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}};
313 Eigen::MatrixXd
starU = Eigen::MatrixXd::Identity(3,3)
421 return m_min_detTheta;
429 template<
typename outValue,
typename TFct>
432 std::function<
outValue(
const Eigen::Vector3d &)>
f = [&
F,
t](
const Eigen::Vector3d &x) ->
outValue {
return F(
t, x);};
436 template<
typename outValue,
typename Fct,
typename TFct>
440 for (
size_t i = 0;
i <
TF.size();
i++){
449 void _assemble_local_contribution(
452 std::vector<std::list<Eigen::Triplet<double>>> &
triplets_sys,
453 std::vector<Eigen::VectorXd> &
vec
457 _compute_local_contribution(
462 const Eigen::VectorXd &
starDtB
465 std::tuple<Eigen::VectorXd, Eigen::VectorXd, Eigen::MatrixXd, Eigen::MatrixXd, double>
466 _compute_nonlinear_relations(
470 const Eigen::VectorXd &
starDtB
476 std::ostream & m_output;
484 Eigen::VectorXd m_b_theta;
486 double m_min_detTheta;
489 static const double PI = boost::math::constants::pi<double>();
493 using std::cyl_bessel_j;
500 std::function<Eigen::Vector3d(
double t,
const Eigen::Vector3d &)>
star(
const std::function<Eigen::Vector3d(
double t,
const Eigen::Vector3d &)> &
F)
502 std::function<Eigen::Vector3d(
double t,
const Eigen::Vector3d &)>
f = [&
F](
double t,
const Eigen::Vector3d &x) -> Eigen::Vector3d {
return Eigen::Matrix<double,3,3>{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}}*
F(
t, x);};
506 std::function<Eigen::Vector3d(
const Eigen::Vector3d &)>
star(
const std::function<Eigen::Vector3d(
const Eigen::Vector3d &)> &
F)
508 std::function<Eigen::Vector3d(
const Eigen::Vector3d &)>
f = [&
F](
const Eigen::Vector3d &x) -> Eigen::Vector3d {
return Eigen::Matrix<double,3,3>{{0.,0.,1.},{0.,-1.,0.},{1.,0.,0.}}*
F(x);};
512 template<
typename Fct>
513 std::vector<Fct>
starCol(
const std::vector<Fct> &
F)
516 for (
size_t i = 0;
i <
F.size();
i++){
522 std::function<Eigen::Vector3d(
const Eigen::Vector3d &)>
noise(
const std::function<Eigen::Vector3d(
const Eigen::Vector3d &)> &
f)
524 std::function<Eigen::Vector3d(
const Eigen::Vector3d &)>
fnoise = [
f](
const Eigen::Vector3d &x) -> Eigen::Vector3d {
return f(x)+Eigen::Vector3d::Random()*1
e-10;};
541 return Eigen::Vector3d(
550 return Eigen::Vector3d(
559 return Eigen::Vector3d(
568 return Eigen::Vector3d(
578 minkowski_E0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
579 return Eigen::Vector3d(
587 minkowski_E1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
588 return Eigen::Vector3d(
596 minkowski_E2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
597 return Eigen::Vector3d(
605 minkowski_E3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
606 return Eigen::Vector3d(
616 minkowski_dE0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
617 return Eigen::Vector3d(
625 minkowski_dE1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
626 return Eigen::Vector3d(
634 minkowski_dE2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
635 return Eigen::Vector3d(
643 minkowski_dE3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
644 return Eigen::Vector3d(
654 minkowski_B0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
655 return Eigen::Vector3d(
663 minkowski_B1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
664 return Eigen::Vector3d(
672 minkowski_B2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
673 return Eigen::Vector3d(
681 minkowski_B3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
682 return Eigen::Vector3d(
693 return Eigen::Vector3d(
702 return Eigen::Vector3d(
711 return Eigen::Vector3d(
720 return Eigen::Vector3d(
730 minkowski_D0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
731 return Eigen::Vector3d(
739 minkowski_D1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
740 return Eigen::Vector3d(
748 minkowski_D2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
749 return Eigen::Vector3d(
757 minkowski_D3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
758 return Eigen::Vector3d(
769 return Eigen::Vector3d(
778 return Eigen::Vector3d(
787 return Eigen::Vector3d(
796 return Eigen::Vector3d(
806 minkowski_H0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
807 return Eigen::Vector3d(
815 minkowski_H1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
816 return Eigen::Vector3d(
824 minkowski_H2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
825 return Eigen::Vector3d(
833 minkowski_H3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
834 return Eigen::Vector3d(
844 minkowski_dH0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
845 return Eigen::Vector3d(
853 minkowski_dH1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
854 return Eigen::Vector3d(
862 minkowski_dH2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
863 return Eigen::Vector3d(
871 minkowski_dH3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
872 return Eigen::Vector3d(
891 kasner_theta0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
892 return Eigen::Vector3d(0, 0, 0);
896 kasner_theta1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
897 return Eigen::Vector3d(
sqrt(
t), 0, 0);
901 kasner_theta2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
902 return Eigen::Vector3d(0, pow(
t, -0.30901699437494745), 0);
906 kasner_theta3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
907 return Eigen::Vector3d(0, 0, pow(
t, 0.80901699437494745));
914 kasner_E0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
915 return Eigen::Vector3d(0, 0, 0);
919 kasner_E1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
920 return Eigen::Vector3d(0.5*pow(
t, -0.5), 0, 0);
924 kasner_E2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
925 return Eigen::Vector3d(0, -0.30901699437494745*pow(
t, -1.3090169943749475), 0);
929 kasner_E3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
930 return Eigen::Vector3d(0, 0, 0.80901699437494745*pow(
t, -0.19098300562505255));
939 return Eigen::Vector3d(0, 0, 0);
944 return Eigen::Vector3d(0.5*pow(
t, -1.5), 0, 0);
949 return Eigen::Vector3d(0, -0.30901699437494745*pow(
t, -2.3090169943749475), 0);
954 return Eigen::Vector3d(0, 0, 0.80901699437494745*pow(
t, -1.1909830056250525));
962 kasner_D0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
963 return Eigen::Vector3d(0, 0, 0);
967 kasner_D1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
968 return Eigen::Vector3d(0, 0, 0.5*pow(
t, -0.5));
972 kasner_D2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
973 return Eigen::Vector3d(0, -1.3090169943749475*pow(
t, 0.30901699437494745), 0);
977 kasner_D3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
978 return Eigen::Vector3d(0.19098300562505255*pow(
t, -0.80901699437494745), 0, 0);
988 return Eigen::Vector3d(0, 0, 0);
993 return Eigen::Vector3d(0, 0, 0.5*pow(
t, -1.5));
998 return Eigen::Vector3d(0, -1.3090169943749475*pow(
t, -0.69098300562505255), 0);
1003 return Eigen::Vector3d(0.19098300562505255*pow(
t, -1.8090169943749475), 0, 0);
1011 kasner_dtD0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1012 return Eigen::Vector3d(0, 0, 0);
1016 kasner_dtD1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1017 return Eigen::Vector3d(0, 0, -0.25*pow(
t, -1.5));
1021 kasner_dtD2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1022 return Eigen::Vector3d(0, -0.40450849718747378*pow(
t, -0.69098300562505255), 0);
1026 kasner_dtD3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1027 return Eigen::Vector3d(-0.1545084971874737*pow(
t, -1.8090169943749475), 0, 0);
1037 return Eigen::Vector3d(0, 0, 0);
1042 return Eigen::Vector3d(0, 0, -0.75*pow(
t, -2.5));
1047 return Eigen::Vector3d(0, 0.90450849718747373*pow(
t, -1.6909830056250525), 0);
1052 return Eigen::Vector3d(-0.34549150281252622*pow(
t, -2.8090169943749475), 0, 0);
1060 kasner_B0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1061 return Eigen::Vector3d(0, 0, 0);
1065 kasner_B1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1066 return Eigen::Vector3d(0, 0, 0);
1070 kasner_B2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1071 return Eigen::Vector3d(0, 0, 0);
1075 kasner_B3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1076 return Eigen::Vector3d(0, 0, 0);
1084 kasner_H0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1085 return Eigen::Vector3d(0, 0, 0);
1089 kasner_H1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1090 return Eigen::Vector3d(0, 0, 0);
1094 kasner_H2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1095 return Eigen::Vector3d(0, 0, 0);
1099 kasner_H3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1100 return Eigen::Vector3d(0, 0, 0);
1110 return Eigen::Vector3d(0, 0, 0);
1115 return Eigen::Vector3d(0, 0, 0);
1120 return Eigen::Vector3d(0, 0, 0);
1125 return Eigen::Vector3d(0, 0, 0);
1133 kasner_dH0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1134 return Eigen::Vector3d(0, 0, 0);
1138 kasner_dH1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1139 return Eigen::Vector3d(0, 0, 0);
1143 kasner_dH2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1144 return Eigen::Vector3d(0, 0, 0);
1148 kasner_dH3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1149 return Eigen::Vector3d(0, 0, 0);
1159 return Eigen::Vector3d(0, 0, 0);
1164 return Eigen::Vector3d(0, 0, 0);
1169 return Eigen::Vector3d(0, 0, 0);
1174 return Eigen::Vector3d(0, 0, 0);
1185 return pow(
t, -0.25)*
exp(0.5*pow(
M_PI, 2)*pow(
t, 2)*(pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + pow(cyl_bessel_j(1, 2*
M_PI*
t), 2)) - 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.5*pow(
M_PI, 2)*(pow(cyl_bessel_j(1, 2*
M_PI), 2) + pow(cyl_bessel_j(0, 2*
M_PI), 2)) + 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI));
1189 gowdy_theta0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1190 return Eigen::Vector3d(
1198 gowdy_theta1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1199 return Eigen::Vector3d(
1207 gowdy_theta2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1208 return Eigen::Vector3d(
1216 gowdy_theta3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1217 return Eigen::Vector3d(
1220 pow(
t, -0.25)*
exp(
M_PI*( 0.5*
M_PI*pow(
t, 2)*(pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + pow(cyl_bessel_j(1, 2*
M_PI*
t), 2))
1221 -0.5*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t)
1222 -0.5*
M_PI*(pow(cyl_bessel_j(1, 2*
M_PI), 2) + pow(cyl_bessel_j(0, 2*
M_PI), 2))
1223 + 0.25*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI)))
1230 gowdy_E0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1231 return Eigen::Vector3d(
1234 -1.0*pow(
M_PI, 2)*pow(
t, 1.0)*sin(4*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t)
1239 gowdy_E1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1240 return Eigen::Vector3d(
1241 pow(
t, -0.25)*(-1.0*
M_PI*pow(
t, 1.0)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t) + 0.5)*
exp(
M_PI*(-0.5*
M_PI*pow(
t, 2)*(pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + pow(cyl_bessel_j(1, 2*
M_PI*
t), 2)) + 0.5*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.25*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*
M_PI*(pow(cyl_bessel_j(1, 2*
M_PI), 2) + pow(cyl_bessel_j(0, 2*
M_PI), 2))) + 0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t)),
1248 gowdy_E2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1249 return Eigen::Vector3d(
1251 pow(
t, -0.25)*(1.0*
M_PI*pow(
t, 1.0)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t) + 0.5)*
exp(-0.5*pow(
M_PI, 2)*pow(
t, 2)*(pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + pow(cyl_bessel_j(1, 2*
M_PI*
t), 2)) + 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) - 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*pow(
M_PI, 2)*(pow(cyl_bessel_j(1, 2*
M_PI), 2) + pow(cyl_bessel_j(0, 2*
M_PI), 2))),
1257 gowdy_E3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1258 return Eigen::Vector3d(
1261 1.0/
t*(-1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.25)
1268 gowdy_dE0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1269 return Eigen::Vector3d(
1277 gowdy_dE1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1278 return Eigen::Vector3d(
1281 1.0/
t*(-1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.25)
1286 gowdy_dE2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1287 return Eigen::Vector3d(
1290 1.0*
M_PI*pow(
t, -0.25)*(2.0*
M_PI*pow(
t, 1.0)*cyl_bessel_j(1, 2*
M_PI*
t) + 2.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) - 0.5*cyl_bessel_j(0, 2*
M_PI*
t))*
exp(-0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) - 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(1, 2*
M_PI), 2) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(0, 2*
M_PI), 2))*sin(2*
M_PI*x(2))
1295 gowdy_dE3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1296 return Eigen::Vector3d(
1306 gowdy_H0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1307 return Eigen::Vector3d(
1315 gowdy_H1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1316 return Eigen::Vector3d(
1318 M_PI*
sqrt(
t)*(-1.0*pow(
t, 0.25) - 2.0*
M_PI*pow(
t, 1.25)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t))*
exp(-0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) - 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(1, 2*
M_PI), 2) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(0, 2*
M_PI), 2))*sin(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t),
1324 gowdy_H2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1325 return Eigen::Vector3d(
1326 M_PI*
sqrt(
t)*(-1.0*pow(
t, 0.25) + 2.0*
M_PI*pow(
t, 1.25)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t))*
exp(-0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) + 0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) - 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(1, 2*
M_PI), 2) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(0, 2*
M_PI), 2))*sin(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t),
1333 gowdy_H3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1334 return Eigen::Vector3d(
1344 gowdy_dH0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1345 return Eigen::Vector3d(
1353 gowdy_dH1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1354 return Eigen::Vector3d(
1357 1.0*pow(
M_PI, 2)*(1.0*pow(
t, 0.75)*pow(sin(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t) + 2.0*pow(
t, 0.75)*cos(2*
M_PI*x(2)) - 4.0*
M_PI*pow(
t, 1.75)*pow(sin(2*
M_PI*x(2)), 2)*cyl_bessel_j(1, 2*
M_PI*
t) + 4.0*
M_PI*pow(
t, 1.75)*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(1, 2*
M_PI*
t) - 4.0*pow(
M_PI, 2)*pow(
t, 2.75)*pow(sin(2*
M_PI*x(2)), 2)*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2))*
exp(-0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) - 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(1, 2*
M_PI), 2) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(0, 2*
M_PI), 2))*cyl_bessel_j(0, 2*
M_PI*
t)
1362 gowdy_dH2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1363 return Eigen::Vector3d(
1365 1.0*pow(
M_PI, 2)*(-1.0*pow(
t, 0.75)*pow(sin(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t) + 2.0*pow(
t, 0.75)*cos(2*
M_PI*x(2)) + 4.0*
M_PI*pow(
t, 1.75)*pow(sin(2*
M_PI*x(2)), 2)*cyl_bessel_j(1, 2*
M_PI*
t) - 4.0*
M_PI*pow(
t, 1.75)*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(1, 2*
M_PI*
t) + 4.0*pow(
M_PI, 2)*pow(
t, 2.75)*pow(sin(2*
M_PI*x(2)), 2)*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2))*
exp(-0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.5*pow(
M_PI, 2)*pow(
t, 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) + 0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) - 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(1, 2*
M_PI), 2) + 0.5*pow(
M_PI, 2)*pow(cyl_bessel_j(0, 2*
M_PI), 2))*cyl_bessel_j(0, 2*
M_PI*
t),
1371 gowdy_dH3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1372 return Eigen::Vector3d(
1382 gowdy_D0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1383 return Eigen::Vector3d(
1391 gowdy_D1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1392 return Eigen::Vector3d(
1395 pow(
t, -0.5)*(1.0*
M_PI*pow(
t, 1.0)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t) - 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + 0.25)*
exp(-0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t))
1400 gowdy_D2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1401 return Eigen::Vector3d(
1403 pow(
t, -0.5)*(1.0*
M_PI*pow(
t, 1.0)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t) + 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) - 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.25)*
exp(0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t)),
1409 gowdy_D3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1410 return Eigen::Vector3d(
1411 1.0*pow(
t, 0.25)*
exp(
M_PI*(-0.5*
M_PI*pow(
t, 2)*(pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + pow(cyl_bessel_j(1, 2*
M_PI*
t), 2)) + 0.5*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.25*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*
M_PI*(pow(cyl_bessel_j(1, 2*
M_PI), 2) + pow(cyl_bessel_j(0, 2*
M_PI), 2)))),
1420 gowdy_dtD0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1421 return Eigen::Vector3d(
1429 gowdy_dtD1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1430 return Eigen::Vector3d(
1433 pow(
t, -2.0)*(-0.125*
sqrt(
t) - 0.25*
M_PI*pow(
t, 1.5)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t) - 1.5*pow(
M_PI, 2)*pow(
t, 2.5)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + 0.5*pow(
M_PI, 2)*pow(
t, 2.5)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 2.0*pow(
M_PI, 2)*pow(
t, 2.5)*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) + 1.5*pow(
M_PI, 2)*pow(
t, 2.5)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 1.0*pow(
M_PI, 3)*pow(
t, 3.5)*pow(cos(2*
M_PI*x(2)), 3)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2)*cyl_bessel_j(1, 2*
M_PI*
t) + 1.0*pow(
M_PI, 3)*pow(
t, 3.5)*pow(cos(2*
M_PI*x(2)), 3)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 3) + 8.0*pow(
M_PI, 3)*pow(
t, 3.5)*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) + 1.0*pow(
M_PI, 3)*pow(
t, 3.5)*cos(2*
M_PI*x(2))*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2)*cyl_bessel_j(1, 2*
M_PI*
t) - 4.0*pow(
M_PI, 3)*pow(
t, 3.5)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t))*
exp(-0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t))
1438 gowdy_dtD2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1439 return Eigen::Vector3d(
1441 pow(
t, -2.0)*(0.125*
sqrt(
t) - 0.25*
M_PI*pow(
t, 1.5)*cos(2*
M_PI*x(2))*cyl_bessel_j(1, 2*
M_PI*
t) + 1.5*pow(
M_PI, 2)*pow(
t, 2.5)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.5*pow(
M_PI, 2)*pow(
t, 2.5)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 2.0*pow(
M_PI, 2)*pow(
t, 2.5)*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) - 1.5*pow(
M_PI, 2)*pow(
t, 2.5)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 1.0*pow(
M_PI, 3)*pow(
t, 3.5)*pow(cos(2*
M_PI*x(2)), 3)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2)*cyl_bessel_j(1, 2*
M_PI*
t) + 1.0*pow(
M_PI, 3)*pow(
t, 3.5)*pow(cos(2*
M_PI*x(2)), 3)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 3) - 8.0*pow(
M_PI, 3)*pow(
t, 3.5)*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) + 1.0*pow(
M_PI, 3)*pow(
t, 3.5)*cos(2*
M_PI*x(2))*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2)*cyl_bessel_j(1, 2*
M_PI*
t) + 4.0*pow(
M_PI, 3)*pow(
t, 3.5)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t))*
exp(0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t)),
1447 gowdy_dtD3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1448 return Eigen::Vector3d(
1449 pow(
t, -0.75)*(1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cos(2*
M_PI*x(2)), 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) - 1.0*pow(
M_PI, 2)*pow(
t, 2.0)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + 0.25)*
exp(
M_PI*(-0.5*
M_PI*pow(
t, 2)*pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) - 0.5*
M_PI*pow(
t, 2)*pow(cyl_bessel_j(1, 2*
M_PI*
t), 2) + 0.5*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.25*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI) + 0.5*
M_PI*pow(cyl_bessel_j(1, 2*
M_PI), 2) + 0.5*
M_PI*pow(cyl_bessel_j(0, 2*
M_PI), 2))), 0,
1457 gowdy_B0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1458 return Eigen::Vector3d(
1466 gowdy_B1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1467 return Eigen::Vector3d(
1475 gowdy_B2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1476 return Eigen::Vector3d(
1484 gowdy_B3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1485 return Eigen::Vector3d(
1495 gowdy_dtB0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1496 return Eigen::Vector3d(
1504 gowdy_dtB1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1505 return Eigen::Vector3d(
1507 M_PI*pow(
t, -0.5)*(-
M_PI*pow(
t, 1.0)*(1.0*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) + 2.0)*cyl_bessel_j(1, 2*
M_PI*
t) + 0.5*cyl_bessel_j(0, 2*
M_PI*
t))*
exp(0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t))*sin(2*
M_PI*x(2)),
1513 gowdy_dtB2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1514 return Eigen::Vector3d(
1517 M_PI*pow(
t, -0.5)*(
M_PI*pow(
t, 1.0)*(-1.0*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t) + 2.0)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.5*cyl_bessel_j(0, 2*
M_PI*
t))*
exp(-0.5*cos(2*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t))*sin(2*
M_PI*x(2))
1522 gowdy_dtB3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1523 return Eigen::Vector3d(
1538 return pow(
t, 3)*pow(x(0), 2)*x(1) + pow(
t, 3)*pow(x(0), 2)*x(2) + pow(
t, 3)*x(0)*pow(x(1), 2) + 2*pow(
t, 3)*x(0)*x(1)*x(2) + pow(
t, 3)*x(0)*pow(x(2), 2) + pow(
t, 3)*pow(x(1), 2)*x(2) + pow(
t, 3)*x(1)*pow(x(2), 2) + pow(
t, 2)*pow(x(0), 2) + 3*pow(
t, 2)*x(0)*x(1) + 3*pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*pow(x(1), 2) + 3*pow(
t, 2)*x(1)*x(2) + pow(
t, 2)*pow(x(2), 2) + 2*
t*x(0) + 2*
t*x(1) + 2*
t*x(2) + 1;
1543 return Eigen::Vector3d(0, 0, 0);
1548 return Eigen::Vector3d(
t*(x(0) + x(1)) + 1, 0, 0);
1553 return Eigen::Vector3d(0,
t*(x(1) + x(2)) + 1, 0);
1558 return Eigen::Vector3d(0, 0,
t*(x(0) + x(2)) + 1);
1565 linear_E0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1566 return Eigen::Vector3d(0, 0, 0);
1570 linear_E1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1571 return Eigen::Vector3d(1.0*x(0) + 1.0*x(1), 0, 0);
1575 linear_E2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1576 return Eigen::Vector3d(0, 1.0*x(1) + 1.0*x(2), 0);
1580 linear_E3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1581 return Eigen::Vector3d(0, 0, 1.0*x(0) + 1.0*x(2));
1590 return Eigen::Vector3d(
t*(-2*
t*x(0) -
t*x(1) -
t*x(2) - 2)/(pow(
t, 2)*pow(x(0), 2) + pow(
t, 2)*x(0)*x(1) + pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*x(1)*x(2) + 2*
t*x(0) +
t*x(1) +
t*x(2) + 1),
t*(-
t*x(0) - 2*
t*x(1) -
t*x(2) - 2)/(pow(
t, 2)*x(0)*x(1) + pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*pow(x(1), 2) + pow(
t, 2)*x(1)*x(2) +
t*x(0) + 2*
t*x(1) +
t*x(2) + 1),
t*(-
t*x(0) -
t*x(1) - 2*
t*x(2) - 2)/(pow(
t, 2)*x(0)*x(1) + pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*x(1)*x(2) + pow(
t, 2)*pow(x(2), 2) +
t*x(0) +
t*x(1) + 2*
t*x(2) + 1));
1595 return Eigen::Vector3d((x(0) + x(1))/(pow(
t, 3)*pow(x(0), 2)*x(1) + pow(
t, 3)*pow(x(0), 2)*x(2) + pow(
t, 3)*x(0)*pow(x(1), 2) + 2*pow(
t, 3)*x(0)*x(1)*x(2) + pow(
t, 3)*x(0)*pow(x(2), 2) + pow(
t, 3)*pow(x(1), 2)*x(2) + pow(
t, 3)*x(1)*pow(x(2), 2) + pow(
t, 2)*pow(x(0), 2) + 3*pow(
t, 2)*x(0)*x(1) + 3*pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*pow(x(1), 2) + 3*pow(
t, 2)*x(1)*x(2) + pow(
t, 2)*pow(x(2), 2) + 2*
t*x(0) + 2*
t*x(1) + 2*
t*x(2) + 1), 0, 0);
1600 return Eigen::Vector3d(0, (x(1) + x(2))/(pow(
t, 3)*pow(x(0), 2)*x(1) + pow(
t, 3)*pow(x(0), 2)*x(2) + pow(
t, 3)*x(0)*pow(x(1), 2) + 2*pow(
t, 3)*x(0)*x(1)*x(2) + pow(
t, 3)*x(0)*pow(x(2), 2) + pow(
t, 3)*pow(x(1), 2)*x(2) + pow(
t, 3)*x(1)*pow(x(2), 2) + pow(
t, 2)*pow(x(0), 2) + 3*pow(
t, 2)*x(0)*x(1) + 3*pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*pow(x(1), 2) + 3*pow(
t, 2)*x(1)*x(2) + pow(
t, 2)*pow(x(2), 2) + 2*
t*x(0) + 2*
t*x(1) + 2*
t*x(2) + 1), 0);
1605 return Eigen::Vector3d(0, 0, (x(0) + x(2))/(pow(
t, 3)*pow(x(0), 2)*x(1) + pow(
t, 3)*pow(x(0), 2)*x(2) + pow(
t, 3)*x(0)*pow(x(1), 2) + 2*pow(
t, 3)*x(0)*x(1)*x(2) + pow(
t, 3)*x(0)*pow(x(2), 2) + pow(
t, 3)*pow(x(1), 2)*x(2) + pow(
t, 3)*x(1)*pow(x(2), 2) + pow(
t, 2)*pow(x(0), 2) + 3*pow(
t, 2)*x(0)*x(1) + 3*pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*pow(x(1), 2) + 3*pow(
t, 2)*x(1)*x(2) + pow(
t, 2)*pow(x(2), 2) + 2*
t*x(0) + 2*
t*x(1) + 2*
t*x(2) + 1));
1613 linear_dE0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1614 return Eigen::Vector3d(0, 0, 0);
1618 linear_dE1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1619 return Eigen::Vector3d(-1.0, 0, 0);
1623 linear_dE2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1624 return Eigen::Vector3d(0, 0, -1.0);
1628 linear_dE3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1629 return Eigen::Vector3d(0, 1.0, 0);
1637 linear_D0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1638 return Eigen::Vector3d(
t*(
t*x(0) +
t*x(1) + 1)/(
t*x(0) +
t*x(2) + 1),
t*(-
t*x(0) -
t*x(2) - 1)/(
t*x(1) +
t*x(2) + 1),
t*(
t*x(1) +
t*x(2) + 1)/(
t*x(0) +
t*x(1) + 1));
1642 linear_D1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1643 return Eigen::Vector3d(0, 0, 2.0*
t*x(0)*x(1) + 2.0*
t*x(0)*x(2) + 2.0*
t*x(1)*x(2) + 2.0*
t*pow(x(2), 2) + 1.0*x(0) + 1.0*x(1) + 2.0*x(2));
1647 linear_D2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1648 return Eigen::Vector3d(0, -2.0*
t*pow(x(0), 2) - 2.0*
t*x(0)*x(1) - 2.0*
t*x(0)*x(2) - 2.0*
t*x(1)*x(2) - 2.0*x(0) - 1.0*x(1) - 1.0*x(2), 0);
1652 linear_D3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1653 return Eigen::Vector3d(2.0*
t*x(0)*x(1) + 2.0*
t*x(0)*x(2) + 2.0*
t*pow(x(1), 2) + 2.0*
t*x(1)*x(2) + 1.0*x(0) + 2.0*x(1) + 1.0*x(2), 0, 0);
1662 linear_dtD0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1663 return Eigen::Vector3d(0, 0, 0);
1667 linear_dtD1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1668 return Eigen::Vector3d(0, 0, 2.0*x(0)*x(1) + 2.0*x(0)*x(2) + 2.0*x(1)*x(2) + 2.0*pow(x(2), 2));
1672 linear_dtD2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1673 return Eigen::Vector3d(0, -2.0*pow(x(0), 2) - 2.0*x(0)*x(1) - 2.0*x(0)*x(2) - 2.0*x(1)*x(2), 0);
1677 linear_dtD3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1678 return Eigen::Vector3d(2.0*x(0)*x(1) + 2.0*x(0)*x(2) + 2.0*pow(x(1), 2) + 2.0*x(1)*x(2), 0, 0);
1686 linear_B0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1687 return Eigen::Vector3d(0, 0, 0);
1691 linear_B1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1692 return Eigen::Vector3d(-
t, 0, 0);
1696 linear_B2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1697 return Eigen::Vector3d(0, 0, -
t);
1701 linear_B3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1702 return Eigen::Vector3d(0,
t, 0);
1708 linear_dtB0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1709 return Eigen::Vector3d(0, 0, 0);
1713 linear_dtB1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1714 return Eigen::Vector3d(-1, 0, 0);
1718 linear_dtB2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1719 return Eigen::Vector3d(0, 0, -1);
1723 linear_dtB3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1724 return Eigen::Vector3d(0, 1, 0);
1730 linear_H0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1731 return Eigen::Vector3d(0, 0, 0);
1735 linear_H1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1736 return Eigen::Vector3d(0, -
t/(
t*x(0) +
t*x(2) + 1), 0);
1740 linear_H2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1741 return Eigen::Vector3d(0, 0, -
t/(
t*x(0) +
t*x(1) + 1));
1745 linear_H3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1746 return Eigen::Vector3d(-
t/(
t*x(1) +
t*x(2) + 1), 0, 0);
1752 linear_dH0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1753 return Eigen::Vector3d(0, 0, 0);
1757 linear_dH1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1758 return Eigen::Vector3d(pow(
t, 2)/pow(
t*x(0) +
t*x(2) + 1, 2), 0, -pow(
t, 2)/(pow(
t, 2)*pow(x(0), 2) + 2*pow(
t, 2)*x(0)*x(2) + pow(
t, 2)*pow(x(2), 2) + 2*
t*x(0) + 2*
t*x(2) + 1));
1762 linear_dH2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1763 return Eigen::Vector3d(0, pow(
t, 2)/(pow(
t, 2)*pow(x(0), 2) + 2*pow(
t, 2)*x(0)*x(1) + pow(
t, 2)*pow(x(1), 2) + 2*
t*x(0) + 2*
t*x(1) + 1), pow(
t, 2)/pow(
t*x(0) +
t*x(1) + 1, 2));
1767 linear_dH3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1768 return Eigen::Vector3d(-pow(
t, 2)/(pow(
t, 2)*pow(x(1), 2) + 2*pow(
t, 2)*x(1)*x(2) + pow(
t, 2)*pow(x(2), 2) + 2*
t*x(1) + 2*
t*x(2) + 1), pow(
t, 2)*(-
t*(x(0) + x(1)) - 1)/((
t*x(0) +
t*x(1) + 1)*pow(
t*x(1) +
t*x(2) + 1, 2)), 0);
1779 return 6*pow(
t, 3) + 26*pow(
t, 2) + 26*
t + 6;
1784 return Eigen::Vector3d(0, 0, 0);
1789 return Eigen::Vector3d(0, 0, 3*
t+1);
1794 return Eigen::Vector3d(2*
t+2, 0, 0);
1799 return Eigen::Vector3d(0,
t+3, 0);
1806 constant_E0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1807 return Eigen::Vector3d(0, 0, 0);
1811 constant_E1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1812 return Eigen::Vector3d(0, 0, 3.0);
1816 constant_E2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1817 return Eigen::Vector3d(2.0, 0, 0);
1821 constant_E3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1822 return Eigen::Vector3d(0, 1.0, 0);
1828 constant_dE0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1829 return Eigen::Vector3d(0, 0, 0);
1833 constant_dE1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1834 return Eigen::Vector3d(0, 0, 0);
1838 constant_dE2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1839 return Eigen::Vector3d(0, 0, 0);
1843 constant_dE3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1844 return Eigen::Vector3d(0, 0, 0);
1850 constant_D0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1851 return Eigen::Vector3d(0, 0, 0);
1855 constant_D1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1856 return Eigen::Vector3d(4.0*
t + 8.0, 0, 0);
1860 constant_D2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1861 return Eigen::Vector3d(0, 0, 6.0*
t + 10.0);
1865 constant_D3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1866 return Eigen::Vector3d(0, -12.0*
t - 8.0, 0);
1873 return Eigen::Vector3d(0, 0, 0);
1878 return Eigen::Vector3d(4.0, 0, 0);
1883 return Eigen::Vector3d(0, 0, 6.0);
1888 return Eigen::Vector3d(0, -12.0, 0);
1894 constant_B0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1895 return Eigen::Vector3d(0, 0, 0);
1899 constant_B1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1900 return Eigen::Vector3d(0, 0, 0);
1904 constant_B2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1905 return Eigen::Vector3d(0, 0, 0);
1909 constant_B3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1910 return Eigen::Vector3d(0, 0, 0);
1919 return Eigen::Vector3d(0, 0, 0);
1924 return Eigen::Vector3d(0, 0, 0);
1929 return Eigen::Vector3d(0, 0, 0);
1934 return Eigen::Vector3d(0, 0, 0);
1942 constant_H0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1943 return Eigen::Vector3d(0, 0, 0);
1947 constant_H1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1948 return Eigen::Vector3d(0, 0, 0);
1952 constant_H2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1953 return Eigen::Vector3d(0, 0, 0);
1957 constant_H3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1958 return Eigen::Vector3d(0, 0, 0);
1964 constant_dH0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1965 return Eigen::Vector3d(0, 0, 0);
1969 constant_dH1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1970 return Eigen::Vector3d(0, 0, 0);
1974 constant_dH2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1975 return Eigen::Vector3d(0, 0, 0);
1979 constant_dH3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1980 return Eigen::Vector3d(0, 0, 0);
1990 test_lapse = [](
const double t,
const Eigen::Vector3d & x) ->
double {
1991 return pow(
t, -0.25)*
exp(0.5*pow(
M_PI, 2)*pow(
t, 2)*(pow(cyl_bessel_j(0, 2*
M_PI*
t), 2) + pow(cyl_bessel_j(1, 2*
M_PI*
t), 2)) - 0.5*
M_PI*
t*pow(cos(2*
M_PI*x(2)), 2)*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t) - 0.5*pow(
M_PI, 2)*(pow(cyl_bessel_j(1, 2*
M_PI), 2) + pow(cyl_bessel_j(0, 2*
M_PI), 2)) + 0.25*
M_PI*cyl_bessel_j(0, 2*
M_PI)*cyl_bessel_j(1, 2*
M_PI));
1995 test_theta0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
1996 return Eigen::Vector3d(0, 0, 0);
2000 test_theta1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2001 return Eigen::Vector3d(1, 0, 0);
2005 test_theta2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2006 return Eigen::Vector3d(0, 1, 0);
2010 test_theta3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2011 return Eigen::Vector3d(0, 0, 1);
2018 test_E0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2019 return Eigen::Vector3d(0, 0, -1.0*pow(
M_PI, 2)*pow(
t, 1.0)*sin(4*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t));
2023 test_E1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2024 return Eigen::Vector3d(0, 0, 0);
2028 test_E2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2029 return Eigen::Vector3d(0, 0, 0);
2033 test_E3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2034 return Eigen::Vector3d(0, 0, 0);
2040 test_dE0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2041 return Eigen::Vector3d(0, 0, 0);
2045 test_dE1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2046 return Eigen::Vector3d(0, 0, 0);
2050 test_dE2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2051 return Eigen::Vector3d(0, 0, 0);
2055 test_dE3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2056 return Eigen::Vector3d(0, 0, 0);
2062 test_D0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2063 return Eigen::Vector3d(0, 0, 0);
2067 test_D1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2068 return Eigen::Vector3d(0, 0, 0);
2072 test_D2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2073 return Eigen::Vector3d(0, 0, 0);
2077 test_D3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2078 return Eigen::Vector3d(0, 0, 0);
2084 test_dtD0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2085 return Eigen::Vector3d(0, 0, 0);
2089 test_dtD1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2090 return Eigen::Vector3d(0, 0, 0);
2094 test_dtD2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2095 return Eigen::Vector3d(0, 0, 0);
2099 test_dtD3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2100 return Eigen::Vector3d(0, 0, 0);
2106 test_B0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2107 return Eigen::Vector3d(0, 0, 0);
2111 test_B1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2112 return Eigen::Vector3d(0, 0, 0);
2116 test_B2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2117 return Eigen::Vector3d(0, 0, 0);
2121 test_B3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2122 return Eigen::Vector3d(0, 0, 0);
2128 test_dtB0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2129 return Eigen::Vector3d(0, 0, 0);
2133 test_dtB1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2134 return Eigen::Vector3d(0, 0, 0);
2138 test_dtB2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2139 return Eigen::Vector3d(0, 0, 0);
2143 test_dtB3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2144 return Eigen::Vector3d(0, 0, 0);
2152 test_H0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2153 return Eigen::Vector3d(0, 0, 0);
2157 test_H1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2158 return Eigen::Vector3d(0, -1.0*pow(
M_PI, 2)*pow(
t, 1.0)*sin(4*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t), 0);
2162 test_H2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2163 return Eigen::Vector3d(1.0*pow(
M_PI, 2)*pow(
t, 1.0)*sin(4*
M_PI*x(2))*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t), 0, 0);
2167 test_H3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2168 return Eigen::Vector3d(0, 0, 0);
2174 test_dH0 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2175 return Eigen::Vector3d(0, 0, 0);
2179 test_dH1 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2180 return Eigen::Vector3d(0, 0, 4.0*pow(
M_PI, 3)*pow(
t, 1.0)*(-pow(sin(2*
M_PI*x(2)), 2) + pow(cos(2*
M_PI*x(2)), 2))*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t));
2184 test_dH2 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2185 return Eigen::Vector3d(0, 4.0*pow(
M_PI, 3)*pow(
t, 1.0)*(pow(sin(2*
M_PI*x(2)), 2) - pow(cos(2*
M_PI*x(2)), 2))*cyl_bessel_j(0, 2*
M_PI*
t)*cyl_bessel_j(1, 2*
M_PI*
t), 0);
2189 test_dH3 = [](
const double t,
const Eigen::Vector3d & x) -> Eigen::Vector3d {
2190 return Eigen::Vector3d(0, 0, 0);
Definition ddr_spaces.hpp:19
This structure is a wrapper to allow a given code to select various linear solvers.
Definition linearsolver.hpp:106
@ Matrix
Definition basis.hpp:67
size_t dimension() const
Returns the dimension of the global space (all DOFs for all geometric entities)
Definition localdofspace.hpp:80
static const double PI
Definition ddr-magnetostatics.hpp:187
bool use_threads
Definition HHO_DiffAdvecReac.hpp:47
GlobalDOFSpace const & dofspace(size_t k) const
Returns the dofspace associated to discrete k-forms.
Definition ddr_spaces.hpp:52
Definition PastixInterface.hpp:16
Definition ddr-magnetostatics.hpp:41
static Einstein::TTwoFormType constant_D0
Definition ecddr-einstein-dtb.hpp:1850
static Einstein::TCollection1Forms linear_dE
Definition ecddr-einstein-dtb.hpp:1632
static Einstein::TTwoFormType kasner_D0
Definition ecddr-einstein-dtb.hpp:962
static Einstein::TOneFormType linear_E0
This is E0 = 1/N dN.
Definition ecddr-einstein-dtb.hpp:1565
static Einstein::TOneFormType kasner_H0
Definition ecddr-einstein-dtb.hpp:1084
static Einstein::TCollection1Forms test_H
Definition ecddr-einstein-dtb.hpp:2171
static Einstein::TOneFormType linear_H1
Definition ecddr-einstein-dtb.hpp:1735
static Einstein::TTwoFormType gowdy_dtD3
Definition ecddr-einstein-dtb.hpp:1447
static Einstein::TCollection2Forms constant_B
Definition ecddr-einstein-dtb.hpp:1913
static Einstein::TTwoFormType minkowski_dE3
Definition ecddr-einstein-dtb.hpp:643
static Einstein::TTwoFormType minkowski_B0
Definition ecddr-einstein-dtb.hpp:654
static Einstein::TCollection2Forms kasner_dH
Definition ecddr-einstein-dtb.hpp:1152
static Einstein::TOneFormType deth_kasner_E2
Definition ecddr-einstein-dtb.hpp:948
static Einstein::TOneFormType gowdy_theta1
Definition ecddr-einstein-dtb.hpp:1198
static Einstein::TTwoFormType minkowski_dE1
Definition ecddr-einstein-dtb.hpp:625
static Einstein::TOneFormType deth_linear_E3
Definition ecddr-einstein-dtb.hpp:1604
static Einstein::TTwoFormType deth_kasner_dtD0
Definition ecddr-einstein-dtb.hpp:1036
static Einstein::TOneFormType linear_dE0
Definition ecddr-einstein-dtb.hpp:1613
static Einstein::TTwoFormType linear_D2
Definition ecddr-einstein-dtb.hpp:1647
static Einstein::TOneFormType kasner_theta1
Definition ecddr-einstein-dtb.hpp:896
static Einstein::TTwoFormType gowdy_dH2
Definition ecddr-einstein-dtb.hpp:1362
static Einstein::TTwoFormType test_dtD0
Definition ecddr-einstein-dtb.hpp:2084
static Einstein::TCollection1Forms kasner_theta
Definition ecddr-einstein-dtb.hpp:910
static Einstein::TTwoFormType kasner_D2
Definition ecddr-einstein-dtb.hpp:972
static Einstein::TTwoFormType linear_dtD1
Definition ecddr-einstein-dtb.hpp:1667
static Einstein::TOneFormType gowdy_E1
Definition ecddr-einstein-dtb.hpp:1239
static Einstein::TCollection2Forms linear_D
Definition ecddr-einstein-dtb.hpp:1656
static Einstein::TCollection2Forms test_B
Definition ecddr-einstein-dtb.hpp:2125
static Einstein::TTwoFormType gowdy_dtD1
Definition ecddr-einstein-dtb.hpp:1429
static Einstein::TCollection1Forms linear_H
Definition ecddr-einstein-dtb.hpp:1749
static Einstein::TTwoFormType test_dH1
Definition ecddr-einstein-dtb.hpp:2179
static Einstein::TTwoFormType minkowski_dH3
Definition ecddr-einstein-dtb.hpp:871
static Einstein::TOneFormType constant_H3
Definition ecddr-einstein-dtb.hpp:1957
static Einstein::TTwoFormType kasner_dH1
Definition ecddr-einstein-dtb.hpp:1138
static Einstein::TTwoFormType test_D2
Definition ecddr-einstein-dtb.hpp:2072
static Einstein::TOneFormType test_dE1
Definition ecddr-einstein-dtb.hpp:2045
static Einstein::TZeroFormType kasner_lapse
Definition ecddr-einstein-dtb.hpp:886
static Einstein::TZeroFormType gowdy_lapse
Definition ecddr-einstein-dtb.hpp:1184
static Einstein::TOneFormType constant_theta3
Definition ecddr-einstein-dtb.hpp:1798
static Einstein::TCollection1Forms test_E
Definition ecddr-einstein-dtb.hpp:2037
static Einstein::TTwoFormType linear_dH1
Definition ecddr-einstein-dtb.hpp:1757
static Einstein::TTwoFormType kasner_dtD1
Definition ecddr-einstein-dtb.hpp:1016
static Einstein::TOneFormType gowdy_E3
Definition ecddr-einstein-dtb.hpp:1257
static Einstein::TTwoFormType test_dH2
Definition ecddr-einstein-dtb.hpp:2184
static Einstein::TOneFormType kasner_theta2
Definition ecddr-einstein-dtb.hpp:901
static Einstein::TOneFormType linear_theta3
Definition ecddr-einstein-dtb.hpp:1557
static Einstein::TOneFormType kasner_E3
Definition ecddr-einstein-dtb.hpp:929
static Einstein::TTwoFormType minkowski_dtB1
Definition ecddr-einstein-dtb.hpp:701
static Einstein::TCollection1Forms minkowski_theta
Definition ecddr-einstein-dtb.hpp:575
static Einstein::TOneFormType deth_kasner_E0
Definition ecddr-einstein-dtb.hpp:938
static Einstein::TTwoFormType test_D1
Definition ecddr-einstein-dtb.hpp:2067
static Einstein::TOneFormType test_E1
Definition ecddr-einstein-dtb.hpp:2023
static Einstein::TCollection2Forms kasner_D
Definition ecddr-einstein-dtb.hpp:981
static Einstein::TTwoFormType gowdy_dE2
Definition ecddr-einstein-dtb.hpp:1286
static Einstein::TCollection1Forms constant_E
Definition ecddr-einstein-dtb.hpp:1825
static Einstein::TZeroFormType constant_lapse
Definition ecddr-einstein-dtb.hpp:1778
static Einstein::TCollection1Forms minkowski_dH
Definition ecddr-einstein-dtb.hpp:879
static Einstein::TCollection2Forms kasner_B
Definition ecddr-einstein-dtb.hpp:1079
static Einstein::TTwoFormType minkowski_dH0
Definition ecddr-einstein-dtb.hpp:844
static Einstein::TCollection2Forms test_dtB
Definition ecddr-einstein-dtb.hpp:2147
static Einstein::TOneFormType linear_E2
Definition ecddr-einstein-dtb.hpp:1575
static Einstein::TCollection1Forms gowdy_theta
Definition ecddr-einstein-dtb.hpp:1227
static Einstein::TTwoFormType gowdy_B3
Definition ecddr-einstein-dtb.hpp:1484
static Einstein::TTwoFormType kasner_B1
Definition ecddr-einstein-dtb.hpp:1065
static Einstein::TOneFormType constant_E2
Definition ecddr-einstein-dtb.hpp:1816
static Einstein::TTwoFormType constant_dtD1
Definition ecddr-einstein-dtb.hpp:1877
static Einstein::TTwoFormType minkowski_dH2
Definition ecddr-einstein-dtb.hpp:862
static Einstein::TTwoFormType test_dtB3
Definition ecddr-einstein-dtb.hpp:2143
static Einstein::TTwoFormType gowdy_dtB2
Definition ecddr-einstein-dtb.hpp:1513
static Einstein::TTwoFormType deth_kasner_dH2
Definition ecddr-einstein-dtb.hpp:1168
static Einstein::TCollection1Forms deth_linear_E
Definition ecddr-einstein-dtb.hpp:1608
static Einstein::TTwoFormType linear_dtD2
Definition ecddr-einstein-dtb.hpp:1672
static Einstein::TTwoFormType constant_dtD0
Definition ecddr-einstein-dtb.hpp:1872
static Einstein::TTwoFormType gowdy_dH1
Definition ecddr-einstein-dtb.hpp:1353
static Einstein::TOneFormType constant_theta2
Definition ecddr-einstein-dtb.hpp:1793
static Einstein::TTwoFormType constant_dtB2
Definition ecddr-einstein-dtb.hpp:1928
static Einstein::TTwoFormType linear_B3
Definition ecddr-einstein-dtb.hpp:1701
static Einstein::TCollection2Forms constant_dtB
Definition ecddr-einstein-dtb.hpp:1937
static Einstein::TOneFormType kasner_E0
Definition ecddr-einstein-dtb.hpp:914
static Einstein::TCollection2Forms minkowski_D
Definition ecddr-einstein-dtb.hpp:765
static Einstein::TTwoFormType minkowski_dE2
Definition ecddr-einstein-dtb.hpp:634
static Einstein::TOneFormType constant_theta1
Definition ecddr-einstein-dtb.hpp:1788
static Einstein::TTwoFormType minkowski_dE0
Definition ecddr-einstein-dtb.hpp:616
static Einstein::TTwoFormType gowdy_D2
Definition ecddr-einstein-dtb.hpp:1400
static Einstein::TOneFormType deth_kasner_H0
Definition ecddr-einstein-dtb.hpp:1109
static Einstein::TZeroFormType linear_lapse
Definition ecddr-einstein-dtb.hpp:1537
static Einstein::TCollection1Forms kasner_H
Definition ecddr-einstein-dtb.hpp:1103
static Einstein::TOneFormType gowdy_H0
Definition ecddr-einstein-dtb.hpp:1306
static Einstein::TTwoFormType kasner_D1
Definition ecddr-einstein-dtb.hpp:967
static Einstein::TTwoFormType linear_dH0
Definition ecddr-einstein-dtb.hpp:1752
static Einstein::TTwoFormType minkowski_B1
Definition ecddr-einstein-dtb.hpp:663
static Einstein::TOneFormType gowdy_H1
Definition ecddr-einstein-dtb.hpp:1315
static Einstein::TTwoFormType minkowski_D1
Definition ecddr-einstein-dtb.hpp:739
static Einstein::TOneFormType constant_dE3
Definition ecddr-einstein-dtb.hpp:1843
static Einstein::TCollection2Forms linear_dtB
Definition ecddr-einstein-dtb.hpp:1727
static Einstein::TTwoFormType test_B2
Definition ecddr-einstein-dtb.hpp:2116
static Einstein::TCollection1Forms constant_H
Definition ecddr-einstein-dtb.hpp:1961
static Einstein::TOneFormType linear_dE3
Definition ecddr-einstein-dtb.hpp:1628
static Einstein::TCollection2Forms constant_D
Definition ecddr-einstein-dtb.hpp:1869
static Einstein::TOneFormType minkowski_H2
Definition ecddr-einstein-dtb.hpp:824
static Einstein::TTwoFormType deth_kasner_D1
Definition ecddr-einstein-dtb.hpp:992
static Einstein::TTwoFormType kasner_dH2
Definition ecddr-einstein-dtb.hpp:1143
static Einstein::TTwoFormType gowdy_dE0
Definition ecddr-einstein-dtb.hpp:1268
static Einstein::TTwoFormType minkowski_B2
Definition ecddr-einstein-dtb.hpp:672
static Einstein::TOneFormType linear_dE2
Definition ecddr-einstein-dtb.hpp:1623
static Einstein::TCollection1Forms test_dE
Definition ecddr-einstein-dtb.hpp:2059
static Einstein::TOneFormType test_H2
Definition ecddr-einstein-dtb.hpp:2162
static Einstein::TOneFormType linear_H0
Definition ecddr-einstein-dtb.hpp:1730
static Einstein::TTwoFormType kasner_B0
Definition ecddr-einstein-dtb.hpp:1060
static Einstein::TOneFormType linear_theta0
Definition ecddr-einstein-dtb.hpp:1542
static Einstein::TTwoFormType linear_dtB3
Definition ecddr-einstein-dtb.hpp:1723
static Einstein::TOneFormType test_dE0
Definition ecddr-einstein-dtb.hpp:2040
static Einstein::TOneFormType deth_kasner_E3
Definition ecddr-einstein-dtb.hpp:953
static Einstein::TCollection1Forms gowdy_H
Definition ecddr-einstein-dtb.hpp:1341
static Einstein::TOneFormType kasner_H2
Definition ecddr-einstein-dtb.hpp:1094
static Einstein::TCollection2Forms gowdy_B
Definition ecddr-einstein-dtb.hpp:1492
static Einstein::TOneFormType linear_H3
Definition ecddr-einstein-dtb.hpp:1745
static Einstein::TOneFormType minkowski_theta1
Definition ecddr-einstein-dtb.hpp:549
static Einstein::TCollection1Forms gowdy_dE
Definition ecddr-einstein-dtb.hpp:1303
static Einstein::TCollection1Forms kasner_E
Definition ecddr-einstein-dtb.hpp:933
static Einstein::TTwoFormType minkowski_dtD2
Definition ecddr-einstein-dtb.hpp:786
static Einstein::TTwoFormType constant_D1
Definition ecddr-einstein-dtb.hpp:1855
static Einstein::TZeroFormType test_lapse
Definition ecddr-einstein-dtb.hpp:1990
static Einstein::TCollection1Forms linear_theta
Definition ecddr-einstein-dtb.hpp:1561
static Einstein::TTwoFormType minkowski_dtD1
Definition ecddr-einstein-dtb.hpp:777
static Einstein::TCollection2Forms minkowski_dtB
Definition ecddr-einstein-dtb.hpp:727
static Einstein::TTwoFormType deth_kasner_dH0
Definition ecddr-einstein-dtb.hpp:1158
static Einstein::TTwoFormType gowdy_D0
Definition ecddr-einstein-dtb.hpp:1382
static Einstein::TTwoFormType test_dtD1
Definition ecddr-einstein-dtb.hpp:2089
static Einstein::TTwoFormType test_B1
Definition ecddr-einstein-dtb.hpp:2111
static Einstein::TCollection2Forms deth_kasner_dtD
Definition ecddr-einstein-dtb.hpp:1055
static Einstein::TTwoFormType test_B3
Definition ecddr-einstein-dtb.hpp:2121
static Einstein::TTwoFormType minkowski_dtB3
Definition ecddr-einstein-dtb.hpp:719
static Einstein::TCollection2Forms constant_dH
Definition ecddr-einstein-dtb.hpp:1983
static Einstein::TOneFormType kasner_theta3
Definition ecddr-einstein-dtb.hpp:906
static Einstein::TTwoFormType linear_dH2
Definition ecddr-einstein-dtb.hpp:1762
static Einstein::TTwoFormType test_D0
Definition ecddr-einstein-dtb.hpp:2062
static Einstein::TOneFormType constant_E1
Definition ecddr-einstein-dtb.hpp:1811
static Einstein::TOneFormType test_theta2
Definition ecddr-einstein-dtb.hpp:2005
static Einstein::TTwoFormType linear_dtB2
Definition ecddr-einstein-dtb.hpp:1718
static Einstein::TTwoFormType minkowski_B3
Definition ecddr-einstein-dtb.hpp:681
static Einstein::TOneFormType gowdy_theta0
Definition ecddr-einstein-dtb.hpp:1189
static Einstein::TTwoFormType linear_D3
Definition ecddr-einstein-dtb.hpp:1652
static Einstein::TTwoFormType minkowski_dH1
Definition ecddr-einstein-dtb.hpp:853
static Einstein::TTwoFormType kasner_D3
Definition ecddr-einstein-dtb.hpp:977
static Einstein::TZeroFormType minkowski_lapse
Definition ecddr-einstein-dtb.hpp:535
static Einstein::TOneFormType minkowski_E3
Definition ecddr-einstein-dtb.hpp:605
static Einstein::TCollection1Forms minkowski_H
Definition ecddr-einstein-dtb.hpp:841
static Einstein::TOneFormType deth_linear_E2
Definition ecddr-einstein-dtb.hpp:1599
static Einstein::TTwoFormType gowdy_dtD2
Definition ecddr-einstein-dtb.hpp:1438
static Einstein::TCollection2Forms test_dH
Definition ecddr-einstein-dtb.hpp:2193
static Einstein::TTwoFormType gowdy_dE1
Definition ecddr-einstein-dtb.hpp:1277
static Einstein::TTwoFormType constant_D2
Definition ecddr-einstein-dtb.hpp:1860
static Einstein::TTwoFormType gowdy_B0
Definition ecddr-einstein-dtb.hpp:1457
static Einstein::TOneFormType minkowski_theta3
Definition ecddr-einstein-dtb.hpp:567
static Einstein::TOneFormType linear_dE1
Definition ecddr-einstein-dtb.hpp:1618
static Einstein::TTwoFormType kasner_dtD3
Definition ecddr-einstein-dtb.hpp:1026
static Einstein::TTwoFormType test_dH0
Definition ecddr-einstein-dtb.hpp:2174
static Einstein::TCollection1Forms constant_theta
Definition ecddr-einstein-dtb.hpp:1802
std::function< Eigen::Vector3d(const Eigen::Vector3d &)> noise(const std::function< Eigen::Vector3d(const Eigen::Vector3d &)> &f)
Definition ecddr-einstein-dtb.hpp:522
static Einstein::TOneFormType deth_linear_E0
This is E0 = 1/N dN.
Definition ecddr-einstein-dtb.hpp:1589
static Einstein::TTwoFormType test_B0
Definition ecddr-einstein-dtb.hpp:2106
static Einstein::TTwoFormType minkowski_D3
Definition ecddr-einstein-dtb.hpp:757
static Einstein::TTwoFormType deth_kasner_dH1
Definition ecddr-einstein-dtb.hpp:1163
static Einstein::TCollection1Forms linear_E
Definition ecddr-einstein-dtb.hpp:1584
static Einstein::TCollection2Forms gowdy_dtB
Definition ecddr-einstein-dtb.hpp:1530
static Einstein::TTwoFormType kasner_dtD0
Definition ecddr-einstein-dtb.hpp:1011
static Einstein::TCollection2Forms minkowski_dtD
Definition ecddr-einstein-dtb.hpp:803
static Einstein::TOneFormType test_H0
Definition ecddr-einstein-dtb.hpp:2152
static Einstein::TOneFormType test_E0
Definition ecddr-einstein-dtb.hpp:2018
static Einstein::TTwoFormType gowdy_dtD0
Definition ecddr-einstein-dtb.hpp:1420
static Einstein::TTwoFormType minkowski_dtB0
Definition ecddr-einstein-dtb.hpp:692
static Einstein::TTwoFormType gowdy_dH3
Definition ecddr-einstein-dtb.hpp:1371
static Einstein::TOneFormType minkowski_theta0
Definition ecddr-einstein-dtb.hpp:540
static Einstein::TOneFormType test_theta3
Definition ecddr-einstein-dtb.hpp:2010
static Einstein::TOneFormType kasner_E2
Definition ecddr-einstein-dtb.hpp:924
static Einstein::TTwoFormType gowdy_dH0
Definition ecddr-einstein-dtb.hpp:1344
static Einstein::TTwoFormType deth_kasner_D0
Definition ecddr-einstein-dtb.hpp:987
static Einstein::TTwoFormType gowdy_D3
Definition ecddr-einstein-dtb.hpp:1409
static Einstein::TTwoFormType constant_dtB1
Definition ecddr-einstein-dtb.hpp:1923
static Einstein::TCollection2Forms linear_dH
Definition ecddr-einstein-dtb.hpp:1771
static Einstein::TCollection2Forms linear_dtD
Definition ecddr-einstein-dtb.hpp:1681
static Einstein::TTwoFormType test_dtB2
Definition ecddr-einstein-dtb.hpp:2138
static Einstein::TOneFormType minkowski_H3
Definition ecddr-einstein-dtb.hpp:833
static Einstein::TCollection2Forms constant_dtD
Definition ecddr-einstein-dtb.hpp:1891
std::vector< Fct > starCol(const std::vector< Fct > &F)
Definition ecddr-einstein-dtb.hpp:513
static Einstein::TTwoFormType test_dtB0
Definition ecddr-einstein-dtb.hpp:2128
static Einstein::TTwoFormType linear_D0
Definition ecddr-einstein-dtb.hpp:1637
static Einstein::TOneFormType minkowski_H0
Definition ecddr-einstein-dtb.hpp:806
static Einstein::TOneFormType linear_E1
Definition ecddr-einstein-dtb.hpp:1570
static Einstein::TTwoFormType minkowski_dtD0
Definition ecddr-einstein-dtb.hpp:768
static Einstein::TTwoFormType constant_dtB0
Definition ecddr-einstein-dtb.hpp:1918
static Einstein::TTwoFormType linear_dtB1
Definition ecddr-einstein-dtb.hpp:1713
static Einstein::TCollection1Forms deth_kasner_H
Definition ecddr-einstein-dtb.hpp:1128
static Einstein::TCollection2Forms test_D
Definition ecddr-einstein-dtb.hpp:2081
static Einstein::TOneFormType minkowski_E1
Definition ecddr-einstein-dtb.hpp:587
static Einstein::TOneFormType deth_linear_E1
Definition ecddr-einstein-dtb.hpp:1594
static Einstein::TTwoFormType gowdy_dtB3
Definition ecddr-einstein-dtb.hpp:1522
static Einstein::TTwoFormType linear_B1
Definition ecddr-einstein-dtb.hpp:1691
static Einstein::TOneFormType constant_theta0
Definition ecddr-einstein-dtb.hpp:1783
static Einstein::TOneFormType linear_theta2
Definition ecddr-einstein-dtb.hpp:1552
static Einstein::TTwoFormType linear_B0
Definition ecddr-einstein-dtb.hpp:1686
static Einstein::TOneFormType constant_H2
Definition ecddr-einstein-dtb.hpp:1952
static Einstein::TCollection2Forms test_dtD
Definition ecddr-einstein-dtb.hpp:2103
static Einstein::TTwoFormType constant_dtD3
Definition ecddr-einstein-dtb.hpp:1887
static Einstein::TTwoFormType minkowski_D0
Definition ecddr-einstein-dtb.hpp:730
static Einstein::TTwoFormType test_D3
Definition ecddr-einstein-dtb.hpp:2077
static Einstein::TOneFormType deth_kasner_H1
Definition ecddr-einstein-dtb.hpp:1114
static Einstein::TOneFormType constant_E0
Definition ecddr-einstein-dtb.hpp:1806
static Einstein::TOneFormType kasner_H3
Definition ecddr-einstein-dtb.hpp:1099
static Einstein::TOneFormType constant_dE0
Definition ecddr-einstein-dtb.hpp:1828
static Einstein::TCollection2Forms gowdy_D
Definition ecddr-einstein-dtb.hpp:1417
static Einstein::TOneFormType test_dE3
Definition ecddr-einstein-dtb.hpp:2055
static Einstein::TCollection1Forms minkowski_dE
Definition ecddr-einstein-dtb.hpp:651
static Einstein::TTwoFormType deth_kasner_D3
Definition ecddr-einstein-dtb.hpp:1002
static Einstein::TOneFormType deth_kasner_H3
Definition ecddr-einstein-dtb.hpp:1124
static Einstein::TTwoFormType deth_kasner_dH3
Definition ecddr-einstein-dtb.hpp:1173
static Einstein::TOneFormType constant_E3
Definition ecddr-einstein-dtb.hpp:1821
static Einstein::TCollection2Forms linear_B
Definition ecddr-einstein-dtb.hpp:1705
static Einstein::TOneFormType gowdy_theta2
Definition ecddr-einstein-dtb.hpp:1207
static Einstein::TTwoFormType test_dtB1
Definition ecddr-einstein-dtb.hpp:2133
static Einstein::TTwoFormType test_dtD2
Definition ecddr-einstein-dtb.hpp:2094
static Einstein::TOneFormType minkowski_E2
Definition ecddr-einstein-dtb.hpp:596
static Einstein::TTwoFormType gowdy_dtB1
Definition ecddr-einstein-dtb.hpp:1504
static Einstein::TOneFormType linear_H2
Definition ecddr-einstein-dtb.hpp:1740
static Einstein::TOneFormType linear_theta1
Definition ecddr-einstein-dtb.hpp:1547
static Einstein::TTwoFormType linear_dtD0
Not calculated since not needed.
Definition ecddr-einstein-dtb.hpp:1662
static Einstein::TTwoFormType constant_B3
Definition ecddr-einstein-dtb.hpp:1909
static Einstein::TTwoFormType kasner_dtD2
Definition ecddr-einstein-dtb.hpp:1021
static Einstein::TTwoFormType minkowski_D2
Definition ecddr-einstein-dtb.hpp:748
static Einstein::TCollection2Forms gowdy_dtD
Definition ecddr-einstein-dtb.hpp:1454
static Einstein::TCollection1Forms gowdy_dH
Definition ecddr-einstein-dtb.hpp:1379
static Einstein::TOneFormType gowdy_H2
Definition ecddr-einstein-dtb.hpp:1324
static Einstein::TOneFormType deth_kasner_H2
Definition ecddr-einstein-dtb.hpp:1119
static Einstein::TTwoFormType linear_dH3
Definition ecddr-einstein-dtb.hpp:1767
static Einstein::TTwoFormType test_dH3
Definition ecddr-einstein-dtb.hpp:2189
static Einstein::TOneFormType minkowski_E0
Definition ecddr-einstein-dtb.hpp:578
static Einstein::TTwoFormType linear_B2
Definition ecddr-einstein-dtb.hpp:1696
static Einstein::TTwoFormType deth_kasner_dtD3
Definition ecddr-einstein-dtb.hpp:1051
static Einstein::TCollection1Forms minkowski_E
Definition ecddr-einstein-dtb.hpp:613
static Einstein::TTwoFormType constant_B1
Definition ecddr-einstein-dtb.hpp:1899
static Einstein::TTwoFormType linear_D1
Definition ecddr-einstein-dtb.hpp:1642
static Einstein::TTwoFormType minkowski_dtD3
Definition ecddr-einstein-dtb.hpp:795
static Einstein::TOneFormType kasner_theta0
Definition ecddr-einstein-dtb.hpp:891
static Einstein::TOneFormType kasner_E1
Definition ecddr-einstein-dtb.hpp:919
static Einstein::TTwoFormType kasner_dH0
Definition ecddr-einstein-dtb.hpp:1133
static Einstein::TTwoFormType test_dtD3
Definition ecddr-einstein-dtb.hpp:2099
static Einstein::TTwoFormType kasner_dH3
Definition ecddr-einstein-dtb.hpp:1148
static Einstein::TOneFormType gowdy_E0
Definition ecddr-einstein-dtb.hpp:1230
static Einstein::TOneFormType gowdy_H3
Definition ecddr-einstein-dtb.hpp:1333
static Einstein::TCollection1Forms test_theta
Definition ecddr-einstein-dtb.hpp:2014
static Einstein::TTwoFormType constant_B2
Definition ecddr-einstein-dtb.hpp:1904
static Einstein::TTwoFormType constant_dH2
Definition ecddr-einstein-dtb.hpp:1974
std::function< Eigen::Vector3d(double t, const Eigen::Vector3d &)> star(const std::function< Eigen::Vector3d(double t, const Eigen::Vector3d &)> &F)
Definition ecddr-einstein-dtb.hpp:500
static Einstein::TTwoFormType constant_dH1
Definition ecddr-einstein-dtb.hpp:1969
static Einstein::TOneFormType gowdy_theta3
Definition ecddr-einstein-dtb.hpp:1216
static Einstein::TCollection1Forms deth_kasner_E
Definition ecddr-einstein-dtb.hpp:957
static Einstein::TOneFormType kasner_H1
Definition ecddr-einstein-dtb.hpp:1089
static Einstein::TCollection2Forms deth_kasner_dH
Definition ecddr-einstein-dtb.hpp:1177
static Einstein::TTwoFormType gowdy_dtB0
Definition ecddr-einstein-dtb.hpp:1495
static Einstein::TCollection2Forms deth_kasner_D
Definition ecddr-einstein-dtb.hpp:1006
static Einstein::TTwoFormType linear_dtD3
Definition ecddr-einstein-dtb.hpp:1677
static Einstein::TTwoFormType constant_dH3
Definition ecddr-einstein-dtb.hpp:1979
static Einstein::TOneFormType constant_dE2
Definition ecddr-einstein-dtb.hpp:1838
static Einstein::TTwoFormType linear_dtB0
Definition ecddr-einstein-dtb.hpp:1708
static Einstein::TOneFormType constant_H0
Definition ecddr-einstein-dtb.hpp:1942
static Einstein::TCollection1Forms constant_dE
Definition ecddr-einstein-dtb.hpp:1847
static Einstein::TOneFormType test_dE2
Definition ecddr-einstein-dtb.hpp:2050
static Einstein::TTwoFormType kasner_B3
Definition ecddr-einstein-dtb.hpp:1075
static Einstein::TOneFormType deth_kasner_E1
Definition ecddr-einstein-dtb.hpp:943
static Einstein::TOneFormType test_H1
Definition ecddr-einstein-dtb.hpp:2157
static Einstein::TCollection2Forms kasner_dtD
Definition ecddr-einstein-dtb.hpp:1030
static Einstein::TTwoFormType deth_kasner_dtD2
Definition ecddr-einstein-dtb.hpp:1046
static Einstein::TTwoFormType constant_B0
Definition ecddr-einstein-dtb.hpp:1894
static Einstein::TOneFormType test_E2
Definition ecddr-einstein-dtb.hpp:2028
static Einstein::TOneFormType constant_H1
Definition ecddr-einstein-dtb.hpp:1947
static Einstein::TTwoFormType minkowski_dtB2
Definition ecddr-einstein-dtb.hpp:710
static Einstein::TCollection2Forms minkowski_B
Definition ecddr-einstein-dtb.hpp:689
static Einstein::TOneFormType test_H3
Definition ecddr-einstein-dtb.hpp:2167
static Einstein::TTwoFormType constant_dH0
Definition ecddr-einstein-dtb.hpp:1964
static Einstein::TOneFormType test_theta0
Definition ecddr-einstein-dtb.hpp:1995
static Einstein::TTwoFormType constant_D3
Definition ecddr-einstein-dtb.hpp:1865
static Einstein::TTwoFormType constant_dtD2
Definition ecddr-einstein-dtb.hpp:1882
static Einstein::TOneFormType gowdy_E2
Definition ecddr-einstein-dtb.hpp:1248
static Einstein::TOneFormType linear_E3
Definition ecddr-einstein-dtb.hpp:1580
static Einstein::TTwoFormType deth_kasner_D2
Definition ecddr-einstein-dtb.hpp:997
static Einstein::TTwoFormType gowdy_B2
Definition ecddr-einstein-dtb.hpp:1475
static Einstein::TCollection1Forms gowdy_E
Definition ecddr-einstein-dtb.hpp:1265
static Einstein::TOneFormType test_E3
Definition ecddr-einstein-dtb.hpp:2033
static Einstein::TTwoFormType gowdy_dE3
Definition ecddr-einstein-dtb.hpp:1295
static Einstein::TOneFormType minkowski_H1
Definition ecddr-einstein-dtb.hpp:815
static Einstein::TTwoFormType deth_kasner_dtD1
Definition ecddr-einstein-dtb.hpp:1041
static Einstein::TOneFormType minkowski_theta2
Definition ecddr-einstein-dtb.hpp:558
static Einstein::TTwoFormType constant_dtB3
Definition ecddr-einstein-dtb.hpp:1933
static Einstein::TOneFormType constant_dE1
Definition ecddr-einstein-dtb.hpp:1833
static Einstein::TTwoFormType gowdy_B1
Definition ecddr-einstein-dtb.hpp:1466
static Einstein::TOneFormType test_theta1
Definition ecddr-einstein-dtb.hpp:2000
static Einstein::TTwoFormType gowdy_D1
Definition ecddr-einstein-dtb.hpp:1391
static Einstein::TTwoFormType kasner_B2
Definition ecddr-einstein-dtb.hpp:1070
Structure to store norm components (for B_\alpha, D_\alpha, theta^\alpha)
Definition ecddr-einstein-dtb.hpp:39
Eigen::VectorXd D
Norms of D_alpha.
Definition ecddr-einstein-dtb.hpp:52
EinsteinNorms(Eigen::VectorXd norm_D, Eigen::VectorXd norm_theta, Eigen::VectorXd norm_B)
Constructor.
Definition ecddr-einstein-dtb.hpp:41
EinsteinNorms()
Definition ecddr-einstein-dtb.hpp:50
Eigen::VectorXd theta
Norms of theta^\alpha.
Definition ecddr-einstein-dtb.hpp:53
Eigen::VectorXd B
Norms of B_alpha.
Definition ecddr-einstein-dtb.hpp:54
Class to assemble and solve an Einstein problem.
Definition ecddr-einstein-dtb.hpp:59
std::function< Eigen::Vector3d(const double t, const Eigen::Vector3d &)> TTwoFormType
Definition ecddr-einstein-dtb.hpp:75
std::function< Eigen::Vector3d(const Eigen::Vector3d &)> OneFormType
Definition ecddr-einstein-dtb.hpp:63
std::vector< Fct > contractParaVec(const std::vector< TFct > &TF, double t) const
Takes a vector of two parameter functions and a value and returns a function with the first parameter...
Definition ecddr-einstein-dtb.hpp:437
Einstein::CompositeUType composite_orth_U2
Definition ecddr-einstein-dtb.hpp:295
std::function< outValue(const Eigen::Vector3d &)> contractPara(const TFct &F, double t) const
Takes a two parameter function and a value and returns a function with the first parameter fixed to v...
Definition ecddr-einstein-dtb.hpp:430
std::vector< ThreeFormType > Collection3Forms
Definition ecddr-einstein-dtb.hpp:71
const Eigen::VectorXd & rhsTheta() const
Returns the rhs of theta equation.
Definition ecddr-einstein-dtb.hpp:397
const SystemMatrixType & L2_X2() const
Returns the L of the LLT decomposition of the L2 product of X2.
Definition ecddr-einstein-dtb.hpp:377
Eigen::Matrix3d expand2Form(const Eigen::Vector3d &form) const
expand a 2 form vector into a 3x3 matrix
Definition ecddr-einstein-dtb.cpp:1195
std::function< Eigen::Vector3d(const Eigen::MatrixXd &E, const Eigen::MatrixXd &B)> CompositeHType
Definition ecddr-einstein-dtb.hpp:84
Einstein::CompositeHType composite_orth_H3
Definition ecddr-einstein-dtb.hpp:221
void updateThetaRHS(const Eigen::VectorXd &starD)
Definition ecddr-einstein-dtb.cpp:1204
TTwoFormType TForcingTermType
Definition ecddr-einstein-dtb.hpp:77
std::function< Eigen::Vector3d(const Eigen::Vector3d &)> TwoFormType
Definition ecddr-einstein-dtb.hpp:64
std::vector< OneFormType > Collection1Forms
Definition ecddr-einstein-dtb.hpp:69
Einstein::CompositeEType composite_orth_E0
Definition ecddr-einstein-dtb.hpp:232
Eigen::VectorXd & systemVector()
Returns the linear system right-hand side vector.
Definition ecddr-einstein-dtb.hpp:362
std::vector< ZeroFormType > TCollection0Forms
Definition ecddr-einstein-dtb.hpp:79
void assembleLinearSystem(double dt, const ZeroFormType &lapse, const OneFormType &E0, const Eigen::VectorXd &starDtB)
Definition ecddr-einstein-dtb.cpp:795
SystemMatrixType & lhsTheta()
Returns the lhs of theta equation.
Definition ecddr-einstein-dtb.hpp:392
std::function< double(const Eigen::Vector3d &)> ThreeFormType
Definition ecddr-einstein-dtb.hpp:65
std::vector< ZeroFormType > Collection0Forms
Definition ecddr-einstein-dtb.hpp:68
std::function< double(const Eigen::Vector3d &)> ZeroFormType
Definition ecddr-einstein-dtb.hpp:62
Eigen::VectorXd updateLapse(double dt, Eigen::VectorXd &lapse_n, Eigen::VectorXd &starDtB)
Definition ecddr-einstein.cpp:649
Einstein::CompositeEType composite_orth_E3
Definition ecddr-einstein-dtb.hpp:261
Eigen::MatrixXd basisChange(size_t k, const Eigen::MatrixXd &forms, const Eigen::MatrixXd &basis) const
Change of basis for 2 forms.
Definition ecddr-einstein-dtb.cpp:1096
TwoFormType ForcingTermType
Definition ecddr-einstein-dtb.hpp:66
Eigen::VectorXd & rhsTheta()
Returns the rhs of theta equation.
Definition ecddr-einstein-dtb.hpp:402
std::pair< EinsteinNorms, EinsteinNorms > computeContinuousErrorsNorms(const Eigen::VectorXd &starDt, const std::vector< OneFormType > &starD, const std::vector< TwoFormType > &starTheta, const std::vector< TwoFormType > &starB) const
Definition ecddr-einstein-dtb.cpp:1421
std::vector< EinsteinNorms > computeEinsteinNorms(const std::vector< Eigen::VectorXd > &list_dofs) const
Compute the discrete L2 norms, for a family of Eigen::VectorXd.
Definition ecddr-einstein-dtb.cpp:1369
size_t dimensionSpace() const
Returns the global problem dimension.
Definition ecddr-einstein-dtb.hpp:327
Eigen::SparseMatrix< double > SystemMatrixType
Definition ecddr-einstein-dtb.hpp:60
const double & stabilizationParameter() const
Returns the stabilization parameter.
Definition ecddr-einstein-dtb.hpp:411
std::function< Eigen::Vector3d(const Eigen::MatrixXd &D)> CompositeEType
Definition ecddr-einstein-dtb.hpp:86
std::function< Eigen::Vector3d(const double t, const Eigen::Vector3d &)> TOneFormType
Definition ecddr-einstein-dtb.hpp:74
Eigen::VectorXd contractIndex(size_t index, const Eigen::MatrixXd &forms) const
Contract collection index with first form index (A_i)^{ji}.
Definition ecddr-einstein-dtb.cpp:1123
std::vector< TwoFormType > Collection2Forms
Definition ecddr-einstein-dtb.hpp:70
std::function< double(const double t, const Eigen::Vector3d &)> TThreeFormType
Definition ecddr-einstein-dtb.hpp:76
Einstein::CompositeHType composite_orth_H2
Definition ecddr-einstein-dtb.hpp:212
SystemMatrixType & L2_X1()
Returns the L of the LLT decomposition of the L2 product of X1.
Definition ecddr-einstein-dtb.hpp:372
double & stabilizationParameter()
Returns the stabilization parameter.
Definition ecddr-einstein-dtb.hpp:416
std::function< double(const double t, const Eigen::Vector3d &)> TZeroFormType
Definition ecddr-einstein-dtb.hpp:73
Eigen::Vector3d wedge11(const Eigen::Vector3d &form1, const Eigen::Vector3d &form2) const
wedge a 1-form and a 1-form to return 2-form as [A12, A13, A23]
Definition ecddr-einstein-dtb.cpp:1185
SystemMatrixType & L2_X2()
Returns the L of the LLT decomposition of the L2 product of X2.
Definition ecddr-einstein-dtb.hpp:382
const DDR_Spaces & ddrSpaces() const
Returns the ECDDR sequence.
Definition ecddr-einstein-dtb.hpp:337
Einstein::CollectionUforms composite_orth_U
Definition ecddr-einstein-dtb.hpp:320
Einstein::CompositeEType composite_orth_E2
Definition ecddr-einstein-dtb.hpp:251
Einstein::CompositeUType composite_orth_U3
Definition ecddr-einstein-dtb.hpp:308
Einstein::CompositeUType composite_orth_U0
Definition ecddr-einstein-dtb.hpp:273
void computeBCRHS(double dt, const ZeroFormType &lapse_n, const std::vector< TwoFormType > &D, const std::vector< OneFormType > &theta, const std::vector< TwoFormType > &B, const std::vector< TwoFormType > &dtD, const std::vector< OneFormType > &E, const std::vector< OneFormType > &H, const std::vector< TwoFormType > &dH)
std::vector< CompositeEType > CollectionEforms
Definition ecddr-einstein-dtb.hpp:87
const SystemMatrixType & lhsTheta() const
Returns the lhs of theta equation.
Definition ecddr-einstein-dtb.hpp:387
const SystemMatrixType & L2_X1() const
Returns the L of the LLT decomposition of the L2 product of X1.
Definition ecddr-einstein-dtb.hpp:367
std::vector< TTwoFormType > TCollection2Forms
Definition ecddr-einstein-dtb.hpp:81
Eigen::VectorXd computeConstraints(const ZeroFormType &lapse_n, const std::vector< OneFormType > &theta0, const std::vector< OneFormType > &thetan, const Eigen::VectorXd &starDB0, const Eigen::VectorXd &starDBn, LinearSolver< Einstein::SystemMatrixType > &solver) const
Compute the constraints.
Definition ecddr-einstein-dtb.cpp:1522
Einstein::CompositeHType composite_orth_H0
Definition ecddr-einstein-dtb.hpp:194
double & min_detTheta()
Definition ecddr-einstein-dtb.hpp:420
double computeResidual(const Eigen::VectorXd &starDB) const
Compute the residual.
Definition ecddr-einstein-dtb.cpp:1504
std::vector< CompositeHType > CollectionHforms
Definition ecddr-einstein-dtb.hpp:85
Einstein::CollectionHforms composite_orth_H
Definition ecddr-einstein-dtb.hpp:229
void precomputeL2()
Definition ecddr-einstein-dtb.cpp:743
std::function< Eigen::Vector3d(const Eigen::VectorXd &E0, const Eigen::VectorXd &D0, const Eigen::MatrixXd &H, const Eigen::MatrixXd &E, const Eigen::MatrixXd &D, const Eigen::MatrixXd &B)> CompositeUType
Definition ecddr-einstein-dtb.hpp:88
Einstein::CompositeEType composite_orth_E1
Definition ecddr-einstein-dtb.hpp:241
std::vector< CompositeUType > CollectionUforms
Definition ecddr-einstein-dtb.hpp:89
Einstein::CompositeUType composite_orth_U1
Definition ecddr-einstein-dtb.hpp:282
SystemMatrixType & systemMatrix()
Returns the linear system matrix.
Definition ecddr-einstein-dtb.hpp:352
std::vector< TOneFormType > TCollection1Forms
Definition ecddr-einstein-dtb.hpp:80
Einstein::CompositeHType composite_orth_H1
Definition ecddr-einstein-dtb.hpp:203
const Eigen::VectorXd & systemVector() const
Returns the linear system right-hand side vector.
Definition ecddr-einstein-dtb.hpp:357
std::vector< TThreeFormType > TCollection3Forms
Definition ecddr-einstein-dtb.hpp:82
Einstein::CollectionEforms composite_orth_E
Definition ecddr-einstein-dtb.hpp:270
const SystemMatrixType & systemMatrix() const
Returns the linear system matrix.
Definition ecddr-einstein-dtb.hpp:347
Struct to store the systems and vector.
Definition parallel_for.hpp:18