41 template<
template<
typename>
class DerivedPhysics>
43 const std::string& physics_name )
45 std::string core_physics = this->find_core_physics_name(physics_name);
47 std::string model =
"none";
48 std::string strain_energy =
"none";
55 libMesh::UniquePtr<Physics> new_physics;
57 if( model == std::string(
"hookes_law") )
58 new_physics.reset(
new DerivedPhysics<HookesLaw>
59 (physics_name,input,
false ) );
61 else if( model == std::string(
"incompressible_hyperelasticity") )
63 if( strain_energy == std::string(
"mooney_rivlin") )
69 std::string error =
"ERROR: Invalid strain_energy "+strain_energy+
"!\n";
70 error +=
" Valid values are: mooney_rivlin\n";
71 libmesh_error_msg(error);
77 std::string error =
"Error: Invalid stress-strain model: "+model+
"!\n";
78 error +=
" Valid values are: hookes_law\n";
79 error +=
" incompressible_hyperelasticity\n";
80 libmesh_error_msg(error);
83 libmesh_assert(new_physics);
static PhysicsName elastic_membrane()
virtual libMesh::UniquePtr< Physics > build_physics(const GetPot &input, const std::string &physics_name)
PhysicsFactoryPlaneStressSolids< ElasticMembraneRayleighDamping > grins_factory_elastic_membrane_rayleigh_damping(PhysicsNaming::elastic_membrane_rayleigh_damping(), PhysicsNaming::elastic_membrane())
PhysicsFactoryPlaneStressSolids< ElasticMembrane > grins_factory_elastic_membrane(PhysicsNaming::elastic_membrane(), PhysicsNaming::elastic_membrane())
static void parse_stress_strain_model(const GetPot &input, const std::string &physics, std::string &model, std::string &strain_energy)
Determine stress-strain law used by solid mechanics classes.
static PhysicsName elastic_membrane_rayleigh_damping()