https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ShiftedCohesiveZoneAction Class Reference

Action class for the Shifted Cohesive Zone Method (SCZM). More...

#include <ShiftedCohesiveZoneAction.h>

Inheritance diagram for ShiftedCohesiveZoneAction:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 ShiftedCohesiveZoneAction (const InputParameters &params)
 
virtual void act () override
 Main execution point for the Action.
 
virtual void addRelationshipManagers (Moose::RelationshipManagerType input_rm_type) override
 
virtual void addRelationshipManagers (Moose::RelationshipManagerType when_type)
 Method adding the proper relationship manager.
 
bool addRelationshipManagers (Moose::RelationshipManagerType when_type, const InputParameters &moose_object_pars)
 Method adding the proper relationship manager.
 
void timedAct ()
 
MooseObjectName uniqueActionName () const
 
const std::string & specificTaskName () const
 
const std::set< std::string > & getAllTasks () const
 
void appendTask (const std::string &task)
 
MooseApp & getMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParameters & parameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
PerfGraph & perfGraph ()
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 
static MultiMooseEnum outputPropertiesType ()
 output methods
 
static MultiMooseEnum materialOutputOrders ()
 
static MultiMooseEnum materialOutputFamilies ()
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const std::string unique_action_name_param
 
static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 
static constexpr auto SYSTEM
 
static constexpr auto NAME
 
static const std::map< std::string, std::string > _real_vector_cartesian_component_table
 table data for output generation
 
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _vector_direction_table
 
static const std::vector< char > _component_table = {'x', 'y', 'z'}
 

Protected Types

enum class  Strain { Small , Finite }
 strain formulation More...
 

Protected Member Functions

void addSBMDistanceFunctions ()
 Adds the surface distance functions used by the generated distance user object.
 
void addSBMDistanceUserObjects ()
 Adds the generated surface geometry and aggregate boundary distance user objects.
 
std::vector< MeshGeneratorName > surfaceMeshNames () const
 Returns the saved surface mesh names, defaulting to the boundary names.
 
UserObjectName surfaceMeshBuilderName (const BoundaryName &boundary) const
 Returns the generated builder name for a boundary.
 
FunctionName surfaceDistanceFunctionName (const BoundaryName &boundary) const
 Returns the generated distance function name for a boundary.
 
UserObjectName sbmDistanceUserObjectName () const
 Returns the generated aggregate distance user object name.
 
UserObjectName interfaceManagerName () const
 Returns the generated single-mesh interface manager name.
 
void customizeCZMInterfaceKernelParameters (InputParameters &params) const override
 Sets SCZM-specific parameters on each generated interface kernel.
 
void customizeCZMDisplacementJumpMaterialParameters (InputParameters &params) const override
 Sets SCZM-specific parameters on the generated displacement jump material.
 
void actOutputGeneration ()
 
void actOutputMatProp ()
 
void addRequiredCZMInterfaceKernels ()
 adds the required interfacekernels based on the selected strain formulation
 
void addRequiredCZMInterfaceMaterials ()
 adds the required interface materials based on the selected strain formulation
 
void verifyOrderAndFamilyOutputs ()
 verifies order and family of output variables
 
void prepareSaveInInputs (std::vector< AuxVariableName > &, std::string &, const std::vector< AuxVariableName > &, const std::vector< AuxVariableName > &, const int &) const
 method to prepare save_in and diag_save_in inputs for the interface kernel
 
void chekMultipleActionParameters ()
 method checking multiple CohesiveZoneAction block inputs
 
template<typename T , typename T2 >
bool setupOutput (std::string out, T table, T2 setup)
 
std::string addBaseName (const std::string &name) const
 simple method for adding the base name to a variable
 
void associateWithParameter (const std::string &param_name, InputParameters &params) const
 
void associateWithParameter (const InputParameters &from_params, const std::string &param_name, InputParameters &params) const
 
const T & getMeshProperty (const std::string &data_name, const std::string &prefix)
 
const T & getMeshProperty (const std::string &data_name)
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name, const std::string &prefix) const
 
bool hasMeshProperty (const std::string &data_name) const
 
bool hasMeshProperty (const std::string &data_name) const
 
std::string meshPropertyName (const std::string &data_name) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level) const
 
