7 virtual Eigen::Vector<double,1>
B (
size_t map_id,
const Eigen::Vector<double,2> &) = 0;
8 virtual Eigen::Vector<double,2>
E (
size_t map_id,
const Eigen::Vector<double,2> &) = 0;
9 virtual Eigen::Vector<double,1>
dE (
size_t map_id,
const Eigen::Vector<double,2> &) = 0;
10 virtual Eigen::Vector<double,1>
rho (
size_t map_id,
const Eigen::Vector<double,2> &) = 0;
11 virtual Eigen::Vector<double,2>
J (
size_t map_id,
const Eigen::Vector<double,2> &) = 0;
17 Eigen::Vector<double,1>
B (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
19 const double X = x[0], Y = x[1];
20 const double ct = std::cos(
_t), st = std::sin(
_t);
22 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*ct + X*X + Y*Y + 1 - 2*X*st};
24 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*ct - X*X - Y*Y - 1 + 2*X*st};
27 Eigen::Vector<double,2>
E (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
29 const double X = x[0], Y = x[1];
30 const double ct = std::cos(
_t), st = std::sin(
_t);
32 return Eigen::Vector<double,2>{
33 Y*(-2*X*ct + (-X*X - Y*Y + 2)*st)/4,
34 X*(X*X + Y*Y - 2)*st/4 + (3*X*X + Y*Y - 3)*ct/4
37 return Eigen::Vector<double,2>{
38 Y*(2*X*ct + (-X*X - Y*Y + 2)*st)/4,
39 X*(X*X + Y*Y - 2)*st/4 - (3*X*X + Y*Y - 3)*ct/4
43 Eigen::Vector<double,1>
dE (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
45 const double X = x[0], Y = x[1];
46 const double ct = std::cos(
_t), st = std::sin(
_t);
48 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*st + 2*X*ct};
50 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*st - 2*X*ct};
53 Eigen::Vector<double,1>
rho (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
55 return Eigen::Vector<double,1>{0.};
57 Eigen::Vector<double,2>
J (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
59 const double X = x[0], Y = x[1];
60 const double ct = std::cos(
_t), st = std::sin(
_t);
62 double tmpJN = 3*(std::pow(X*X + Y*Y,2)/2. + X*X + Y*Y + 0.5)
63 + (1.5*std::pow(X*X + Y*Y,2) + 1.25*(X*X + Y*Y) - 1)*ct;
64 return Eigen::Vector<double,2>{
65 Y*tmpJN - X*Y*(2*X*X + 2*Y*Y + 2.5)*st,
66 -X*tmpJN + (10*std::pow(X,4) + 12*X*X*Y*Y + 15*X*X + 2*std::pow(Y,4) + 5*Y*Y - 1)*st/4.
69 double tmpJS = 3*(std::pow(X*X + Y*Y,2)/2. + X*X + Y*Y + 0.5)
70 - (1.5*std::pow(X*X + Y*Y,2) + 1.25*(X*X + Y*Y) - 1)*ct;
71 return Eigen::Vector<double,2>{
72 -Y*tmpJS + X*Y*(2*X*X + 2*Y*Y + 2.5)*st,
73 X*tmpJS - (10*std::pow(X,4) + 12*X*X*Y*Y + 15*X*X + 2*std::pow(Y,4) + 5*Y*Y - 1)*st/4.
80 Eigen::Vector<double,1>
B (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
82 const double X = x[0], Y = x[1];
83 const double ct = std::cos(
_t), st = std::sin(
_t);
85 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*ct + X*X + Y*Y + 1 - 2*X*st}
86 *std::pow(2./(1.+X*X+Y*Y),3);
88 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*ct - X*X - Y*Y - 1 + 2*X*st}
89 *std::pow(2./(1.+X*X+Y*Y),3);
92 Eigen::Vector<double,2>
E (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
94 return Eigen::Vector<double,2>{0.,0.};
96 Eigen::Vector<double,1>
dE (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
98 return Eigen::Vector<double,1>{0.};
100 Eigen::Vector<double,1>
rho (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
102 return Eigen::Vector<double,1>{0.};
104 Eigen::Vector<double,2>
J (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
106 return Eigen::Vector<double,2>{0.,0.};
111 Eigen::Vector<double,1>
B (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
113 const double X = x[0], Y = x[1];
114 const double ct = std::cos(
_t), st = std::sin(
_t);
116 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*ct + X*X + Y*Y + 1 - 2*X*st}
117 *std::pow(2./(1.+X*X+Y*Y),3);
119 return Eigen::Vector<double,1>{(X*X + Y*Y - 1)*ct - X*X - Y*Y - 1 + 2*X*st}
120 *std::pow(2./(1.+X*X+Y*Y),3);
123 Eigen::Vector<double,2>
E (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
126 return Eigen::Vector<double,2>{1.,0.};
128 return Eigen::Vector<double,2>{1.,0.};
131 Eigen::Vector<double,1>
dE (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
133 return Eigen::Vector<double,1>{0.};
135 Eigen::Vector<double,1>
rho (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
137 return Eigen::Vector<double,1>{0.};
139 Eigen::Vector<double,2>
J (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
141 return Eigen::Vector<double,2>{0.,0.};
146 Eigen::Vector<double,1>
B (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
148 return Eigen::Vector<double,1>{0.};
151 Eigen::Vector<double,2>
E (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
153 return Eigen::Vector<double,2>{0.,0.};
155 Eigen::Vector<double,1>
dE (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
157 return Eigen::Vector<double,1>{0.};
159 Eigen::Vector<double,1>
rho (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
161 const double X = x[0], Y = x[1];
162 constexpr
double t_0 = 0.8;
163 double ct = std::cos(t_0), st = std::sin(t_0);
164 double r2 = X*X + Y*Y;
166 double val = 2.*(1. - (2.*X*st + (1. - r2)*ct)/(1. + r2));
167 return Eigen::Vector<double,1>{(val > 3.8)? val : 0.};
169 double val = 2.*(1. - (2.*X*st - (1. - r2)*ct)/(1. + r2));
170 return Eigen::Vector<double,1>{(val > 3.8)? val : 0.};
173 Eigen::Vector<double,2>
J (
size_t map_id,
const Eigen::Vector<double,2> &x)
override
175 return Eigen::Vector<double,2>{0.,0.};
Definition: sphere_ref.hpp:16
Eigen::Vector< double, 1 > dE(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:43
Eigen::Vector< double, 2 > J(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:57
Eigen::Vector< double, 1 > B(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:17
Eigen::Vector< double, 2 > E(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:27
Eigen::Vector< double, 1 > rho(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:53
Definition: sphere_ref.hpp:79
Eigen::Vector< double, 1 > B(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:80
Eigen::Vector< double, 1 > rho(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:100
Eigen::Vector< double, 1 > dE(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:96
Eigen::Vector< double, 2 > J(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:104
Eigen::Vector< double, 2 > E(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:92
Definition: sphere_ref.hpp:110
Eigen::Vector< double, 1 > B(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:111
Eigen::Vector< double, 1 > dE(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:131
Eigen::Vector< double, 2 > E(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:123
Eigen::Vector< double, 1 > rho(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:135
Eigen::Vector< double, 2 > J(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:139
Definition: sphere_ref.hpp:145
Eigen::Vector< double, 2 > E(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:151
Eigen::Vector< double, 2 > J(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:173
Eigen::Vector< double, 1 > dE(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:155
Eigen::Vector< double, 1 > rho(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:159
Eigen::Vector< double, 1 > B(size_t map_id, const Eigen::Vector< double, 2 > &x) override
Definition: sphere_ref.hpp:146
Definition: sphere_ref.hpp:6
virtual Eigen::Vector< double, 2 > J(size_t map_id, const Eigen::Vector< double, 2 > &)=0
virtual Eigen::Vector< double, 1 > rho(size_t map_id, const Eigen::Vector< double, 2 > &)=0
virtual Eigen::Vector< double, 2 > E(size_t map_id, const Eigen::Vector< double, 2 > &)=0
double _t
Definition: sphere_ref.hpp:12
virtual ~Solution()
Definition: sphere_ref.hpp:13
virtual Eigen::Vector< double, 1 > dE(size_t map_id, const Eigen::Vector< double, 2 > &)=0
virtual Eigen::Vector< double, 1 > B(size_t map_id, const Eigen::Vector< double, 2 > &)=0