16 #include "weakform_library/weakforms_elasticity.h"
17 #include "weakform_library/integrals_h1.h"
23 namespace WeakFormsElasticity
25 template<
typename Scalar>
26 DefaultJacobianElasticity_0_0<Scalar>::DefaultJacobianElasticity_0_0
27 (
unsigned int i,
unsigned int j,
double lambda,
double mu)
28 : MatrixFormVol<Scalar>(i, j), lambda(lambda), mu(mu)
30 this->setSymFlag(HERMES_SYM);
33 template<
typename Scalar>
34 DefaultJacobianElasticity_0_0<Scalar>::DefaultJacobianElasticity_0_0
35 (
unsigned int i,
unsigned int j,
std::string area,
double lambda,
double mu)
36 : MatrixFormVol<Scalar>(i, j), lambda(lambda), mu(mu)
38 this->setSymFlag(HERMES_SYM);
42 template<
typename Scalar>
43 Scalar DefaultJacobianElasticity_0_0<Scalar>::value(
int n,
double *wt, Func<Scalar> *u_ext[], Func<double> *u,
44 Func<double> *v, GeomVol<double> *e, Func<Scalar> **ext)
const
46 return (lambda + 2 * mu) * int_dudx_dvdx<double, Scalar>(n, wt, u, v) +
47 mu * int_dudy_dvdy<double, Scalar>(n, wt, u, v);
50 template<
typename Scalar>
51 Ord DefaultJacobianElasticity_0_0<Scalar>::ord(
int n,
double *wt, Func<Ord> *u_ext[], Func<Ord> *u, Func<Ord> *v,
52 GeomVol<Ord> *e, Func<Ord> **ext)
const
54 return (lambda + 2 * mu) * int_dudx_dvdx<Ord, Ord>(n, wt, u, v) +
55 mu * int_dudy_dvdy<Ord, Ord>(n, wt, u, v);
58 template<
typename Scalar>
59 MatrixFormVol<Scalar>* DefaultJacobianElasticity_0_0<Scalar>::clone()
const
61 return new DefaultJacobianElasticity_0_0<Scalar>(this->i, this->j, this->areas[0], this->lambda, this->mu);
64 template<
typename Scalar>
65 DefaultJacobianElasticity_0_1<Scalar>::DefaultJacobianElasticity_0_1
66 (
unsigned int i,
unsigned int j,
double lambda,
double mu)
67 : MatrixFormVol<Scalar>(i, j), lambda(lambda), mu(mu)
69 this->setSymFlag(HERMES_SYM);
72 template<
typename Scalar>
73 DefaultJacobianElasticity_0_1<Scalar>::DefaultJacobianElasticity_0_1
74 (
unsigned int i,
unsigned int j,
std::string area,
double lambda,
double mu)
75 : MatrixFormVol<Scalar>(i, j), lambda(lambda), mu(mu)
77 this->setSymFlag(HERMES_SYM);
81 template<
typename Scalar>
82 Scalar DefaultJacobianElasticity_0_1<Scalar>::value(
int n,
double *wt, Func<Scalar> *u_ext[], Func<double> *u,
83 Func<double> *v, GeomVol<double> *e, Func<Scalar> **ext)
const
85 return lambda * int_dudy_dvdx<double, Scalar>(n, wt, u, v) +
86 mu * int_dudx_dvdy<double, Scalar>(n, wt, u, v);
89 template<
typename Scalar>
90 Ord DefaultJacobianElasticity_0_1<Scalar>::ord(
int n,
double *wt, Func<Ord> *u_ext[], Func<Ord> *u,
91 Func<Ord> *v, GeomVol<Ord> *e, Func<Ord> **ext)
const
93 return lambda * int_dudy_dvdx<Ord, Ord>(n, wt, u, v) +
94 mu * int_dudx_dvdy<Ord, Ord>(n, wt, u, v);
97 template<
typename Scalar>
98 MatrixFormVol<Scalar>* DefaultJacobianElasticity_0_1<Scalar>::clone()
const
100 return new DefaultJacobianElasticity_0_1<Scalar>(this->i, this->j, this->areas[0], this->lambda, this->mu);
103 template<
typename Scalar>
104 DefaultResidualElasticity_0_0<Scalar>::DefaultResidualElasticity_0_0
105 (
unsigned int i,
double lambda,
double mu)
106 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
110 template<
typename Scalar>
111 DefaultResidualElasticity_0_0<Scalar>::DefaultResidualElasticity_0_0
112 (
unsigned int i,
std::string area,
double lambda,
double mu)
113 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
118 template<
typename Scalar>
119 Scalar DefaultResidualElasticity_0_0<Scalar>::value(
int n,
double *wt, Func<Scalar> *u_ext[], Func<double> *v,
120 GeomVol<double> *e, Func<Scalar> **ext)
const
122 return (2 * mu + lambda) * int_dudx_dvdx<Scalar, double>(n, wt, u_ext[0], v) +
123 mu * int_dudy_dvdy<Scalar, double>(n, wt, u_ext[0], v);
126 template<
typename Scalar>
127 Ord DefaultResidualElasticity_0_0<Scalar>::ord(
int n,
double *wt, Func<Ord> *u_ext[], Func<Ord> *v,
128 GeomVol<Ord> *e, Func<Ord> **ext)
const
130 return (2 * mu + lambda) * int_dudx_dvdx<Ord, Ord>(n, wt, u_ext[0], v) +
131 mu * int_dudy_dvdy<Ord, Ord>(n, wt, u_ext[0], v);
134 template<
typename Scalar>
135 VectorFormVol<Scalar>* DefaultResidualElasticity_0_0<Scalar>::clone()
const
137 return new DefaultResidualElasticity_0_0<Scalar>(this->i, this->areas[0], this->lambda, this->mu);
140 template<
typename Scalar>
141 DefaultResidualElasticity_0_1<Scalar>::DefaultResidualElasticity_0_1
142 (
unsigned int i,
double lambda,
double mu)
143 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
147 template<
typename Scalar>
148 DefaultResidualElasticity_0_1<Scalar>::DefaultResidualElasticity_0_1
149 (
unsigned int i,
std::string area,
double lambda,
double mu)
150 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
155 template<
typename Scalar>
156 Scalar DefaultResidualElasticity_0_1<Scalar>::value(
int n,
double *wt, Func<Scalar> *u_ext[], Func<double> *v,
157 GeomVol<double> *e, Func<Scalar> **ext)
const
159 return lambda * int_dudy_dvdx<double, Scalar>(n, wt, u_ext[1], v) +
160 mu * int_dudx_dvdy<double, Scalar>(n, wt, u_ext[1], v);
163 template<
typename Scalar>
164 Ord DefaultResidualElasticity_0_1<Scalar>::ord(
int n,
double *wt, Func<Ord> *u_ext[], Func<Ord> *v,
165 GeomVol<Ord> *e, Func<Ord> **ext)
const
167 return lambda * int_dudy_dvdx<Ord, Ord>(n, wt, u_ext[1], v) +
168 mu * int_dudx_dvdy<Ord, Ord>(n, wt, u_ext[1], v);
171 template<
typename Scalar>
172 VectorFormVol<Scalar>* DefaultResidualElasticity_0_1<Scalar>::clone()
const
174 return new DefaultResidualElasticity_0_1<Scalar>(this->i, this->areas[0], this->lambda, this->mu);
177 template<
typename Scalar>
178 DefaultResidualElasticity_1_0<Scalar>::DefaultResidualElasticity_1_0
179 (
unsigned int i,
double lambda,
double mu)
180 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
184 template<
typename Scalar>
185 DefaultResidualElasticity_1_0<Scalar>::DefaultResidualElasticity_1_0
186 (
unsigned int i,
std::string area,
double lambda,
double mu)
187 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
192 template<
typename Scalar>
193 Scalar DefaultResidualElasticity_1_0<Scalar>::value(
int n,
double *wt, Func<Scalar> *u_ext[], Func<double> *v,
194 GeomVol<double> *e, Func<Scalar> **ext)
const
196 return mu * int_dudy_dvdx<double, Scalar>(n, wt, u_ext[0], v) +
197 lambda * int_dudx_dvdy<double, Scalar>(n, wt, u_ext[0], v);
200 template<
typename Scalar>
201 Ord DefaultResidualElasticity_1_0<Scalar>::ord(
int n,
double *wt, Func<Ord> *u_ext[], Func<Ord> *v,
202 GeomVol<Ord> *e, Func<Ord> **ext)
const
204 return mu * int_dudy_dvdx<Ord, Ord>(n, wt, u_ext[0], v) +
205 lambda * int_dudx_dvdy<Ord, Ord>(n, wt, u_ext[0], v);
208 template<
typename Scalar>
209 VectorFormVol<Scalar>* DefaultResidualElasticity_1_0<Scalar>::clone()
const
211 return new DefaultResidualElasticity_1_0<Scalar>(this->i, this->areas[0], this->lambda, this->mu);
214 template<
typename Scalar>
215 DefaultResidualElasticity_1_1<Scalar>::DefaultResidualElasticity_1_1
216 (
unsigned int i,
double lambda,
double mu)
217 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
221 template<
typename Scalar>
222 DefaultResidualElasticity_1_1<Scalar>::DefaultResidualElasticity_1_1
223 (
unsigned int i,
std::string area,
double lambda,
double mu)
224 : VectorFormVol<Scalar>(i), lambda(lambda), mu(mu)
229 template<
typename Scalar>
230 Scalar DefaultResidualElasticity_1_1<Scalar>::value(
int n,
double *wt, Func<Scalar> *u_ext[], Func<double> *v,
231 GeomVol<double> *e, Func<Scalar> **ext)
const
233 return (2 * mu + lambda) * int_dudy_dvdy<double, Scalar>(n, wt, u_ext[1], v) +
234 mu * int_dudx_dvdx<double, Scalar>(n, wt, u_ext[1], v);
237 template<
typename Scalar>
238 Ord DefaultResidualElasticity_1_1<Scalar>::ord(
int n,
double *wt, Func<Ord> *u_ext[], Func<Ord> *v,
239 GeomVol<Ord> *e, Func<Ord> **ext)
const
241 return (2 * mu + lambda) * int_dudy_dvdy<Ord, Ord>(n, wt, u_ext[1], v) +
242 mu * int_dudx_dvdx<Ord, Ord>(n, wt, u_ext[1], v);
245 template<
typename Scalar>
246 VectorFormVol<Scalar>* DefaultResidualElasticity_1_1<Scalar>::clone()
const
248 return new DefaultResidualElasticity_1_1<Scalar>(this->i, this->areas[0], this->lambda, this->mu);
251 template<
typename Scalar>
252 DefaultJacobianElasticity_1_1<Scalar>::DefaultJacobianElasticity_1_1
253 (
unsigned int i,
unsigned int j,
double lambda,
double mu)
254 : MatrixFormVol<Scalar>(i, j), lambda(lambda), mu(mu)
258 template<
typename Scalar>
259 DefaultJacobianElasticity_1_1<Scalar>::DefaultJacobianElasticity_1_1
260 (
unsigned int i,
unsigned int j,
std::string area,
double lambda,
double mu)
261 : MatrixFormVol<Scalar>(i, j), lambda(lambda), mu(mu)
266 template<
typename Scalar>
267 Scalar DefaultJacobianElasticity_1_1<Scalar>::value(
int n,
double *wt, Func<Scalar> *u_ext[], Func<double> *u,
268 Func<double> *v, GeomVol<double> *e, Func<Scalar> **ext)
const
270 return mu * int_dudx_dvdx<double, Scalar>(n, wt, u, v) +
271 (lambda + 2 * mu) * int_dudy_dvdy<double, Scalar>(n, wt, u, v);
274 template<
typename Scalar>
275 Ord DefaultJacobianElasticity_1_1<Scalar>::ord(
int n,
double *wt, Func<Ord> *u_ext[], Func<Ord> *u, Func<Ord> *v,
276 GeomVol<Ord> *e, Func<Ord> **ext)
const
278 return mu * int_dudx_dvdx<Ord, Ord>(n, wt, u, v) +
279 (lambda + 2 * mu) * int_dudy_dvdy<Ord, Ord>(n, wt, u, v);
282 template<
typename Scalar>
283 MatrixFormVol<Scalar>* DefaultJacobianElasticity_1_1<Scalar>::clone()
const
285 return new DefaultJacobianElasticity_1_1<Scalar>(this->i, this->j, this->areas[0], this->lambda, this->mu);
288 template class HERMES_API DefaultJacobianElasticity_0_0 < double > ;
289 template class HERMES_API DefaultJacobianElasticity_0_1 < double > ;
290 template class HERMES_API DefaultResidualElasticity_0_0 < double > ;
291 template class HERMES_API DefaultResidualElasticity_0_1 < double > ;
292 template class HERMES_API DefaultResidualElasticity_1_0 < double > ;
293 template class HERMES_API DefaultResidualElasticity_1_1 < double > ;
294 template class HERMES_API DefaultJacobianElasticity_1_1 < double > ;
::xsd::cxx::tree::string< char, simple_type > string
C++ type corresponding to the string XML Schema built-in type.