PerfID registerTimedSection (const std::string &section_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const
 
std::string timedSectionName (const std::string &section_name) const
 
void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 

Static Protected Member Functions

static std::string meshPropertyName (const std::string &data_name, const std::string &prefix)
 

Protected Attributes

std::vector< VariableName > _displacements
 the disaplcements varaible names
 
const unsigned int _ndisp
 number of displacement components
 
const bool _use_AD
 whether to use AD kernels and materials
 
const std::string _base_name
 Base name of the material system.
 
const std::vector< BoundaryName > _boundary
 Base name of the material system.
 
enum CohesiveZoneAction::Strain _strain
 
std::vector< std::string > _generate_output
 output materials to generate scalar traction/jump vector quantities
 
MultiMooseEnum _material_output_order
 
MultiMooseEnum _material_output_family
 
std::set< BoundaryName > _boundary_name_union
 set generated from the combined boundary restrictions of all CohesiveZoneAction action blocks
 
std::set< Strain > _strain_formulation_union
 set generated from the combined boundary restrictions of all CohesiveZoneAction action blocks
 
const bool _verbose
 display info
 
std::string _registered_identifier
 
std::string _specific_task_name
 
std::set< std::string > _all_tasks
 
ActionWarehouse & _awh
 
const std::string & _current_task
 
std::shared_ptr< MooseMesh > & _mesh
 
std::shared_ptr< MooseMesh > & _displaced_mesh
 
std::shared_ptr< FEProblemBase > & _problem
 
PerfID _act_timer
 
MooseApp & _app
 
Factory & _factory
 
ActionFactory & _action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters & _pars
 
MooseApp & _pg_moose_app
 
const std::string _prefix
 
const Parallel::Communicator & _communicator
 
std::vector< AuxVariableName > _save_in_primary
 residual debugging
 
std::vector< AuxVariableName > _diag_save_in_primary
 
std::vector< AuxVariableName > _save_in_secondary
 
std::vector< AuxVariableName > _diag_save_in_secondary
 
std::string _czm_kernel_name
 kernel's and materials's names
 
std::string _disp_jump_provider_name
 
std::string _equilibrium_traction_calculator_name
 

Private Member Functions

bool addRelationshipManager (Moose::RelationshipManagerType input_rm_type, const InputParameters &moose_object_pars, std::string rm_name, Moose::RelationshipManagerType rm_type, Moose::RelationshipManagerInputParameterCallback rm_input_parameter_func, Moose::RMSystemType sys_type=Moose::RMSystemType::NONE)
 
virtual std::string meshPropertyPrefix (const std::string &data_name) const
 
const RestartableDataValue & getMeshPropertyInternal (const std::string &data_name, const std::string &prefix) const
 
void mooseErrorInternal (Args &&... args) const
 

Static Private Member Functions

static const hit::Node * getHitNode (const InputParameters &params)
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 

Private Attributes

const ParallelParamObject & _parent
 
MooseApp & _meta_data_app
 
const MooseObject *const _meta_data_object
 
const MooseBase & _si_moose_base
 
const FEProblemBase * _si_problem
 

Detailed Description

Action class for the Shifted Cohesive Zone Method (SCZM).

Definition at line 21 of file ShiftedCohesiveZoneAction.h.

Member Enumeration Documentation

◆ Strain

enum class CohesiveZoneAction::Strain
strongprotectedinherited

strain formulation

Enumerator
Small 
Finite 

Definition at line 74 of file CohesiveZoneAction.h.

75 {
76 Small,
77 Finite
78 } _strain;
enum CohesiveZoneAction::Strain _strain

Constructor & Destructor Documentation

◆ ShiftedCohesiveZoneAction()

ShiftedCohesiveZoneAction::ShiftedCohesiveZoneAction ( const InputParameters &  params)

Definition at line 159 of file ShiftedCohesiveZoneAction.C.

160 : CohesiveZoneAction(params)
161{
162 const bool generate_distance = getParam<bool>("generate_sbm_distance");
163 const bool has_distance_uo = isParamSetByUser("sbm_distance_uo");
164 const bool has_complete_interface_mesh = isParamSetByUser("complete_interface_mesh");
165 if (static_cast<unsigned int>(generate_distance) + static_cast<unsigned int>(has_distance_uo) +
166 static_cast<unsigned int>(has_complete_interface_mesh) >
167 1)
168 paramError("sbm_distance_uo",
169 "Specify only one of 'sbm_distance_uo', 'generate_sbm_distance', and "
170 "'complete_interface_mesh'.");
171
172 if (!generate_distance && isParamSetByUser("surface_meshes"))
173 paramError("surface_meshes", "This parameter is only valid with 'generate_sbm_distance=true'.");
174 if (!generate_distance && isParamSetByUser("check_surface_watertightness"))
175 paramError("check_surface_watertightness",
176 "This parameter is only valid with 'generate_sbm_distance=true'.");
177 if (!has_complete_interface_mesh && isParamSetByUser("interface_matching_tolerance"))
178 paramError("interface_matching_tolerance",
179 "This parameter is only valid with 'complete_interface_mesh'.");
180
181 if (generate_distance)
182 {
183 const auto surface_meshes = surfaceMeshNames();
184 if (surface_meshes.size() != _boundary.size())
185 paramError("surface_meshes", "The number of surface meshes must match the boundaries.");
186 if (std::set<MeshGeneratorName>(surface_meshes.begin(), surface_meshes.end()).size() !=
187 surface_meshes.size())
188 paramError("surface_meshes", "Each saved surface mesh may only be used once.");
189 }
190
191 if (!has_complete_interface_mesh && isParamSetByUser("interface_subdomain_pairs"))
192 paramError("interface_subdomain_pairs",
193 "This parameter is only valid with 'complete_interface_mesh'.");
194 if (has_complete_interface_mesh && isParamSetByUser("interface_subdomain_pairs") &&
195 getParam<std::vector<std::vector<SubdomainID>>>("interface_subdomain_pairs").size() !=
196 _boundary.size())
197 paramError("interface_subdomain_pairs", "Provide exactly one subdomain pair per boundary.");
198
199 if (_use_AD && isParamSetByUser("tangent"))
200 paramError("tangent", "This parameter applies only to the non-AD SCZM interface kernel.");
201 if (_use_AD && isParamSetByUser("tangent_definition"))
202 paramError("tangent_definition",
203 "This parameter applies only to the non-AD SCZM interface kernel. The AD kernel "
204 "differentiates the residual automatically.");
205
206 switch (_strain)
207 {
208 case Strain::Small:
209 {
211 _use_AD ? "ADSCZMInterfaceKernelSmallStrain" : "SCZMInterfaceKernelSmallStrain";
212 // For SCZM, we just need to evaulate the displacement jump correctly on the true interface.
213 // After that, the local and global traction calculations remain the same as standard CZM.
214 _disp_jump_provider_name = _use_AD ? "ADSCZMComputeDisplacementJumpSmallStrain"
215 : "SCZMComputeDisplacementJumpSmallStrain";
217 _use_AD ? "ADCZMComputeGlobalTractionSmallStrain" : "CZMComputeGlobalTractionSmallStrain";
218 break;
219 }
220 case Strain::Finite:
221 paramError("strain", "Shifted cohesive zone models currently support only small strain.");
222 default:
224 "ShiftedCohesiveZoneAction Error: Invalid kinematic parameter. Allowed values are: "
225 "SmallStrain or TotalLagrangian");
226 }
227}
const bool _use_AD
whether to use AD kernels and materials
std::string _equilibrium_traction_calculator_name
std::string _disp_jump_provider_name
std::string _czm_kernel_name
kernel's and materials's names
const std::vector< BoundaryName > _boundary
Base name of the material system.
void paramError(const std::string &param, Args... args) const
bool isParamSetByUser(const std::string &name) const
void mooseError(Args &&... args) const
const T & getParam(const std::string &name) const
std::vector< MeshGeneratorName > surfaceMeshNames() const
Returns the saved surface mesh names, defaulting to the boundary names.

Member Function Documentation

◆ act()

void ShiftedCohesiveZoneAction::act ( )
overridevirtual

Main execution point for the Action.

Overridden to intercept tasks related to kernel and material addition.

Reimplemented from CohesiveZoneAction.

Definition at line 230 of file ShiftedCohesiveZoneAction.C.

