28 namespace Solid2DSectionProperty {
38 virtual void operator() (
const libMesh::Point& p,
43 const libMesh::Point& p,
65 virtual void operator() (
const libMesh::Point& p,
70 const libMesh::Point& p,
90 virtual void operator() (
const libMesh::Point& p,
95 const libMesh::Point& p,
115 _h(h), _kappa(kappa) {
137 const libMesh::Point& p,
141 Real h, dh, kappa, dkappa;
143 _kappa(p, t, kappa); _kappa.derivative(f, p, t, dkappa);
147 m *= (dh*kappa + h*dkappa);
169 virtual void operator() (
const libMesh::Point& p,
174 const libMesh::Point& p,
196 virtual void operator() (
const libMesh::Point& p,
202 const libMesh::Point& p,
226 virtual void operator() (
const libMesh::Point& p,
232 const libMesh::Point& p,
257 virtual void operator() (
const libMesh::Point& p,
262 const libMesh::Point& p,
287 virtual void operator() (
const libMesh::Point& p,
292 const libMesh::Point& p,
316 virtual void operator() (
const libMesh::Point& p,
323 const libMesh::Point& p,
348 virtual void operator() (
const libMesh::Point& p,
355 const libMesh::Point& p,
374 return _material->depends_on(f) ||
411 const libMesh::Point& p,
465 const libMesh::Point& p,
469 m = RealMatrixX::Zero(3,3); dm = RealMatrixX::Zero(3, 3);
470 Real h, off, dh, doff;
475 m *= dh*off + h*doff;
507 m *= (pow(h,3)/12. + h*pow(off,2));
516 const libMesh::Point& p,
520 m = RealMatrixX::Zero(3,3); dm = RealMatrixX::Zero(3, 3);
521 Real h, dhdf, off, doff;
527 m *= (pow(h,2)/4.*dhdf + dhdf*pow(off,2) + h*2.*off*doff);
530 m += (pow(h,3)/12. + h*pow(off, 2))* dm;
558 m = RealMatrixX::Zero(6, 6);
564 for (
unsigned int i=0; i<3; i++)
567 m(0,4) = off*h; m(4,0) = m(0,4);
568 m(1,3) = -off*h; m(3,1) = m(1,3);
569 m(3,3) = pow(h,3)/12. + h*pow(off,2);
570 m(4,4) = pow(h,3)/12. + h*pow(off,2);
571 m(5,5) = pow(h,3)/12.*1.0e-6;
583 const libMesh::Point& p,
586 m = RealMatrixX::Zero(6,6);
587 Real h, dhdf, rho, drhodf, off, doff;
592 for (
unsigned int i=0; i<3; i++)
593 m(i,i) = drhodf*h + rho*dhdf;
595 m(0,4) = doff*h+off*dhdf; m(4,0) = m(0,4);
596 m(1,3) = -doff*h-off*dhdf; m(3,1) = m(1,3);
597 m(3,3) = drhodf*pow(h,3)/12.+rho*pow(h,2)/4.*dhdf;
598 m(4,4) = drhodf*pow(h,3)/12.+rho*pow(h,2)/4.*dhdf;
599 m(5,5) = (drhodf*pow(h,3)/12.+rho*pow(h,2)/4.*dhdf)*1.0e-6;
611 _material_stiffness(mat_stiff),
612 _material_expansion(mat_expansion),
645 const libMesh::Point& p,
711 const libMesh::Point& p,
715 Real h, dh, off, doff;
724 m *= (dh*off+h*doff);
741 _prestress(prestress),
758 m = RealMatrixX::Zero(2, 2);
766 s = T.transpose() * s;
768 for (
unsigned int i=0; i<2; i++)
769 for (
unsigned int j=0; j<2; j++)
781 const libMesh::Point& p,
785 m = RealMatrixX::Zero(2, 2);
793 s = T.transpose() * s;
798 ds = T.transpose()*ds;
802 tmp = T.transpose() * tmp;
807 tmp = dT.transpose() * tmp;
812 for (
unsigned int i=0; i<2; i++)
813 for (
unsigned int j=0; j<2; j++)
814 m(i,j) = ds(i,j)*h + s(i,j)*dh;
860 m = RealMatrixX::Zero(2, 2);
869 s = T.transpose() * s;
871 for (
unsigned int i=0; i<2; i++)
872 for (
unsigned int j=0; j<2; j++)
873 m(i,j) = s(i,j)*(h*off);
883 const libMesh::Point& p,
887 m = RealMatrixX::Zero(2, 2);
888 Real h, dh, off, doff;
896 s = T.transpose() * s;
901 ds = T.transpose() * ds;
905 tmp = dT.transpose() * tmp;
910 tmp = T.transpose()*tmp;
915 for (
unsigned int i=0; i<2; i++)
916 for (
unsigned int j=0; j<2; j++)
917 m(i,j) = ds(i,j)*(h*off) + s(i,j)*(dh*off+h*doff);
945 m = RealMatrixX::Zero(2, 2);
958 const libMesh::Point& p,
961 m = RealMatrixX::Zero(2, 2);
999 m = RealMatrixX::Zero(1, 1);
1013 const libMesh::Point& p,
1017 m = RealMatrixX::Zero(1, 1);
1042 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1048 (_material->stiffness_matrix(2, _if_plane_stress),
1049 this->get<const FieldFunction<Real> >(
"h"));
1051 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1055 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1061 (_material->stiffness_matrix(2, _if_plane_stress),
1062 this->get<const FieldFunction<Real> >(
"h"));
1064 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1068 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1074 (_material->stiffness_matrix(2, _if_plane_stress),
1075 this->get<FieldFunction<Real> >(
"h"),
1078 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1082 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1088 (_material->stiffness_matrix(2, _if_plane_stress),
1089 this->get<FieldFunction<Real> >(
"h"),
1092 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1096 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1103 (_material->stiffness_matrix(2, _if_plane_stress),
1104 this->get<FieldFunction<Real> >(
"h"),
1107 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1111 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1118 (_material->stiffness_matrix(2, _if_plane_stress),
1119 this->get<FieldFunction<Real> >(
"h"),
1122 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1126 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1132 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (
nullptr);
1137 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1148 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1152 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1163 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1168 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1174 (_material->stiffness_matrix(2, _if_plane_stress),
1175 _material->thermal_expansion_matrix(2),
1176 this->get<FieldFunction<Real> >(
"h"));
1178 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1182 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1188 (_material->stiffness_matrix(2, _if_plane_stress),
1189 _material->thermal_expansion_matrix(2),
1190 this->get<FieldFunction<Real> >(
"h"));
1192 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1196 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1203 (_material->stiffness_matrix(2, _if_plane_stress),
1204 _material->thermal_expansion_matrix(2),
1205 this->get<FieldFunction<Real> >(
"h"),
1208 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1212 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1219 (_material->stiffness_matrix(2, _if_plane_stress),
1220 _material->thermal_expansion_matrix(2),
1221 this->get<FieldFunction<Real> >(
"h"),
1224 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1228 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1235 (_material->transverse_shear_stiffness_matrix(),
1236 this->get<FieldFunction<Real> >(
"h"),
1240 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1244 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1251 (_material->transverse_shear_stiffness_matrix(),
1252 this->get<FieldFunction<Real> >(
"h"),
1256 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1260 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1266 libmesh_assert(
false);
1272 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1276 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1282 libmesh_assert(
false);
1289 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1294 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1301 (_material->conductance_matrix(2),
1302 this->get<FieldFunction<Real> >(
"h"));
1304 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1308 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1315 (_material->conductance_matrix(2),
1316 this->get<FieldFunction<Real> >(
"h"));
1318 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1322 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1329 (_material->capacitance_matrix(2),
1330 this->get<FieldFunction<Real> >(
"h"));
1332 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1336 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1343 (_material->capacitance_matrix(2),
1344 this->get<FieldFunction<Real> >(
"h"));
1346 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1353 return &(this->get<FieldFunction<Real>>(
"h"));
ExtensionBendingStiffnessMatrix(const MAST::FieldFunction< RealMatrixX > &mat, const MAST::FieldFunction< Real > &h, const MAST::FieldFunction< Real > &off)
const MAST::FieldFunction< Real > & _h
const MAST::FieldFunction< Real > & _h
const MAST::FieldFunction< Real > & _off
const MAST::FieldFunction< RealMatrixX > & _T
BendingStiffnessMatrix(const MAST::FieldFunction< RealMatrixX > &mat, const MAST::FieldFunction< Real > &h, const MAST::FieldFunction< Real > &off)
virtual ~BendingStiffnessMatrix()
virtual ~ThermalCapacitanceMatrix()
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual ~TransverseStiffnessMatrix()
virtual ~ExtensionStiffnessMatrix()
const MAST::FieldFunction< Real > & _h
const MAST::FieldFunction< RealMatrixX > & _prestress
const MAST::FieldFunction< RealMatrixX > & _material_expansion
ExtensionStiffnessMatrix(const MAST::FieldFunction< RealMatrixX > &mat, const MAST::FieldFunction< Real > &h)
const MAST::FieldFunction< Real > & _off
const MAST::FieldFunction< Real > & _h
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
const MAST::FieldFunction< RealMatrixX > & _material_expansion
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_A_matrix() const
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
std::set< const MAST::FunctionBase * > _functions
set of functions that this function depends on
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > damping_matrix(const MAST::ElementBase &e) const
const MAST::FieldFunction< Real > & _rho
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_B_matrix() const
virtual void derivative(const MAST::FunctionBase &f, ValType &v) const
calculates the value of the function derivative and returns it in v.
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > inertia_matrix() const
const MAST::FieldFunction< Real > & _h
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
const MAST::FieldFunction< Real > & _h
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_capacitance_matrix() const
const MAST::FieldFunction< Real > & _h
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_D_matrix() const
virtual ~ExtensionBendingStiffnessMatrix()
PrestressBMatrix(const MAST::FieldFunction< RealMatrixX > &prestress, const MAST::FieldFunction< RealMatrixX > &T, const MAST::FieldFunction< Real > &h, const MAST::FieldFunction< Real > &off)
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > transverse_shear_stiffness_matrix() const
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
const MAST::FieldFunction< Real > & _kappa
Matrix< Real, Dynamic, Dynamic > RealMatrixX
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_A_matrix(MAST::ElementBase &e) const
const MAST::FieldFunction< RealMatrixX > & _T
virtual ~ThermalExpansionBMatrix()
const MAST::FieldFunction< RealMatrixX > & _mat_cond
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
virtual ~PrestressAMatrix()
const MAST::FieldFunction< RealMatrixX > & _prestress
This creates the base class for functions that have a saptial and temporal dependence, and provide sensitivity operations with respect to the functions and parameters.
PrestressAMatrix(const MAST::FieldFunction< RealMatrixX > &prestress, const MAST::FieldFunction< RealMatrixX > &T, const MAST::FieldFunction< Real > &h)
virtual ~ThermalConductanceMatrix()
const MAST::FieldFunction< Real > & _off
ThermalConductanceMatrix(const MAST::FieldFunction< RealMatrixX > &mat_cond, const MAST::FieldFunction< Real > &h)
const MAST::FieldFunction< Real > & _h
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
virtual bool depends_on(const MAST::FunctionBase &f) const
returns true if the property card depends on the function f
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual const MAST::FieldFunction< Real > * section(const MAST::ElementBase &e) const
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_conductance_matrix() const
const MAST::FieldFunction< Real > & _off
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_B_matrix() const
ThermalExpansionAMatrix(const MAST::FieldFunction< RealMatrixX > &mat_stiff, const MAST::FieldFunction< RealMatrixX > &mat_expansion, const MAST::FieldFunction< Real > &h)
ThermalCapacitanceMatrix(const MAST::FieldFunction< RealMatrixX > &mat_cond, const MAST::FieldFunction< Real > &h)
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_B_matrix(MAST::ElementBase &e) const
virtual ~PrestressBMatrix()
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_A_matrix() const
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
const MAST::FieldFunction< Real > & _off
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
const MAST::FieldFunction< Real > & _h
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
const MAST::FieldFunction< RealMatrixX > & _mat_cap
InertiaMatrix(const MAST::FieldFunction< Real > &rho, const MAST::FieldFunction< Real > &h, const MAST::FieldFunction< Real > &off)
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
TransverseStiffnessMatrix(const MAST::FieldFunction< RealMatrixX > &mat, const MAST::FieldFunction< Real > &h, const MAST::FieldFunction< Real > &kappa)
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual void operator()(const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the function at the specified point, p, and time, t, and returns it in v...
const MAST::FieldFunction< Real > & _h
const MAST::FieldFunction< Real > & _h
ThermalExpansionBMatrix(const MAST::FieldFunction< RealMatrixX > &mat_stiff, const MAST::FieldFunction< RealMatrixX > &mat_expansion, const MAST::FieldFunction< Real > &h, const MAST::FieldFunction< Real > &off)
virtual void derivative(const MAST::FunctionBase &f, const libMesh::Point &p, const Real t, RealMatrixX &m) const
calculates the value of the derivative of function with respect to the function f at the specified po...
virtual ~ThermalExpansionAMatrix()
virtual bool depends_on(const MAST::FunctionBase &f) const
returns true if the property card depends on the function f
This is the base class for elements that implement calculation of finite element quantities over the ...