27 namespace IsotropicMaterialProperty {
39 virtual void operator() (
const libMesh::Point& p,
44 const libMesh::Point& p,
64 virtual void operator() (
const libMesh::Point& p,
69 const libMesh::Point& p,
90 virtual void operator() (
const libMesh::Point& p,
95 const libMesh::Point& p,
115 virtual void operator() (
const libMesh::Point& p,
120 const libMesh::Point& p,
139 virtual void operator() (
const libMesh::Point& p,
144 const libMesh::Point& p,
170 virtual void operator() (
const libMesh::Point& p,
175 const libMesh::Point& p,
204 virtual void operator() (
const libMesh::Point& p,
209 const libMesh::Point& p,
241 virtual void operator() (
const libMesh::Point& p,
246 const libMesh::Point& p,
284 m = RealMatrixX::Zero(2,2);
286 _E(p, t, E);
_nu(p, t, nu);
296 const libMesh::Point &p,
302 m = RealMatrixX::Zero(2,2); dm = RealMatrixX::Zero(2,2);
303 Real E, nu, dEdf, dnudf;
309 dm(1,1) = 1./2./(1.+nu);
315 dm(1,1) = -E/2./pow(1.+nu,2);
339 m = RealMatrixX::Zero(2,2);
341 _E(p, t, E);
_nu(p, t, nu);
352 const libMesh::Point& p,
356 m = RealMatrixX::Zero(2,2); dm = RealMatrixX::Zero(2, 2);
357 Real E, nu, dEdf, dnudf, G, dG;
361 dG = (1./2./(1.+nu) * dEdf) + (-E/2./pow(1.+nu,2) * dnudf);
363 dm(0,0) = dm(1,1) = dG;
386 _plane_stress(plane_stress) {
401 m = RealMatrixX::Zero(3,3);
403 _E(p, t, E);
_nu(p, t, nu);
406 for (
unsigned int i=0; i<2; i++) {
407 for (
unsigned int j=0; j<2; j++)
409 m(i,i) = E/(1.-nu*nu);
411 m(i,j) = E*nu/(1.-nu*nu);
413 m(2,2) = E/2./(1.+nu);
417 for (
unsigned int i=0; i<2; i++) {
418 for (
unsigned int j=0; j<2; j++)
420 m(i,i) = E*(1.-nu)/((1.+nu)*(1.-2.*nu));
422 m(i,j) = E*nu/((1.+nu)*(1.-2.*nu));
424 m(2,2) = E/2./(1.+nu);
434 const libMesh::Point& p,
439 m = RealMatrixX::Zero(3,3); dm = RealMatrixX::Zero(3, 3);
440 Real E, nu, dEdf, dnudf;
447 for (
unsigned int i=0; i<2; i++) {
448 for (
unsigned int j=0; j<2; j++)
450 dm(i,i) = 1./(1.-nu*nu);
452 dm(i,j) = 1.*nu/(1.-nu*nu);
454 dm(2,2) = 1./2./(1.+nu);
458 for (
unsigned int i=0; i<2; i++) {
459 for (
unsigned int j=0; j<2; j++)
461 dm(i,i) = E/pow(1.-nu*nu, 2)*2.*nu;
463 dm(i,j) = E/(1.-nu*nu) + E*nu/pow(1.-nu*nu,2)*2.*nu;
465 dm(2,2) = -E/2./pow(1.+nu,2);
471 for (
unsigned int i=0; i<2; i++) {
472 for (
unsigned int j=0; j<2; j++)
474 dm(i,i) = 1.*(1.-nu)/((1.+nu)*(1.-2.*nu));
476 dm(i,j) = 1.*nu/((1.+nu)*(1.-2.*nu));
478 dm(2,2) = 1./2./(1.+nu);
483 for (
unsigned int i=0; i<2; i++) {
484 for (
unsigned int j=0; j<2; j++)
486 dm(i,i) = E*2.*nu*(2.-nu)/pow(2.*nu*nu+nu-1., 2);
488 dm(i,j) = (2.*nu*nu*E+E)/pow(2*nu*nu+nu-1., 2);
490 dm(2,2) = -E/2./pow(1.+nu, 2);
517 m = RealMatrixX::Zero(6,6);
519 _E(p, t, E);
_nu(p, t, nu);
520 for (
unsigned int i=0; i<3; i++) {
521 for (
unsigned int j=0; j<3; j++)
523 m(i,i) = E*(1.-nu)/(1.-nu-2.*nu*nu);
525 m(i,j) = E*nu/(1.-nu-2.*nu*nu);
526 m(i+3,i+3) = E/2./(1.+nu);
536 const libMesh::Point& p,
540 m = RealMatrixX::Zero(6,6); dm = RealMatrixX::Zero(6,6);
541 Real E, nu, dEdf, dnudf;
546 for (
unsigned int i=0; i<3; i++) {
547 for (
unsigned int j=0; j<3; j++)
549 dm(i,i) = (1.-nu)/(1.-nu-2.*nu*nu);
551 dm(i,j) = nu/(1.-nu-2.*nu*nu);
552 dm(i+3,i+3) = 1./2./(1.+nu);
558 for (
unsigned int i=0; i<3; i++) {
559 for (
unsigned int j=0; j<3; j++)
561 dm(i,i) = -E/(1.-nu-2.*nu*nu) + E*(1.-nu)/pow(1.-nu-2.*nu*nu,2)*(1.+4.*nu);
563 dm(i,j) = E/(1.-nu-2.*nu*nu) + E*nu/pow(1.-nu-2.*nu*nu,2)*(1.+4.*nu);
564 dm(i+3,i+3) = -E/2./pow(1.+nu,2);
585 m = RealMatrixX::Zero(3,3);
598 const libMesh::Point &p,
603 m = RealMatrixX::Zero(3,3);
623 m = RealMatrixX::Zero(2,1);
627 m = RealMatrixX::Zero(3,1);
631 m = RealMatrixX::Zero(6,1);
635 for (
unsigned int i=0; i<_dim; i++)
646 const libMesh::Point& p,
652 _alpha.derivative( f, p, t, alpha);
655 m = RealMatrixX::Zero(2,1);
659 m = RealMatrixX::Zero(3,1);
663 m = RealMatrixX::Zero(6,1);
667 for (
unsigned int i=0; i<_dim; i++)
698 const libMesh::Point& p,
703 Real cp, dcp, rho, drho;
704 _cp (p, t, cp); _cp.derivative( f, p, t, dcp);
709 m(0,0) = dcp*rho + cp*drho;
724 m.setIdentity(_dim, _dim);
736 const libMesh::Point& p,
742 _k.derivative( f, p, t, k);
744 m.setIdentity(_dim, _dim);
755 _stiff_mat_1d (nullptr),
756 _stiff_mat_2d (nullptr),
757 _stiff_mat_3d (nullptr),
759 _inertia_mat_3d (nullptr),
760 _thermal_exp_mat_1d (nullptr),
761 _thermal_exp_mat_2d (nullptr),
762 _thermal_exp_mat_3d (nullptr),
763 _transverse_shear_mat (nullptr),
764 _thermal_capacitance_mat_1d (nullptr),
765 _thermal_capacitance_mat_2d (nullptr),
766 _thermal_capacitance_mat_3d (nullptr),
767 _thermal_conductance_mat_1d (nullptr),
768 _thermal_conductance_mat_2d (nullptr),
769 _thermal_conductance_mat_3d (nullptr)
799 const bool plane_stress) {
839 libmesh_error_msg(
"Should not get here; " << __PRETTY_FUNCTION__ <<
" in " << __FILE__ <<
" at line number " << __LINE__);
850 libmesh_assert(
false);
877 libmesh_error_msg(
"Implemented only for 3D since the 2D and 1D elements calculate it themselves; " << __PRETTY_FUNCTION__ <<
" in " << __FILE__ <<
" at line number " << __LINE__);
928 libmesh_error_msg(
"Should not get here; " << __PRETTY_FUNCTION__ <<
" in " << __FILE__ <<
" at line number " << __LINE__);
1000 libmesh_error_msg(
"Should not get here; " << __PRETTY_FUNCTION__ <<
" in " << __FILE__ <<
" at line number " << __LINE__);
1051 libmesh_error_msg(
"Should not get here; " << __PRETTY_FUNCTION__ <<
" in " << __FILE__ <<
" at line number " << __LINE__);
const MAST::FieldFunction< Real > & _rho
MAST::FieldFunction< RealMatrixX > * _thermal_conductance_mat_3d
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< Real > & _nu
virtual ~StiffnessMatrix1D()
virtual ~InertiaMatrix3D()
virtual ~ThermalExpansionMatrix()
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 const MAST::FieldFunction< RealMatrixX > & inertia_matrix(const unsigned int dim)
const MAST::FieldFunction< Real > & _E
StiffnessMatrix3D(const MAST::FieldFunction< Real > &E, const MAST::FieldFunction< Real > &nu)
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 ~TransverseShearStiffnessMatrix()
const MAST::FieldFunction< Real > & _E
MAST::FieldFunction< RealMatrixX > * _thermal_exp_mat_3d
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)
virtual ~IsotropicMaterialPropertyCard()
std::set< const MAST::FunctionBase * > _functions
set of functions that this function depends on
StiffnessMatrix1D(const MAST::FieldFunction< Real > &E, const MAST::FieldFunction< Real > &nu)
const MAST::FieldFunction< Real > & _cp
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 > & _k
ThermalConductanceMatrix(unsigned int dim, MAST::FieldFunction< Real > &k)
const MAST::FieldFunction< Real > & _E
TransverseShearStiffnessMatrix(const MAST::FieldFunction< Real > &E, const MAST::FieldFunction< Real > &nu)
MAST::FieldFunction< RealMatrixX > * _inertia_mat_3d
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 > & _nu
MAST::FieldFunction< RealMatrixX > * _damp_mat
Matrix< Real, Dynamic, Dynamic > RealMatrixX
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...
MAST::FieldFunction< RealMatrixX > * _transverse_shear_mat
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 > & _rho
virtual ~ThermalConductanceMatrix()
StiffnessMatrix2D(const MAST::FieldFunction< Real > &E, const MAST::FieldFunction< Real > &nu, bool plane_stress)
virtual const MAST::FieldFunction< RealMatrixX > & damping_matrix(const unsigned int dim)
virtual const MAST::FieldFunction< RealMatrixX > & conductance_matrix(const unsigned int dim)
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 > & _nu
virtual ~ThermalCapacitanceMatrix()
virtual const MAST::FieldFunction< RealMatrixX > & capacitance_matrix(const unsigned int dim)
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...
InertiaMatrix3D(const MAST::FieldFunction< Real > &rho)
const MAST::FieldFunction< Real > & _alpha
MAST::FieldFunction< RealMatrixX > * _thermal_exp_mat_1d
virtual const MAST::FieldFunction< RealMatrixX > & stiffness_matrix(const unsigned int dim, const bool plane_stress=true)
MAST::FieldFunction< RealMatrixX > * _stiff_mat_2d
const MAST::FieldFunction< Real > & _nu
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 ~StiffnessMatrix3D()
const MAST::FieldFunction< Real > & _E
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_3d
IsotropicMaterialPropertyCard()
virtual ~StiffnessMatrix2D()
MAST::FieldFunction< RealMatrixX > * _stiff_mat_3d
MAST::FieldFunction< RealMatrixX > * _thermal_conductance_mat_1d
ThermalExpansionMatrix(unsigned int dim, const MAST::FieldFunction< Real > &alpha)
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< RealMatrixX > & transverse_shear_stiffness_matrix()
MAST::FieldFunction< RealMatrixX > * _thermal_exp_mat_2d
MAST::FieldFunction< RealMatrixX > * _thermal_capacitance_mat_1d
MAST::FieldFunction< RealMatrixX > * _thermal_capacitance_mat_2d
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...
MAST::FieldFunction< RealMatrixX > * _thermal_conductance_mat_2d
MAST::FieldFunction< RealMatrixX > * _stiff_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...