231{
232 // Consistency check: ndisp must match mesh dimension
233 if (_ndisp != _mesh->dimension())
234 paramError("displacements", "Number of displacements must match problem dimension.");
235
236 if (_current_task == "add_interface_kernel" && getParam<bool>("directional_correction"))
237 {
238 std::vector<MaterialPropertyName> stress_names;
239 std::vector<MaterialPropertyName> tangent_names;
240
241 if (isParamSetByUser("stress"))
242 stress_names.push_back(getParam<MaterialPropertyName>("stress"));
243 else if (_strain == Strain::Finite)
244 stress_names.push_back("pk1_stress");
245 else
246 {
247 // Mirror SCZMInterfaceKernelSmallStrain, which prefers stress/Jacobian_mult but falls back
248 // to pk1_stress/pk1_jacobian for Lagrangian-compatible small-strain materials.
249 stress_names.push_back("stress");
250 stress_names.push_back("pk1_stress");
251 }
252
253 if (isParamSetByUser("tangent"))
254 tangent_names.push_back(getParam<MaterialPropertyName>("tangent"));
255 else if (_strain == Strain::Finite)
256 tangent_names.push_back("pk1_jacobian");
257 else
258 {
259 tangent_names.push_back("Jacobian_mult");
260 tangent_names.push_back("pk1_jacobian");
261 }
262
263 std::vector<MaterialPropertyName> validated_neml2_properties;
264
265 const auto validate_neml2_interface =
266 [this, &validated_neml2_properties](const MaterialPropertyName & property_name)
267 {
268 const auto neml2_property_name = resolveTransferredProperty(_awh, property_name);
269
270 if (std::find(validated_neml2_properties.begin(),
271 validated_neml2_properties.end(),
272 neml2_property_name) != validated_neml2_properties.end())
273 return;
274
275 validated_neml2_properties.push_back(neml2_property_name);
276
277 for (const auto * const neml2_action : _awh.getActions<NEML2Action>())
278 {
279 if (!producesProperty(*neml2_action, neml2_property_name))
280 continue;
281
282 const bool interface_set = neml2_action->isParamSetByUser("interface");
283 const auto & interfaces = neml2_action->getParam<std::vector<BoundaryName>>("interface");
284
285 if (!interface_set || interfaces.empty())
286 neml2_action->paramError(
287 "interface",
288 "This NEML2 block provides the material property '",
289 neml2_property_name,
290 "' used by [Physics/SolidMechanics/ShiftedCohesiveZone] with "
291 "directional_correction = true. Set 'interface' to the SCZM boundary (for example, "
292 "interface = ${boundary}) or set "
293 "'directional_correction = false' in the ShiftedCohesiveZone block.");
294
295 if (!hasOverlap(_boundary, interfaces))
296 neml2_action->paramError(
297 "interface",
298 "This NEML2 block provides the material property '",
299 neml2_property_name,
300 "' used by "
301 "[Physics/SolidMechanics/ShiftedCohesiveZone] with directional_correction = true, "
302 "but "
303 "its 'interface' setting does not overlap the SCZM boundary. Make the NEML2 "
304 "'interface' include the SCZM boundary or set 'directional_correction = false'.");
305
306 return;
307 }
308 };
309
310 for (const auto & stress_name : stress_names)
311 validate_neml2_interface(stress_name);
312
313 for (const auto & tangent_name : tangent_names)
314 validate_neml2_interface(tangent_name);
315 }
316
317 // Call the base utility for parameter validation across multiple blocks
319
320 // Task Routing
321 if (_current_task == "add_function" && getParam<bool>("generate_sbm_distance"))
323 else if (_current_task == "add_user_object" &&
324 (getParam<bool>("generate_sbm_distance") || isParamSetByUser("complete_interface_mesh")))
326 else if (_current_task == "add_interface_kernel")
328 else if (_current_task == "add_master_action_material")
330
331 // optional, add required outputs
333}
std::shared_ptr< MooseMesh > & _mesh
const std::string & _current_task
ActionWarehouse & _awh
const unsigned int _ndisp
number of displacement components
void addRequiredCZMInterfaceMaterials()
adds the required interface materials based on the selected strain formulation
void chekMultipleActionParameters()
method checking multiple CohesiveZoneAction block inputs
void addRequiredCZMInterfaceKernels()
adds the required interfacekernels based on the selected strain formulation
void addSBMDistanceUserObjects()
Adds the generated surface geometry and aggregate boundary distance user objects.
void addSBMDistanceFunctions()
Adds the surface distance functions used by the generated distance user object.

◆ actOutputGeneration()

void CohesiveZoneAction::actOutputGeneration ( )
protectedinherited

Definition at line 276 of file CohesiveZoneAction.C.

277{
278 if (_current_task == "add_material")
280
281 // Add variables (optional)
282 if (_current_task == "add_aux_variable")
283 {
284 unsigned int index = 0;
285 for (auto out : _generate_output)
286 {
287 const auto & order = _material_output_order[index];
288 const auto & family = _material_output_family[index];
289
290 std::string type = (order == "CONSTANT" && family == "MONOMIAL")
291 ? "MooseVariableConstMonomial"
292 : "MooseVariable";
293
294 // Create output helper aux variables
295 auto params = _factory.getValidParams(type);
296 params.set<MooseEnum>("order") = order;
297 params.set<MooseEnum>("family") = family;
298 if (family == "MONOMIAL")
299 _problem->addAuxVariable(type, addBaseName(out), params);
300 else
301 _problem->addVariable(type, addBaseName(out), params);
302
303 index++;
304 }
305 }
306
307 // Add output AuxKernels
308 else if (_current_task == "add_aux_kernel")
309 {
310 const std::string material_output_aux_name = _use_AD ? "ADMaterialRealAux" : "MaterialRealAux";
311 // Loop through output aux variables
312 unsigned int index = 0;
313 for (auto out : _generate_output)
314 {
315 if (_material_output_family[index] == "MONOMIAL")
316 {
317 InputParameters params = _factory.getValidParams(material_output_aux_name);
318 params.set<MaterialPropertyName>("property") = addBaseName(out);
319 params.set<AuxVariableName>("variable") = addBaseName(out);
320 params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
321 params.set<std::vector<BoundaryName>>("boundary") = _boundary;
322 params.set<bool>("check_boundary_restricted") = false;
323 _problem->addAuxKernel(material_output_aux_name, addBaseName(out) + '_' + name(), params);
324 }
325 index++;
326 }
327 }
328}
std::shared_ptr< FEProblemBase > & _problem
std::vector< std::string > _generate_output
output materials to generate scalar traction/jump vector quantities
std::string addBaseName(const std::string &name) const
simple method for adding the base name to a variable
MultiMooseEnum _material_output_order
MultiMooseEnum _material_output_family
InputParameters getValidParams(const std::string &name) const
T & set(const std::string &name, bool quiet_mode=false)
const std::string & type() const
const std::string & name() const
Factory & _factory

