Skip to content

Commit

Permalink
Updated PeridynamicsTestApp and ModulesApp, fixed issue of peridynami…
Browse files Browse the repository at this point in the history
…cs userobject for multi-threading (idaholab#11561)
  • Loading branch information
hchen139 committed Oct 10, 2018
1 parent 080afa1 commit 0650d54
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 57 deletions.
4 changes: 4 additions & 0 deletions modules/module_loader/src/ModulesApp.C
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,10 @@ ModulesApp::registerAll(Factory & f, ActionFactory & af, Syntax & s)
NavierStokesApp::registerAll(f, af, s);
#endif

#ifdef PERIDYNAMICS_ENABLED
PeridynamicsApp::registerAll(f, af, s);
#endif

#ifdef PHASE_FIELD_ENABLED
PhaseFieldApp::registerAll(f, af, s);
#endif
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ class NodalAuxVariableUserObjectBasePD : public ElementUserObjectBasePD

virtual void initialize() override;
virtual void execute() override;
virtual void threadJoin(const UserObject & uo) override;
virtual void threadJoin(const UserObject & /*uo*/) override{};
virtual void finalize() override;

protected:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,6 @@ NodalAuxVariableUserObjectBasePD::execute()
}
}

void
NodalAuxVariableUserObjectBasePD::threadJoin(const UserObject & uo)
{
const NodalAuxVariableUserObjectBasePD & navuob =
static_cast<const NodalAuxVariableUserObjectBasePD &>(uo);
for (unsigned int i = 0; i < 2; ++i)
{
dof_id_type dof = _current_elem->get_node(i)->dof_number(_aux.number(), _aux_var->number(), 0);

_aux_sln.add(dof, navuob._aux_sln(dof));
}
}

void
NodalAuxVariableUserObjectBasePD::finalize()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class PeridynamicsTestApp : public MooseApp
virtual ~PeridynamicsTestApp();

static void registerApps();
static void registerAll(Factory & f, ActionFactory & af, Syntax & s, bool use_test_objs = false);
static void registerObjects(Factory & factory);
static void associateSyntax(Syntax & syntax, ActionFactory & action_factory);
static void registerExecFlags(Factory & factory);
Expand Down
63 changes: 20 additions & 43 deletions modules/peridynamics/test/src/base/PeridynamicsTestApp.C
Original file line number Diff line number Diff line change
Expand Up @@ -20,30 +20,27 @@ validParams<PeridynamicsTestApp>()
return params;
}

registerKnownLabel("PeridynamicsTestApp");

PeridynamicsTestApp::PeridynamicsTestApp(InputParameters parameters) : MooseApp(parameters)
{
Moose::registerObjects(_factory);
PeridynamicsApp::registerObjectDepends(_factory);
PeridynamicsApp::registerObjects(_factory);

Moose::associateSyntax(_syntax, _action_factory);
PeridynamicsApp::associateSyntaxDepends(_syntax, _action_factory);
PeridynamicsApp::associateSyntax(_syntax, _action_factory);
PeridynamicsTestApp::registerAll(
_factory, _action_factory, _syntax, getParam<bool>("allow_test_objects"));
}

Moose::registerExecFlags(_factory);
PeridynamicsApp::registerExecFlags(_factory);
PeridynamicsTestApp::~PeridynamicsTestApp() {}

bool use_test_objs = getParam<bool>("allow_test_objects");
void
PeridynamicsTestApp::registerAll(Factory & f, ActionFactory & af, Syntax & s, bool use_test_objs)
{
PeridynamicsApp::registerAll(f, af, s);
if (use_test_objs)
{
PeridynamicsTestApp::registerObjects(_factory);
PeridynamicsTestApp::associateSyntax(_syntax, _action_factory);
PeridynamicsTestApp::registerExecFlags(_factory);
Registry::registerObjectsTo(f, {"PeridynamicsTestApp"});
Registry::registerActionsTo(af, {"PeridynamicsTestApp"});
}
}

PeridynamicsTestApp::~PeridynamicsTestApp() {}

void
PeridynamicsTestApp::registerApps()
{
Expand All @@ -52,50 +49,30 @@ PeridynamicsTestApp::registerApps()
}

void
PeridynamicsTestApp::registerObjects(Factory & /*factory*/)
PeridynamicsTestApp::registerObjects(Factory & factory)
{
/* Uncomment Factory parameter and register your new test objects here! */
Registry::registerObjectsTo(factory, {"PeridynamicsTestApp"});
}

void
PeridynamicsTestApp::associateSyntax(Syntax & /*syntax*/, ActionFactory & /*action_factory*/)
PeridynamicsTestApp::associateSyntax(Syntax & /*syntax*/, ActionFactory & action_factory)
{
/* Uncomment Syntax and ActionFactory parameters and register your new test objects here! */
Registry::registerActionsTo(action_factory, {"PeridynamicsTestApp"});
}

void
PeridynamicsTestApp::registerExecFlags(Factory & /*factory*/)
{
/* Uncomment Factory parameter and register your new execute flags here! */
}

/***************************************************************************************************
*********************** Dynamic Library Entry Points - DO NOT MODIFY ******************************
**************************************************************************************************/
// External entry point for dynamic application loading
extern "C" void
PeridynamicsTestApp__registerApps()
{
PeridynamicsTestApp::registerApps();
}

// External entry point for dynamic object registration
extern "C" void
PeridynamicsTestApp__registerObjects(Factory & factory)
{
PeridynamicsTestApp::registerObjects(factory);
}

// External entry point for dynamic syntax association
extern "C" void
PeridynamicsTestApp__associateSyntax(Syntax & syntax, ActionFactory & action_factory)
PeridynamicsTestApp__registerAll(Factory & f, ActionFactory & af, Syntax & s)
{
PeridynamicsTestApp::associateSyntax(syntax, action_factory);
PeridynamicsTestApp::registerAll(f, af, s);
}

// External entry point for dynamic execute flag registration
extern "C" void
PeridynamicsTestApp__registerExecFlags(Factory & factory)
PeridynamicsTestApp__registerApps()
{
PeridynamicsTestApp::registerExecFlags(factory);
PeridynamicsTestApp::registerApps();
}

0 comments on commit 0650d54

Please sign in to comment.