27 namespace OrthotropicMaterialProperty {
38 virtual void operator() (
const libMesh::Point& p,
43 const libMesh::Point& p,
64 virtual void operator() (
const libMesh::Point& p,
69 const libMesh::Point& p,
92 virtual void operator() (
const libMesh::Point& p,
97 const libMesh::Point& p,
127 virtual void operator() (
const libMesh::Point& p,
132 const libMesh::Point& p,
152 virtual void operator() (
const libMesh::Point& p,
157 const libMesh::Point& p,
177 _alpha[0] = &alpha11;
188 _alpha[0] = &alpha11;
189 _alpha[1] = &alpha22;
190 for (
unsigned int i=0; i<_dim; i++)
202 _alpha[0] = &alpha11;
203 _alpha[1] = &alpha22;
204 _alpha[2] = &alpha33;
206 for (
unsigned int i=0; i<_dim; i++)
213 virtual void operator() (
const libMesh::Point& p,
218 const libMesh::Point& p,
226 std::vector<const MAST::FieldFunction<Real>*>
_alpha;
255 for (
unsigned int i=0; i<_dim; i++)
270 for (
unsigned int i=0; i<_dim; i++)
277 virtual void operator() (
const libMesh::Point& p,
282 const libMesh::Point& p,
290 std::vector<const MAST::FieldFunction<Real>*>
_k;
314 virtual void operator() (
const libMesh::Point& p,
319 const libMesh::Point& p,
357 m = RealMatrixX::Zero(2,2);
359 _E(p, t, E);
_nu(p, t, nu);
369 const libMesh::Point &p,
375 m = RealMatrixX::Zero(2,2); dm = RealMatrixX::Zero(2,2);
376 Real E, nu, dEdf, dnudf;
382 dm(1,1) = 1./2./(1.+nu);
388 dm(1,1) = -E/2./pow(1.+nu,2);
414 m = RealMatrixX::Zero(2,2);
415 Real E, nu, kappa, G;
427 const libMesh::Point& p,
431 m = RealMatrixX::Zero(2,2); dm = RealMatrixX::Zero(2, 2);
432 Real E, nu, kappa, dEdf, dnudf, dkappadf, G;
440 dm(0,0) = 1./2./(1.+nu)*kappa;
446 dm(0,0) = -E/2./pow(1.+nu,2)*kappa;
452 dm(0,0) = G; dm(1,1) = G;
470 _plane_stress(plane_stress)
487 m = RealMatrixX::Zero(3,3);
488 Real E11, E22, nu12, nu21, G12, D;
493 nu21 = nu12 * E22/E11;
494 D = (1. - nu12*nu21);
502 m.topLeftCorner(2, 2) /= D;
513 const libMesh::Point& p,
518 m = RealMatrixX::Zero(3,3); dm = RealMatrixX::Zero(3, 3);
519 Real E11, E22, nu12, nu21, dE11df, dE22df, dnu12df, dnu21df, D, dDdf, dG12df;
525 nu21 = nu12 * E22/E11;
526 dnu21df = dnu12df * E22/E11 + nu12 * dE22df/E11 - nu12 * E22/E11/E11*dE11df;
527 D = (1. - nu12*nu21);
528 dDdf = (- dnu12df*nu21 - nu12*dnu21df);
536 m.topLeftCorner(2, 2) *= -dDdf/D/D;
540 dm(0,1) = nu21*dE11df + dnu21df*E11;
542 dm(1,0) = nu12*dE22df + dnu12df*E22;
545 m.topLeftCorner(2, 2) += dm.topLeftCorner(3, 3)/D;
591 m = RealMatrixX::Zero(6,6);
592 Real E11, E22, E33, G12, G13, G23, nu12, nu13, nu23, nu21, nu31, nu32, D;
602 nu21 = nu12 * E22/E11;
603 nu31 = nu13 * E33/E11;
604 nu32 = nu23 * E33/E22;
605 D = 1.- nu12*nu21 - nu13*nu31 - nu23*nu32 - nu12*nu23*nu31 - nu13*nu21*nu32;
608 m(0,0) = ( 1. - nu23*nu32)*E11;
609 m(0,1) = (nu21 + nu23*nu31)*E11;
610 m(0,2) = (nu31 + nu21*nu32)*E11;
612 m(1,0) = (nu12 + nu13*nu32)*E22;
613 m(1,1) = ( 1. - nu13*nu31)*E22;
614 m(1,2) = (nu32 + nu12*nu31)*E22;
616 m(2,0) = (nu13 + nu12*nu23)*E33;
617 m(2,1) = (nu23 + nu13*nu21)*E33;
618 m(2,2) = ( 1. - nu12*nu21)*E33;
620 m.topLeftCorner(3, 3) /= D;
632 const libMesh::Point& p,
636 m = RealMatrixX::Zero(6,6); dm = RealMatrixX::Zero(6,6);
660 nu21 = nu12 * E22/E11;
661 dnu21df = dnu12df * E22/E11 + nu12 * dE22df/E11 - nu12 * E22/E11/E11*dE11df;
662 nu31 = nu13 * E33/E11;
663 dnu31df = dnu13df * E33/E11 + nu13 * dE33df/E11 - nu13 * E33/E11/E11*dE11df;
664 nu32 = nu23 * E33/E22;
665 dnu32df = dnu23df * E33/E22 + nu23 * dE33df/E22 - nu23 * E33/E22/E22*dE22df;
666 D = 1.- nu12*nu21 - nu13*nu31 - nu23*nu32 - nu12*nu23*nu31 - nu13*nu21*nu32;
668 - dnu12df*nu21 - nu12*dnu21df
669 - dnu13df*nu31 - nu13*dnu31df
670 - dnu23df*nu32 - nu23*dnu32df
678 m(0,0) = ( 1. - nu23*nu32)*E11;
679 m(0,1) = (nu21 + nu23*nu31)*E11;
680 m(0,2) = (nu31 + nu21*nu32)*E11;
682 m(1,0) = (nu12 + nu13*nu32)*E22;
683 m(1,1) = ( 1. - nu13*nu31)*E22;
684 m(1,2) = (nu32 + nu12*nu31)*E22;
686 m(2,0) = (nu13 + nu12*nu23)*E33;
687 m(2,1) = (nu23 + nu13*nu21)*E33;
688 m(2,2) = ( 1. - nu12*nu21)*E33;
696 dm(0,0) = (- dnu23df*nu32 - nu23*dnu32df)*E11 + ( 1. - nu23*nu32)*dE11df;
697 dm(0,1) = (dnu21df + dnu23df*nu31 + nu23*dnu31df)*E11 + (nu21 + nu23*nu31)*dE11df;
698 dm(0,2) = (dnu31df + dnu21df*nu32 + nu21*dnu32df)*E11 + (nu31 + nu21*nu32)*dE11df;
700 dm(1,0) = (dnu12df + dnu13df*nu32 + nu13*dnu32df)*E22 + (nu12 + nu13*nu32)*dE22df;
701 dm(1,1) = (- dnu13df*nu31 - nu13*dnu31df)*E22 + ( 1. - nu13*nu31)*dE22df;
702 dm(1,2) = (dnu32df + dnu12df*nu31 + nu12*dnu31df)*E22 + (nu32 + nu12*nu31)*dE22df;
704 dm(2,0) = (dnu13df + dnu12df*nu23 + nu12*dnu23df)*E33 + (nu13 + nu12*nu23)*dE33df;
705 dm(2,1) = (dnu23df + dnu13df*nu21 + nu13*dnu21df)*E33 + (nu23 + nu13*nu21)*dE33df;
706 dm(2,2) = (- dnu12df*nu21 - nu12*dnu21df)*E33 + ( 1. - nu12*nu21)*dE33df;
728 m = RealMatrixX::Zero(3,3);
741 const libMesh::Point &p,
746 m = RealMatrixX::Zero(3,3);
777 for (
unsigned int i=0; i<_dim; i++) {
778 (*_alpha[i]) (p, t, alpha);
790 const libMesh::Point& p,
811 for (
unsigned int i=0; i<_dim; i++) {
812 _alpha[i]->derivative( f, p, t, alpha);
843 const libMesh::Point& p,
848 Real cp, dcp, rho, drho;
849 _cp (p, t, cp); _cp.derivative( f, p, t, dcp);
854 m(0,0) = dcp*rho + cp*drho;
867 m.setZero(_dim, _dim);
868 for (
unsigned int i=0; i<_dim; i++) {
882 const libMesh::Point& p,
887 m.setZero(_dim, _dim);
888 for (
unsigned int i=0; i<_dim; i++) {
889 _k[i]->derivative( f, p, t, k);
898 _stiff_mat_1d (nullptr),
899 _stiff_mat_2d (nullptr),
900 _stiff_mat_3d (nullptr),
902 _inertia_mat_3d (nullptr),
903 _thermal_exp_mat_1d (nullptr),
904 _thermal_exp_mat_2d (nullptr),
905 _thermal_exp_mat_3d (nullptr),
906 _transverse_shear_mat (nullptr),
907 _thermal_capacitance_mat_1d (nullptr),
908 _thermal_capacitance_mat_2d (nullptr),
909 _thermal_capacitance_mat_3d (nullptr),
910 _thermal_conductance_mat_1d (nullptr),
911 _thermal_conductance_mat_2d (nullptr),
912 _thermal_conductance_mat_3d (nullptr)
943 const bool plane_stress) {
1003 libmesh_assert(
false);
MAST::FieldFunction< RealMatrixX > * _thermal_exp_mat_1d
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...
std::vector< const MAST::FieldFunction< Real > * > _alpha
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 ~ThermalExpansionMatrix()
virtual ~TransverseShearStiffnessMatrix()
const MAST::FieldFunction< Real > & _cp
ThermalExpansionMatrix(const MAST::FieldFunction< Real > &alpha11)
virtual const MAST::FieldFunction< RealMatrixX > & conductance_matrix(const unsigned int dim)
MAST::FieldFunction< RealMatrixX > * _thermal_exp_mat_3d
const MAST::FieldFunction< Real > & _rho
virtual ~InertiaMatrix3D()
MAST::FieldFunction< RealMatrixX > * _thermal_capacitance_mat_3d
virtual const MAST::FieldFunction< RealMatrixX > & damping_matrix(const unsigned int dim)
ThermalExpansionMatrix(const MAST::FieldFunction< Real > &alpha11, const MAST::FieldFunction< Real > &alpha22, const MAST::FieldFunction< Real > &alpha33)
StiffnessMatrix2D(const MAST::FieldFunction< Real > &E11, const MAST::FieldFunction< Real > &E22, const MAST::FieldFunction< Real > &nu12, const MAST::FieldFunction< Real > &G12, bool plane_stress)
virtual ~ThermalConductanceMatrix()
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 > & _nu13
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...
ThermalExpansionMatrix(const MAST::FieldFunction< Real > &alpha11, const MAST::FieldFunction< Real > &alpha22)
const MAST::FieldFunction< Real > & _G12
virtual const MAST::FieldFunction< RealMatrixX > & thermal_expansion_matrix(const unsigned int dim)
ThermalCapacitanceMatrix(unsigned int dim, const MAST::FieldFunction< Real > &rho, const MAST::FieldFunction< Real > &cp)
std::set< const MAST::FunctionBase * > _functions
set of functions that this function depends on
const MAST::FieldFunction< Real > & _E
const MAST::FieldFunction< Real > & _rho
virtual const MAST::FieldFunction< RealMatrixX > & inertia_matrix(const unsigned int dim)
MAST::FieldFunction< RealMatrixX > * _thermal_exp_mat_2d
ThermalConductanceMatrix(const MAST::FieldFunction< Real > &k11, const MAST::FieldFunction< Real > &k22)
virtual ~ThermalCapacitanceMatrix()
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...
MAST::FieldFunction< RealMatrixX > * _thermal_capacitance_mat_1d
virtual const MAST::FieldFunction< RealMatrixX > & stiffness_matrix(const unsigned int dim, const bool plane_stress=true)
TransverseShearStiffnessMatrix(const MAST::FieldFunction< Real > &E, const MAST::FieldFunction< Real > &nu, const MAST::FieldFunction< Real > &kappa)
InertiaMatrix3D(const MAST::FieldFunction< Real > &rho)
MAST::FieldFunction< RealMatrixX > * _thermal_conductance_mat_3d
StiffnessMatrix3D(const MAST::FieldFunction< Real > &E11, const MAST::FieldFunction< Real > &E22, const MAST::FieldFunction< Real > &E33, const MAST::FieldFunction< Real > &nu12, const MAST::FieldFunction< Real > &nu13, const MAST::FieldFunction< Real > &nu23, const MAST::FieldFunction< Real > &G12, const MAST::FieldFunction< Real > &G13, const MAST::FieldFunction< Real > &G23)
const MAST::FieldFunction< Real > & _G12
MAST::FieldFunction< RealMatrixX > * _thermal_capacitance_mat_2d
virtual void derivative(const MAST::FunctionBase &f, ValType &v) const
calculates the value of the function derivative and returns it in v.
const MAST::FieldFunction< Real > & _E11
const MAST::FieldFunction< Real > & _nu
const MAST::FieldFunction< Real > & _nu
MAST::FieldFunction< RealMatrixX > * _transverse_shear_mat
const MAST::FieldFunction< Real > & _G23
Matrix< Real, Dynamic, Dynamic > RealMatrixX
virtual ~OrthotropicMaterialPropertyCard()
const MAST::FieldFunction< Real > & _G13
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.
const MAST::FieldFunction< Real > & _nu12
MAST::FieldFunction< RealMatrixX > * _thermal_conductance_mat_1d
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...
OrthotropicMaterialPropertyCard()
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 > & _E
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 > & _E33
const MAST::FieldFunction< Real > & _nu23
virtual ~StiffnessMatrix2D()
virtual ~StiffnessMatrix1D()
const MAST::FieldFunction< Real > & _E11
virtual const MAST::FieldFunction< RealMatrixX > & capacitance_matrix(const unsigned int dim)
ThermalConductanceMatrix(const MAST::FieldFunction< Real > &k11, const MAST::FieldFunction< Real > &k22, const MAST::FieldFunction< Real > &k33)
ThermalConductanceMatrix(const MAST::FieldFunction< Real > &k11)
MAST::FieldFunction< RealMatrixX > * _inertia_mat_3d
MAST::FieldFunction< RealMatrixX > * _thermal_conductance_mat_2d
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 > & _E22
StiffnessMatrix1D(const MAST::FieldFunction< Real > &E, const MAST::FieldFunction< Real > &nu)
const MAST::FieldFunction< Real > & _nu12
virtual const MAST::FieldFunction< RealMatrixX > & transverse_shear_stiffness_matrix()
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...
std::vector< const MAST::FieldFunction< Real > * > _k
MAST::FieldFunction< RealMatrixX > * _stiff_mat_2d
virtual ~StiffnessMatrix3D()
MAST::FieldFunction< RealMatrixX > * _damp_mat
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...
MAST::FieldFunction< RealMatrixX > * _stiff_mat_1d
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 > & _kappa
const MAST::FieldFunction< Real > & _E22
MAST::FieldFunction< RealMatrixX > * _stiff_mat_3d
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...