Referenced by act(), and CohesiveZoneAction::act().

◆ actOutputMatProp()

void CohesiveZoneAction::actOutputMatProp ( )
protectedinherited

Definition at line 331 of file CohesiveZoneAction.C.

332{
333 if (_current_task == "add_material")
334 {
335 // Add output Materials
336 for (auto out : _generate_output)
337 {
339
340 // RealVectorCartesianComponent
341 if (
342 [&]()
343 {
344 for (const auto & vq : _real_vector_cartesian_component_table)
345 for (unsigned int a = 0; a < 3; ++a)
346 if (vq.first + '_' + _component_table[a] == out)
347 {
348 auto type = _use_AD ? "ADCZMRealVectorCartesianComponent"
349 : "CZMRealVectorCartesianComponent";
350 params = _factory.getValidParams(type);
351 params.set<std::string>("real_vector_value") = vq.second;
352 params.set<unsigned int>("index") = a;
353 params.set<std::vector<BoundaryName>>("boundary") = _boundary;
354 params.set<MaterialPropertyName>("property_name") = addBaseName(out);
355 params.set<std::string>("base_name") = _base_name;
356 _problem->addInterfaceMaterial(type, addBaseName(out) + '_' + name(), params);
357 return true;
358 }
359 return false;
360 }())
361 continue;
362
363 // CZMRealVectorScalar
364 if (setupOutput(out,
366 [&](std::string prop_name, std::string direction)
367 {
368 auto type = _use_AD ? "ADCZMRealVectorScalar" : "CZMRealVectorScalar";
369 params = _factory.getValidParams(type);
370 params.set<std::string>("real_vector_value") = prop_name;
371 params.set<MooseEnum>("direction") = direction;
372 params.set<MaterialPropertyName>("property_name") = addBaseName(out);
373 params.set<std::vector<BoundaryName>>("boundary") = _boundary;
374 params.set<std::string>("base_name") = _base_name;
375 _problem->addInterfaceMaterial(
376 type, addBaseName(out) + '_' + name(), params);
377 }))
378 continue;
379
380 mooseError("CZM Master: unable to add output Material");
381 }
382 }
383}
InputParameters emptyInputParameters()
for(PetscInt i=0;i< nvars;++i)
void ErrorVector unsigned int
static const std::vector< char > _component_table
static const std::map< std::string, std::string > _real_vector_cartesian_component_table
table data for output generation
static const std::map< std::string, std::pair< std::string, std::vector< std::string > > > _vector_direction_table
const std::string _base_name
Base name of the material system.
bool setupOutput(std::string out, T table, T2 setup)

Referenced by CohesiveZoneAction::actOutputGeneration().

◆ addBaseName()

std::string CohesiveZoneAction::addBaseName ( const std::string &  name) const
inlineprotectedinherited

simple method for adding the base name to a variable

Definition at line 109 of file CohesiveZoneAction.h.

110 {
111 return _base_name.empty() ? name : _base_name + "_" + name;
112 }

Referenced by CohesiveZoneAction::actOutputGeneration(), and CohesiveZoneAction::actOutputMatProp().

◆ addRelationshipManagers() [1/3]

void CohesiveZoneAction::addRelationshipManagers ( Moose::RelationshipManagerType  input_rm_type)
overridevirtualinherited

Reimplemented from Action.

Definition at line 196 of file CohesiveZoneAction.C.

197{
199 addRelationshipManagers(input_rm_type, ips);
200}
virtual void addRelationshipManagers(Moose::RelationshipManagerType input_rm_type) override

Referenced by CohesiveZoneAction::addRelationshipManagers().

◆ addRelationshipManagers() [2/3]

virtual void Action::addRelationshipManagers ( Moose::RelationshipManagerType  when_type)
virtualinherited

Method adding the proper relationship manager.

Reimplemented from Action.

◆ addRelationshipManagers() [3/3]

bool Action::addRelationshipManagers ( Moose::RelationshipManagerType  when_type,
const InputParameters &  moose_object_pars 
)
inherited

Method adding the proper relationship manager.

◆ addRequiredCZMInterfaceKernels()

void CohesiveZoneAction::addRequiredCZMInterfaceKernels ( )
protectedinherited

adds the required interfacekernels based on the selected strain formulation

Definition at line 118 of file CohesiveZoneAction.C.

119{
120 for (unsigned int i = 0; i < _ndisp; ++i)
121 {
122 // Create unique kernel name for each displacement component
123 std::string unique_kernel_name = _czm_kernel_name + "_" + _name + "_" + Moose::stringify(i);
124
126
127 paramsk.set<unsigned int>("component") = i;
128 paramsk.set<NonlinearVariableName>("variable") = _displacements[i];
129 paramsk.set<std::vector<VariableName>>("neighbor_var") = {_displacements[i]};
130 paramsk.set<std::vector<VariableName>>("displacements") = _displacements;
131 paramsk.set<std::vector<BoundaryName>>("boundary") = _boundary;
132 paramsk.set<std::string>("base_name") = _base_name;
134
135 std::string save_in_side;
136 std::vector<AuxVariableName> save_in_var_names;
137 if (_save_in_primary.size() == _ndisp || _save_in_secondary.size() == _ndisp)
138 {
139 prepareSaveInInputs(save_in_var_names, save_in_side, _save_in_primary, _save_in_secondary, i);
140 paramsk.set<std::vector<AuxVariableName>>("save_in") = save_in_var_names;
141 paramsk.set<MultiMooseEnum>("save_in_var_side") = save_in_side;
142 }
144 {
146 save_in_var_names, save_in_side, _diag_save_in_primary, _diag_save_in_secondary, i);
147 paramsk.set<std::vector<AuxVariableName>>("diag_save_in") = save_in_var_names;
148 paramsk.set<MultiMooseEnum>("diag_save_in_var_side") = save_in_side;
149 }
150 _problem->addInterfaceKernel(_czm_kernel_name, unique_kernel_name, paramsk);
151 }
152}
std::vector< AuxVariableName > _diag_save_in_secondary
std::vector< AuxVariableName > _save_in_primary
residual debugging
std::vector< VariableName > _displacements
the disaplcements varaible names
virtual void customizeCZMInterfaceKernelParameters(InputParameters &) const
Allows derived actions to set parameters on each generated interface kernel.
std::vector< AuxVariableName > _diag_save_in_primary
void prepareSaveInInputs(std::vector< AuxVariableName > &, std::string &, const std::vector< AuxVariableName > &, const std::vector< AuxVariableName > &, const int &) const
method to prepare save_in and diag_save_in inputs for the interface kernel
std::vector< AuxVariableName > _save_in_secondary
const std::string & _name
std::string stringify(const T &t)

