Line data Source code
1 : //* This file is part of the MOOSE framework
2 : //* https://www.mooseframework.org
3 : //*
4 : //* All rights reserved, see COPYRIGHT for full restrictions
5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 : //*
7 : //* Licensed under LGPL 2.1, please see LICENSE for details
8 : //* https://www.gnu.org/licenses/lgpl-2.1.html
9 :
10 : #include "TensorMechanicsApp.h"
11 : #include "Moose.h"
12 : #include "AppFactory.h"
13 : #include "MooseSyntax.h"
14 :
15 : InputParameters
16 4420 : TensorMechanicsApp::validParams()
17 : {
18 4420 : auto params = MooseApp::validParams();
19 4420 : params.set<bool>("automatic_automatic_scaling") = false;
20 4420 : params.set<bool>("use_legacy_material_output") = false;
21 13260 : params.addCommandLineParam<bool>("parse_neml2_only",
22 : "--parse-neml2-only",
23 8840 : false,
24 : "Executes the [NEML2] block in the input file and terminate.");
25 4420 : return params;
26 0 : }
27 :
28 : registerKnownLabel("TensorMechanicsApp");
29 :
30 0 : TensorMechanicsApp::TensorMechanicsApp(const InputParameters & parameters) : MooseApp(parameters)
31 : {
32 0 : TensorMechanicsApp::registerAll(_factory, _action_factory, _syntax);
33 0 : }
34 :
35 0 : TensorMechanicsApp::~TensorMechanicsApp() {}
36 :
37 : void
38 0 : TensorMechanicsApp::setupOptions()
39 : {
40 0 : MooseApp::setupOptions();
41 :
42 0 : if (getParam<bool>("parse_neml2_only"))
43 : {
44 : // Let parse_neml2 run before anything else, and stop after that.
45 0 : syntax().addDependency("determine_system_type", "parse_neml2");
46 0 : actionWarehouse().setFinalTask("parse_neml2");
47 : }
48 0 : }
49 :
50 : void
51 0 : TensorMechanicsApp::runInputFile()
52 : {
53 0 : MooseApp::runInputFile();
54 :
55 0 : if (getParam<bool>("parse_neml2_only"))
56 0 : _ready_to_exit = true;
57 0 : }
58 :
59 : static void
60 4420 : associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
61 : {
62 8840 : registerSyntax("EmptyAction", "BCs/CavityPressure");
63 8840 : registerSyntax("CavityPressureAction", "BCs/CavityPressure/*");
64 8840 : registerSyntax("CavityPressurePPAction", "BCs/CavityPressure/*");
65 8840 : registerSyntax("CavityPressureUOAction", "BCs/CavityPressure/*");
66 :
67 8840 : registerSyntax("LegacyTensorMechanicsAction", "Kernels/TensorMechanics");
68 8840 : registerSyntax("LegacyDynamicTensorMechanicsAction", "Kernels/DynamicTensorMechanics");
69 8840 : registerSyntax("PoroMechanicsAction", "Kernels/PoroMechanics");
70 :
71 8840 : registerSyntax("EmptyAction", "BCs/Pressure");
72 8840 : registerSyntax("PressureAction", "BCs/Pressure/*");
73 8840 : registerSyntax("EmptyAction", "BCs/InclinedNoDisplacementBC");
74 8840 : registerSyntax("InclinedNoDisplacementBCAction", "BCs/InclinedNoDisplacementBC/*");
75 8840 : registerSyntax("EmptyAction", "BCs/CoupledPressure");
76 8840 : registerSyntax("CoupledPressureAction", "BCs/CoupledPressure/*");
77 :
78 8840 : registerSyntax("GeneralizedPlaneStrainAction",
79 : "Modules/TensorMechanics/GeneralizedPlaneStrain/*");
80 8840 : registerSyntax("GlobalStrainAction", "Modules/TensorMechanics/GlobalStrain/*");
81 8840 : registerSyntax("CommonTensorMechanicsAction", "Modules/TensorMechanics/Master");
82 8840 : registerSyntax("CommonTensorMechanicsAction", "Modules/TensorMechanics/DynamicMaster");
83 8840 : registerSyntax("TensorMechanicsAction", "Modules/TensorMechanics/Master/*");
84 8840 : registerSyntax("DynamicTensorMechanicsAction", "Modules/TensorMechanics/DynamicMaster/*");
85 :
86 8840 : registerSyntax("CommonLineElementAction", "Modules/TensorMechanics/LineElementMaster");
87 8840 : registerSyntax("LineElementAction", "Modules/TensorMechanics/LineElementMaster/*");
88 :
89 8840 : registerSyntaxTask("DomainIntegralAction", "DomainIntegral", "add_user_object");
90 8840 : registerSyntaxTask("DomainIntegralAction", "DomainIntegral", "add_aux_variable");
91 8840 : registerSyntaxTask("DomainIntegralAction", "DomainIntegral", "add_aux_kernel");
92 8840 : registerSyntaxTask("DomainIntegralAction", "DomainIntegral", "add_postprocessor");
93 8840 : registerSyntaxTask("DomainIntegralAction", "DomainIntegral", "add_vector_postprocessor");
94 8840 : registerSyntaxTask("DomainIntegralAction", "DomainIntegral", "add_material");
95 :
96 8840 : registerSyntax("CommonCohesiveZoneAction", "Modules/TensorMechanics/CohesiveZoneMaster");
97 8840 : registerSyntax("CohesiveZoneAction", "Modules/TensorMechanics/CohesiveZoneMaster/*");
98 :
99 8840 : registerSyntax("EmptyAction", "Modules/TensorMechanics/MaterialVectorBodyForce");
100 8840 : registerSyntax("MaterialVectorBodyForceAction",
101 : "Modules/TensorMechanics/MaterialVectorBodyForce/*");
102 :
103 4420 : registerTask("validate_coordinate_systems", /*is_required=*/false);
104 8840 : addTaskDependency("validate_coordinate_systems", "create_problem_complete");
105 8840 : addTaskDependency("setup_postprocessor_data", "validate_coordinate_systems");
106 :
107 4420 : registerTask("parse_neml2", /*required=*/true);
108 8840 : syntax.addDependency("add_material", "parse_neml2");
109 8840 : syntax.addDependency("add_user_object", "parse_neml2");
110 8840 : registerSyntax("NEML2Action", "NEML2");
111 4420 : }
112 :
113 : void
114 4420 : TensorMechanicsApp::registerAll(Factory & f, ActionFactory & af, Syntax & s)
115 : {
116 13260 : Registry::registerObjectsTo(f, {"TensorMechanicsApp"});
117 13260 : Registry::registerActionsTo(af, {"TensorMechanicsApp"});
118 4420 : associateSyntaxInner(s, af);
119 4420 : registerDataFilePath();
120 17680 : }
121 :
122 : void
123 0 : TensorMechanicsApp::registerApps()
124 : {
125 0 : registerApp(TensorMechanicsApp);
126 0 : }
127 :
128 : void
129 0 : TensorMechanicsApp::registerObjects(Factory & factory)
130 : {
131 : mooseDeprecated("use registerAll instead of registerObjects");
132 0 : Registry::registerObjectsTo(factory, {"TensorMechanicsApp"});
133 0 : }
134 :
135 : void
136 0 : TensorMechanicsApp::associateSyntax(Syntax & syntax, ActionFactory & action_factory)
137 : {
138 : mooseDeprecated("use registerAll instead of associateSyntax");
139 0 : Registry::registerActionsTo(action_factory, {"TensorMechanicsApp"});
140 0 : associateSyntaxInner(syntax, action_factory);
141 0 : }
142 :
143 : void
144 0 : TensorMechanicsApp::registerExecFlags(Factory & /*factory*/)
145 : {
146 : mooseDeprecated("Do not use registerExecFlags, apps no longer require flag registration");
147 0 : }
148 :
149 : extern "C" void
150 0 : TensorMechanicsApp__registerAll(Factory & f, ActionFactory & af, Syntax & s)
151 : {
152 0 : TensorMechanicsApp::registerAll(f, af, s);
153 0 : }
154 : extern "C" void
155 0 : TensorMechanicsApp_registerApps()
156 : {
157 0 : TensorMechanicsApp::registerApps();
158 0 : }
|