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,
132 const libMesh::Point& p,
161 virtual void operator() (
const libMesh::Point& p,
166 const libMesh::Point& p,
188 virtual void operator() (
const libMesh::Point& p,
194 const libMesh::Point& p,
218 virtual void operator() (
const libMesh::Point& p,
224 const libMesh::Point& p,
249 virtual void operator() (
const libMesh::Point& p,
254 const libMesh::Point& p,
279 virtual void operator() (
const libMesh::Point& p,
284 const libMesh::Point& p,
308 virtual void operator() (
const libMesh::Point& p,
315 const libMesh::Point& p,
340 virtual void operator() (
const libMesh::Point& p,
347 const libMesh::Point& p,
366 return _material->depends_on(f) ||
403 const libMesh::Point& p,
457 const libMesh::Point& p,
461 m = RealMatrixX::Zero(3,3); dm = RealMatrixX::Zero(3, 3);
462 Real h, off, dh, doff;
467 m *= dh*off + h*doff;
499 m *= (pow(h,3)/12. + h*pow(off,2));
508 const libMesh::Point& p,
512 m = RealMatrixX::Zero(3,3); dm = RealMatrixX::Zero(3, 3);
513 Real h, dhdf, off, doff;
519 m *= (pow(h,2)/4.*dhdf + dhdf*pow(off,2) + h*2.*off*doff);
522 m += (pow(h,3)/12. + h*pow(off, 2))* dm;
550 m = RealMatrixX::Zero(6, 6);
556 for (
unsigned int i=0; i<3; i++)
559 m(0,4) = off*h; m(4,0) = m(0,4);
560 m(1,3) = -off*h; m(3,1) = m(1,3);
561 m(3,3) = pow(h,3)/12. + h*pow(off,2);
562 m(4,4) = pow(h,3)/12. + h*pow(off,2);
563 m(5,5) = pow(h,3)/12.*1.0e-6;
575 const libMesh::Point& p,
578 m = RealMatrixX::Zero(6,6);
579 Real h, dhdf, rho, drhodf, off, doff;
584 for (
unsigned int i=0; i<3; i++)
585 m(i,i) = drhodf*h + rho*dhdf;
587 m(0,4) = doff*h+off*dhdf; m(4,0) = m(0,4);
588 m(1,3) = -doff*h-off*dhdf; m(3,1) = m(1,3);
589 m(3,3) = drhodf*pow(h,3)/12.+rho*pow(h,2)/4.*dhdf;
590 m(4,4) = drhodf*pow(h,3)/12.+rho*pow(h,2)/4.*dhdf;
591 m(5,5) = (drhodf*pow(h,3)/12.+rho*pow(h,2)/4.*dhdf)*1.0e-6;
602 _material_stiffness(mat_stiff),
603 _material_expansion(mat_expansion),
636 const libMesh::Point& p,
702 const libMesh::Point& p,
706 Real h, dh, off, doff;
715 m *= (dh*off+h*doff);
732 _prestress(prestress),
749 m = RealMatrixX::Zero(2, 2);
757 s = T.transpose() * s;
759 for (
unsigned int i=0; i<2; i++)
760 for (
unsigned int j=0; j<2; j++)
772 const libMesh::Point& p,
776 m = RealMatrixX::Zero(2, 2);
784 s = T.transpose() * s;
789 ds = T.transpose()*ds;
793 tmp = T.transpose() * tmp;
798 tmp = dT.transpose() * tmp;
803 for (
unsigned int i=0; i<2; i++)
804 for (
unsigned int j=0; j<2; j++)
805 m(i,j) = ds(i,j)*h + s(i,j)*dh;
851 m = RealMatrixX::Zero(2, 2);
860 s = T.transpose() * s;
862 for (
unsigned int i=0; i<2; i++)
863 for (
unsigned int j=0; j<2; j++)
864 m(i,j) = s(i,j)*(h*off);
874 const libMesh::Point& p,
878 m = RealMatrixX::Zero(2, 2);
879 Real h, dh, off, doff;
887 s = T.transpose() * s;
892 ds = T.transpose() * ds;
896 tmp = dT.transpose() * tmp;
901 tmp = T.transpose()*tmp;
906 for (
unsigned int i=0; i<2; i++)
907 for (
unsigned int j=0; j<2; j++)
908 m(i,j) = ds(i,j)*(h*off) + s(i,j)*(dh*off+h*doff);
936 m = RealMatrixX::Zero(2, 2);
949 const libMesh::Point& p,
952 m = RealMatrixX::Zero(2, 2);
990 m = RealMatrixX::Zero(1, 1);
1004 const libMesh::Point& p,
1008 m = RealMatrixX::Zero(1, 1);
1033 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1039 (_material->stiffness_matrix(2),
1040 this->get<const FieldFunction<Real> >(
"h"));
1042 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1046 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1052 (_material->stiffness_matrix(2),
1053 this->get<FieldFunction<Real> >(
"h"),
1056 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1060 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1067 (_material->stiffness_matrix(2),
1068 this->get<FieldFunction<Real> >(
"h"),
1071 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1075 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1081 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (
nullptr);
1086 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1097 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1102 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1108 (_material->stiffness_matrix(2),
1109 _material->thermal_expansion_matrix(2),
1110 this->get<FieldFunction<Real> >(
"h"));
1112 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1117 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1124 (_material->stiffness_matrix(2),
1125 _material->thermal_expansion_matrix(2),
1126 this->get<FieldFunction<Real> >(
"h"),
1129 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1133 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1140 (_material->transverse_shear_stiffness_matrix(),
1141 this->get<FieldFunction<Real> >(
"h"));
1143 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1147 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1153 libmesh_assert(
false);
1159 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1163 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1169 libmesh_assert(
false);
1176 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1181 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1188 (_material->conductance_matrix(2),
1189 this->get<FieldFunction<Real> >(
"h"));
1191 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1196 std::unique_ptr<MAST::FieldFunction<RealMatrixX> >
1203 (_material->capacitance_matrix(2),
1204 this->get<FieldFunction<Real> >(
"h"));
1206 return std::unique_ptr<MAST::FieldFunction<RealMatrixX> > (rval);
1214 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
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_A_matrix(MAST::ElementBase &e) const
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
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...
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 std::unique_ptr< MAST::FieldFunction< RealMatrixX > > prestress_B_matrix(MAST::ElementBase &e) 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...
virtual const MAST::FieldFunction< Real > & section(const MAST::ElementBase &e) const
TransverseStiffnessMatrix(const MAST::FieldFunction< RealMatrixX > &mat, const MAST::FieldFunction< Real > &h)
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_A_matrix(const MAST::ElementBase &e) 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< RealMatrixX > & _material_expansion
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 MAST::ElementBase &e) const
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
std::set< const MAST::FunctionBase * > _functions
set of functions that this function depends on
const MAST::FieldFunction< Real > & _rho
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< Real > & _h
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 ~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 > > stiffness_D_matrix(const MAST::ElementBase &e) const
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual bool depends_on(const MAST::FunctionBase &f) const
returns true if the property card depends on the function f
virtual void derivative(const MAST::FunctionBase &f, ValType &v) const
calculates the value of the function derivative and returns it in v.
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > transverse_shear_stiffness_matrix(const MAST::ElementBase &e) const
Matrix< Real, Dynamic, Dynamic > RealMatrixX
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_conductance_matrix(const MAST::ElementBase &e) const
const MAST::FieldFunction< RealMatrixX > & _T
virtual ~ThermalExpansionBMatrix()
const MAST::FieldFunction< RealMatrixX > & _mat_cond
virtual ~PrestressAMatrix()
const MAST::FieldFunction< RealMatrixX > & _prestress
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...
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()
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_capacitance_matrix(const MAST::ElementBase &e) const
const MAST::FieldFunction< Real > & _off
ThermalConductanceMatrix(const MAST::FieldFunction< RealMatrixX > &mat_cond, const MAST::FieldFunction< Real > &h)
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 > & _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...
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > thermal_expansion_B_matrix(const MAST::ElementBase &e) const
const MAST::FieldFunction< Real > & _off
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 ~PrestressBMatrix()
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...
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_B_matrix(const MAST::ElementBase &e) const
const MAST::FieldFunction< Real > & _off
const MAST::FieldFunction< Real > & _h
const MAST::FieldFunction< RealMatrixX > & _mat_cap
InertiaMatrix(const MAST::FieldFunction< Real > &rho, const MAST::FieldFunction< Real > &h, const MAST::FieldFunction< Real > &off)
const MAST::FieldFunction< RealMatrixX > & _material_stiffness
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 bool depends_on(const MAST::FunctionBase &f) const
returns true if the property card depends on the function f
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > damping_matrix(const MAST::ElementBase &e) const
virtual std::unique_ptr< MAST::FieldFunction< RealMatrixX > > stiffness_A_matrix(const MAST::ElementBase &e) const
virtual ~ThermalExpansionAMatrix()
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...
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...
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...
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...
This is the base class for elements that implement calculation of finite element quantities over the ...