Referenced by act(), and CohesiveZoneAction::act().

◆ addRequiredCZMInterfaceMaterials()

void CohesiveZoneAction::addRequiredCZMInterfaceMaterials ( )
protectedinherited

adds the required interface materials based on the selected strain formulation

Definition at line 155 of file CohesiveZoneAction.C.

156{
157 // Create unique material name for the "CZMComputeDisplacementJump" object
158 std::string unique_material_name = _disp_jump_provider_name + "_" + _name;
160 paramsm.set<std::vector<BoundaryName>>("boundary") = _boundary;
161
162 paramsm.set<std::vector<VariableName>>("displacements") = _displacements;
163 paramsm.set<std::string>("base_name") = _base_name;
165 _problem->addInterfaceMaterial(_disp_jump_provider_name, unique_material_name, paramsm);
166
167 // Create unique material name for the "CZMComputeGlobalTraction" object
168 unique_material_name = _equilibrium_traction_calculator_name + "_" + _name;
170 paramsm.set<std::vector<BoundaryName>>("boundary") = _boundary;
171
172 paramsm.set<std::string>("base_name") = _base_name;
173 _problem->addInterfaceMaterial(
174 _equilibrium_traction_calculator_name, unique_material_name, paramsm);
175}
virtual void customizeCZMDisplacementJumpMaterialParameters(InputParameters &) const
Allows derived actions to set parameters on the generated displacement jump material.

Referenced by act(), and CohesiveZoneAction::act().

◆ addSBMDistanceFunctions()

void ShiftedCohesiveZoneAction::addSBMDistanceFunctions ( )
protected

Adds the surface distance functions used by the generated distance user object.

Definition at line 373 of file ShiftedCohesiveZoneAction.C.

374{
375 for (const auto & boundary : _boundary)
376 {
377 auto params = _factory.getValidParams("UnsignedDistanceToSurfaceMesh");
378 params.set<UserObjectName>("builder") = surfaceMeshBuilderName(boundary);
379 _problem->addFunction(
380 "UnsignedDistanceToSurfaceMesh", surfaceDistanceFunctionName(boundary), params);
381 }
382}
FunctionName surfaceDistanceFunctionName(const BoundaryName &boundary) const
Returns the generated distance function name for a boundary.
UserObjectName surfaceMeshBuilderName(const BoundaryName &boundary) const
Returns the generated builder name for a boundary.

Referenced by act().

◆ addSBMDistanceUserObjects()

void ShiftedCohesiveZoneAction::addSBMDistanceUserObjects ( )
protected

Adds the generated surface geometry and aggregate boundary distance user objects.

Definition at line 385 of file ShiftedCohesiveZoneAction.C.

386{
387 auto distance_params = _factory.getValidParams("BoundaryShortestDistanceToSurface");
388 distance_params.set<std::vector<BoundaryName>>("boundary") = _boundary;
389 distance_params.set<int>("execution_order_group") = 0;
390 distance_params.set<ExecFlagEnum>("execute_on") = EXEC_INITIAL;
391
392 if (isParamSetByUser("complete_interface_mesh"))
393 {
394 auto manager_params = _factory.getValidParams("SBMInterfaceManager");
395 manager_params.set<MeshGeneratorName>("complete_interface_mesh") =
396 getParam<MeshGeneratorName>("complete_interface_mesh");
397 manager_params.set<Real>("tolerance") = getParam<Real>("interface_matching_tolerance");
398 _problem->addUserObject("SBMInterfaceManager", interfaceManagerName(), manager_params);
399 distance_params.set<UserObjectName>("manager") = interfaceManagerName();
400 if (isParamSetByUser("interface_subdomain_pairs"))
401 distance_params.set<std::vector<std::vector<SubdomainID>>>("interface_subdomain_pairs") =
402 getParam<std::vector<std::vector<SubdomainID>>>("interface_subdomain_pairs");
403 }
404 else
405 {
406 const auto surface_meshes = surfaceMeshNames();
407 std::vector<FunctionName> distance_functions;
408 distance_functions.reserve(_boundary.size());
409 for (const auto i : index_range(_boundary))
410 {
411 auto params = _factory.getValidParams("SBMSurfaceMeshBuilder");
412 params.set<MeshGeneratorName>("interface_mesh") = surface_meshes[i];
413 params.set<bool>("check_watertightness") = getParam<bool>("check_surface_watertightness");
414 _problem->addUserObject(
415 "SBMSurfaceMeshBuilder", surfaceMeshBuilderName(_boundary[i]), params);
416 distance_functions.push_back(surfaceDistanceFunctionName(_boundary[i]));
417 }
418 distance_params.set<std::vector<FunctionName>>("surfaces") = distance_functions;
419 }
420
421 _problem->addUserObject(
422 "BoundaryShortestDistanceToSurface", sbmDistanceUserObjectName(), distance_params);
423}
UserObjectName interfaceManagerName() const
Returns the generated single-mesh interface manager name.
UserObjectName sbmDistanceUserObjectName() const
Returns the generated aggregate distance user object name.
auto index_range(const T &sizable)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real

Referenced by act().

◆ chekMultipleActionParameters()

void CohesiveZoneAction::chekMultipleActionParameters ( )
protectedinherited

method checking multiple CohesiveZoneAction block inputs

Definition at line 386 of file CohesiveZoneAction.C.

387{
388
389 // Gather info about all other master actions when we add variables
390 if (_current_task == "validate_coordinate_systems")
391 {
392 auto actions = _awh.getActions<CohesiveZoneAction>();
393 for (const auto & action : actions)
394 {
395 const auto size_before = _boundary_name_union.size();
396 const auto added_size = action->_boundary.size();
397 _boundary_name_union.insert(action->_boundary.begin(), action->_boundary.end());
398 const auto size_after = _boundary_name_union.size();
399 if (size_after != size_before + added_size)
400 mooseError("The boundary restrictions in the CohesiveZoneAction actions must be "
401 "non-overlapping.");
402 }
403
404 for (const auto & action : actions)
405 {
406 // check for different strain definitions
407 _strain_formulation_union.insert(action->_strain);
408 const auto size_after = _strain_formulation_union.size();
409
410 if (size_after != 1)
411 mooseError("All blocks of the CohesiveZoneAction should have the same strain formulation");
412 }
413 }
414}
std::vector< const T * > getActions()
std::set< BoundaryName > _boundary_name_union
set generated from the combined boundary restrictions of all CohesiveZoneAction action blocks
std::set< Strain > _strain_formulation_union
set generated from the combined boundary restrictions of all CohesiveZoneAction action blocks

Referenced by act(), and CohesiveZoneAction::act().

◆ customizeCZMDisplacementJumpMaterialParameters()

void ShiftedCohesiveZoneAction::customizeCZMDisplacementJumpMaterialParameters ( InputParameters &  params) const
overrideprotectedvirtual

Sets SCZM-specific parameters on the generated displacement jump material.

Reimplemented from CohesiveZoneAction.

Definition at line 462 of file ShiftedCohesiveZoneAction.C.

464{
465 if (getParam<bool>("generate_sbm_distance") || isParamSetByUser("complete_interface_mesh"))
466 params.set<UserObjectName>("sbm_distance_uo") = sbmDistanceUserObjectName();
467 else if (isParamSetByUser("sbm_distance_uo"))
468 params.set<UserObjectName>("sbm_distance_uo") = getParam<UserObjectName>("sbm_distance_uo");
469 if (isParamSetByUser("no_shifted"))
470 params.set<bool>("no_shifted") = getParam<bool>("no_shifted");
471}

◆ customizeCZMInterfaceKernelParameters()

void ShiftedCohesiveZoneAction::customizeCZMInterfaceKernelParameters ( InputParameters &  params) const
overrideprotectedvirtual

Sets SCZM-specific parameters on each generated interface kernel.

Reimplemented from CohesiveZoneAction.

Definition at line 426 of file ShiftedCohesiveZoneAction.C.

427{
428 if (getParam<bool>("generate_sbm_distance") || isParamSetByUser("complete_interface_mesh"))
429 params.set<UserObjectName>("sbm_distance_uo") = sbmDistanceUserObjectName();
430 else if (isParamSetByUser("sbm_distance_uo"))
431 params.set<UserObjectName>("sbm_distance_uo") = getParam<UserObjectName>("sbm_distance_uo");
432 if (isParamSetByUser("no_shifted"))
433 params.set<bool>("no_shifted") = getParam<bool>("no_shifted");
434 if (isParamSetByUser("directional_correction"))
435 params.set<bool>("directional_correction") = getParam<bool>("directional_correction");
436 if (isParamSetByUser("stress"))
437 params.set<MaterialPropertyName>("stress") = getParam<MaterialPropertyName>("stress");
438 if (isParamSetByUser("tangent"))
439 params.set<MaterialPropertyName>("tangent") = getParam<MaterialPropertyName>("tangent");
440 if (isParamSetByUser("tangent_definition") && params.isParamValid("tangent_definition"))
441 params.set<MooseEnum>("tangent_definition") = getParam<MooseEnum>("tangent_definition");
442
443 if (params.isParamValid("volumetric_locking_correction"))
444 {
445 const bool inherited_correction = getInheritedVolumetricLockingCorrection(_awh);
446 if (isParamSetByUser("volumetric_locking_correction"))
447 {
448 params.set<bool>("volumetric_locking_correction") =
449 getParam<bool>("volumetric_locking_correction");
450 if (getParam<bool>("volumetric_locking_correction") != inherited_correction)
452 "ShiftedCohesiveZoneAction: 'volumetric_locking_correction' value in "
453 "ShiftedCohesiveZone block is different from that in the physics block(s). Make sure "
454 "this is intended.");
455 }
456 else
457 params.set<bool>("volumetric_locking_correction") = inherited_correction;
458 }
459}
bool isParamValid(const std::string &name) const
void mooseWarning(Args &&... args) const

◆ interfaceManagerName()

UserObjectName ShiftedCohesiveZoneAction::interfaceManagerName ( ) const
protected

Returns the generated single-mesh interface manager name.

Definition at line 367 of file ShiftedCohesiveZoneAction.C.

368{
369 return name() + "_interface_manager";
370}

Referenced by addSBMDistanceUserObjects().

◆ materialOutputFamilies()

MultiMooseEnum CohesiveZoneActionBase::materialOutputFamilies ( )
staticinherited

Definition at line 164 of file CohesiveZoneActionBase.C.

165{
166 return MultiMooseEnum("MONOMIAL");
167}

Referenced by CohesiveZoneActionBase::validParams().

◆ materialOutputOrders()

MultiMooseEnum CohesiveZoneActionBase::materialOutputOrders ( )
staticinherited

Definition at line 156 of file CohesiveZoneActionBase.C.

157{
159
160 return MultiMooseEnum(orders);
161}
static MooseEnum getAuxVariableOrders()
std::string getRawNames() const

Referenced by CohesiveZoneActionBase::validParams().

◆ outputPropertiesType()

MultiMooseEnum CohesiveZoneActionBase::outputPropertiesType ( )
staticinherited

output methods

Definition at line 141 of file CohesiveZoneActionBase.C.

142{
143 std::string options = "";
145 for (unsigned int a = 0; a < 3; ++a)
146 options += (options == "" ? "" : " ") + vc.first + '_' + _component_table[a];
147
148 for (auto & vi : _vector_direction_table)
149 for (auto & t : vi.second.second)
150 options += " " + vi.first + "_" + t;
151
152 return MultiMooseEnum(options, "", true);
153}

Referenced by CohesiveZoneActionBase::validParams().

◆ prepareSaveInInputs()

void CohesiveZoneAction::prepareSaveInInputs ( std::vector< AuxVariableName > &  save_in_names,
std::string &  save_in_side,
const std::vector< AuxVariableName > &  var_name_primary,
const std::vector< AuxVariableName > &  var_name_secondary,
const int &  i 
) const
protectedinherited

method to prepare save_in and diag_save_in inputs for the interface kernel

Definition at line 203 of file CohesiveZoneAction.C.

208{
209 save_in_names.clear();
210 save_in_side.clear();
211 if (var_name_primary.size() == _ndisp)
212 {
213 save_in_names.push_back(var_name_primary[i]);
214 save_in_side += "m";
215 if (var_name_secondary.size() == _ndisp)
216 save_in_side += " ";
217 }
218 if (var_name_secondary.size() == _ndisp)
219 {
220 save_in_names.push_back(var_name_secondary[i]);
221 save_in_side += "s";
222 }
223}

Referenced by CohesiveZoneAction::addRequiredCZMInterfaceKernels().

◆ sbmDistanceUserObjectName()

UserObjectName ShiftedCohesiveZoneAction::sbmDistanceUserObjectName ( ) const
protected

Returns the generated aggregate distance user object name.

Definition at line 361 of file ShiftedCohesiveZoneAction.C.

362{
363 return name() + "_sbm_distance";
364}

Referenced by addSBMDistanceUserObjects(), customizeCZMDisplacementJumpMaterialParameters(), and customizeCZMInterfaceKernelParameters().

◆ setupOutput()

template<typename T , typename T2 >
bool CohesiveZoneAction::setupOutput ( std::string  out,
T  table,
T2  setup 
)
protectedinherited

Definition at line 117 of file CohesiveZoneAction.h.

118{
119 for (const auto & t1 : table)
120 {
121 // find the officially supported properties
122 for (const auto & t2 : t1.second.second)
123 if (t1.first + '_' + t2 == out)
124 {
125 const auto it = _real_vector_cartesian_component_table.find(t2);
127 {
128 setup(it->second, t1.second.first);
129 return true;
130 }
131 else
132 mooseError("Internal error. The permitted vector shortcuts must be keys in the "
133 "'_real_vector_cartesian_component_table'.");
134 }
135
136 // check for custom properties
137 auto prefix = t1.first + '_';
138 if (out.substr(0, prefix.length()) == prefix)
139 {
140 setup(out.substr(prefix.length()), t1.second.first);
141 return true;
142 }
143 }
144
145 return false;
146}
void setup(EquationSystems &systems, Mesh &mesh, GetPot &args)
if(subdm)
OStreamProxy out(std::cout)

Referenced by CohesiveZoneAction::actOutputMatProp().

◆ surfaceDistanceFunctionName()

FunctionName ShiftedCohesiveZoneAction::surfaceDistanceFunctionName ( const BoundaryName &  boundary) const
protected

Returns the generated distance function name for a boundary.

Definition at line 355 of file ShiftedCohesiveZoneAction.C.

356{
357 return name() + "_dist_" + boundary;
358}

Referenced by addSBMDistanceFunctions(), and addSBMDistanceUserObjects().

◆ surfaceMeshBuilderName()

UserObjectName ShiftedCohesiveZoneAction::surfaceMeshBuilderName ( const BoundaryName &  boundary) const
protected

Returns the generated builder name for a boundary.

Definition at line 349 of file ShiftedCohesiveZoneAction.C.

350{
351 return name() + "_" + boundary + "_builder";
352}

Referenced by addSBMDistanceFunctions(), and addSBMDistanceUserObjects().

◆ surfaceMeshNames()

std::vector< MeshGeneratorName > ShiftedCohesiveZoneAction::surfaceMeshNames ( ) const
protected

Returns the saved surface mesh names, defaulting to the boundary names.

Definition at line 336 of file ShiftedCohesiveZoneAction.C.

337{
338 if (isParamValid("surface_meshes"))
339 return getParam<std::vector<MeshGeneratorName>>("surface_meshes");
340
341 std::vector<MeshGeneratorName> surface_meshes;
342 surface_meshes.reserve(_boundary.size());
343 for (const auto & boundary : _boundary)
344 surface_meshes.push_back(boundary);
345 return surface_meshes;
346}
bool isParamValid(const std::string &name) const

Referenced by addSBMDistanceUserObjects(), and ShiftedCohesiveZoneAction().

◆ validParams()

InputParameters ShiftedCohesiveZoneAction::validParams ( )
static

Definition at line 101 of file ShiftedCohesiveZoneAction.C.

102{
104 params.addClassDescription("Action to create Shifted Cohesive Zone Method (SCZM) objects "
105 "for non-interface-fitted meshes.");
106
107 params.addParam<UserObjectName>(
108 "sbm_distance_uo",
109 "UserObject that provides signed distance and normal vector calculations.");
110 params.addParam<bool>(
111 "generate_sbm_distance",
112 false,
113 "Automatically create surface mesh builders, distance functions, and the boundary distance "
114 "user object from the supplied boundaries.");
115 params.addParam<std::vector<MeshGeneratorName>>(
116 "surface_meshes",
117 "Names of saved surface meshes corresponding one-to-one with boundary. If omitted, the "
118 "boundary names are used.");
119 params.addParam<bool>("check_surface_watertightness",
120 false,
121 "Whether generated surface mesh builders check mesh watertightness.");
122 params.addParam<MeshGeneratorName>(
123 "complete_interface_mesh",
124 "Saved surface mesh containing the complete boundary of each subdomain. Setting this "
125 "parameter automatically creates one interface manager and distance user object.");
126 params.addParam<std::vector<std::vector<SubdomainID>>>(
127 "interface_subdomain_pairs",
128 {},
129 "Ordered subdomain pair for each boundary when it cannot be inferred from boundary names.");
130 params.addParam<Real>("interface_matching_tolerance",
132 "Relative face-matching tolerance for the single-mesh interface manager.");
133
134 params.addParam<bool>("no_shifted", false, "Disable shifted terms.");
135 params.addParam<bool>("directional_correction", true, "Add the directional correction terms.");
136 params.addParam<MaterialPropertyName>(
137 "stress", "stress", "Name of the stress tensor material property for small strain SCZM.");
138 params.addParam<MaterialPropertyName>("tangent",
139 "Jacobian_mult",
140 "Name of the material Jacobian tensor property for small "
141 "strain SCZM.");
142 params.addParam<MooseEnum>(
143 "tangent_definition",
144 MooseEnum("auto stress_wrt_strain pk1_wrt_deformation_gradient", "auto"),
145 "Mathematical definition of the tangent material property. 'auto' recognizes the standard "
146 "Jacobian_mult property as d(stress)/d(strain) and pk1_jacobian as d(PK1)/d(F). Select "
147 "'stress_wrt_strain' or 'pk1_wrt_deformation_gradient' explicitly for a custom tangent "
148 "property; use the latter only when the property is known to be d(PK1)/d(F).");
149 params.addParam<bool>(
150 "volumetric_locking_correction",
151 false,
152 "Whether to apply volumetric locking correction to the directional correction Jacobian "
153 "term in SCZM. If not specified, this value is automatically inherited from the solid "
154 "mechanics physics block.");
155
156 return params;
157}
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static constexpr Real TOLERANCE

◆ verifyOrderAndFamilyOutputs()

void CohesiveZoneAction::verifyOrderAndFamilyOutputs ( )
protectedinherited

verifies order and family of output variables

Definition at line 226 of file CohesiveZoneAction.C.

227{
228 // Ensure material output order and family vectors are same size as generate output
229
230 // check number of supplied orders and families
232 paramError("material_output_order",
233 "The number of orders assigned to material outputs must be: 0 to be assigned "
234 "CONSTANT; 1 to assign all outputs the same value, or the same size as the number "
235 "of generate outputs listed.");
236
237 if (_material_output_family.size() > 1 &&
239 paramError("material_output_family",
240 "The number of families assigned to material outputs must be: 0 to be assigned "
241 "MONOMIAL; 1 to assign all outputs the same value, or the same size as the number "
242 "of generate outputs listed.");
243
244 // if no value was provided, chose the default CONSTANT
245 if (_material_output_order.size() == 0)
247
248 // For only one order, make all orders the same magnitude
249 if (_material_output_order.size() == 1)
251 std::vector<std::string>(_generate_output.size(), _material_output_order[0]);
252
253 if (_verbose)
254 Moose::out << COLOR_CYAN << "*** Automatic applied material output orders ***"
255 << "\n"
256 << _name << ": " << Moose::stringify(_material_output_order) << "\n"
257 << COLOR_DEFAULT;
258
259 // if no value was provided, chose the default MONOMIAL
260 if (_material_output_family.size() == 0)
262
263 // For only one family, make all families that value
264 if (_material_output_family.size() == 1)
266 std::vector<std::string>(_generate_output.size(), _material_output_family[0]);
267
268 if (_verbose)
269 Moose::out << COLOR_CYAN << "*** Automatic applied material output families ***"
270 << "\n"
271 << _name << ": " << Moose::stringify(_material_output_family) << "\n"
272 << COLOR_DEFAULT;
273}
const bool _verbose
display info
void setAdditionalValue(const std::string &names)
unsigned int size() const

Referenced by CohesiveZoneAction::CohesiveZoneAction().

Member Data Documentation

◆ _base_name

const std::string CohesiveZoneAction::_base_name
protectedinherited

◆ _boundary

const std::vector<BoundaryName> CohesiveZoneAction::_boundary
protectedinherited

◆ _boundary_name_union

std::set<BoundaryName> CohesiveZoneAction::_boundary_name_union
protectedinherited

set generated from the combined boundary restrictions of all CohesiveZoneAction action blocks

Definition at line 100 of file CohesiveZoneAction.h.

Referenced by CohesiveZoneAction::chekMultipleActionParameters().

◆ _component_table

const std::vector< char > CohesiveZoneActionBase::_component_table = {'x', 'y', 'z'}
staticinherited

◆ _czm_kernel_name

std::string CohesiveZoneAction::_czm_kernel_name
protectedinherited

◆ _diag_save_in_primary

std::vector<AuxVariableName> CohesiveZoneAction::_diag_save_in_primary
protectedinherited

◆ _diag_save_in_secondary

std::vector<AuxVariableName> CohesiveZoneAction::_diag_save_in_secondary
protectedinherited

◆ _disp_jump_provider_name

std::string CohesiveZoneAction::_disp_jump_provider_name
protectedinherited

◆ _displacements

std::vector<VariableName> CohesiveZoneAction::_displacements
protectedinherited

the disaplcements varaible names

Definition at line 59 of file CohesiveZoneAction.h.

Referenced by CohesiveZoneAction::addRequiredCZMInterfaceKernels(), and CohesiveZoneAction::addRequiredCZMInterfaceMaterials().

◆ _equilibrium_traction_calculator_name

std::string CohesiveZoneAction::_equilibrium_traction_calculator_name
protectedinherited

◆ _generate_output

std::vector<std::string> CohesiveZoneAction::_generate_output
protectedinherited

◆ _material_output_family

MultiMooseEnum CohesiveZoneAction::_material_output_family
protectedinherited

◆ _material_output_order

MultiMooseEnum CohesiveZoneAction::_material_output_order
protectedinherited

◆ _ndisp

const unsigned int CohesiveZoneAction::_ndisp
protectedinherited

◆ _real_vector_cartesian_component_table

const std::map< std::string, std::string > CohesiveZoneActionBase::_real_vector_cartesian_component_table
staticinherited
Initial value:
= {
{"traction", "traction_global"},
{"jump", "displacement_jump_global"},
{"pk1_traction", "PK1traction"}}

table data for output generation

Definition at line 20 of file CohesiveZoneActionBase.h.

Referenced by CohesiveZoneAction::actOutputMatProp(), CohesiveZoneActionBase::outputPropertiesType(), and CohesiveZoneAction::setupOutput().

◆ _save_in_primary

std::vector<AuxVariableName> CohesiveZoneAction::_save_in_primary
protectedinherited

◆ _save_in_secondary

std::vector<AuxVariableName> CohesiveZoneAction::_save_in_secondary
protectedinherited

◆ _strain

enum CohesiveZoneAction::Strain CohesiveZoneAction::_strain
protectedinherited

◆ _strain_formulation_union

std::set<Strain> CohesiveZoneAction::_strain_formulation_union
protectedinherited

set generated from the combined boundary restrictions of all CohesiveZoneAction action blocks

Definition at line 103 of file CohesiveZoneAction.h.

Referenced by CohesiveZoneAction::chekMultipleActionParameters().

◆ _use_AD

const bool CohesiveZoneAction::_use_AD
protectedinherited

◆ _vector_direction_table

const std::map< std::string, std::pair< std::string, std::vector< std::string > > > CohesiveZoneActionBase::_vector_direction_table
staticinherited
Initial value:
= {
{"normal", {"Normal", {"traction", "jump"}}},
{"tangent", {"Tangent", {"traction", "jump"}}}}

Definition at line 28 of file CohesiveZoneActionBase.h.

Referenced by CohesiveZoneAction::actOutputMatProp(), and CohesiveZoneActionBase::outputPropertiesType().

◆ _verbose

const bool CohesiveZoneAction::_verbose
protectedinherited

display info

Definition at line 106 of file CohesiveZoneAction.h.

Referenced by CohesiveZoneAction::verifyOrderAndFamilyOutputs().


The documentation for this class was generated from the following files: