Skip to content

Commit

Permalink
Minor changes made in review of peridynamics module ref idaholab#11561
Browse files Browse the repository at this point in the history
  • Loading branch information
bwspenc authored and hchen139 committed Jan 13, 2020
1 parent 3e9a9d2 commit 900f163
Show file tree
Hide file tree
Showing 34 changed files with 129 additions and 203 deletions.

This file was deleted.

5 changes: 0 additions & 5 deletions modules/peridynamics/include/base/PeridynamicsApp.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,4 @@ class PeridynamicsApp : public MooseApp

static void registerApps();
static void registerAll(Factory & f, ActionFactory & af, Syntax & s);
static void registerObjects(Factory & factory);
static void registerObjectDepends(Factory & factory);
static void associateSyntax(Syntax & syntax, ActionFactory & action_factory);
static void associateSyntaxDepends(Syntax & syntax, ActionFactory & action_factory);
static void registerExecFlags(Factory & factory);
};
8 changes: 6 additions & 2 deletions modules/peridynamics/include/bcs/IntactBondsDirichletBCPD.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@ template <>
InputParameters validParams<IntactBondsDirichletBCPD>();

/**
* Defines Dirichlet boundary condition based on number of intact bonds associated with each
* material point
* Class to selectively apply a Dirichlet BC based on the number of intact
* bonds associated with each material point. Used to stabilize nodes without
* a sufficient number of connections to other material points.
*/
class IntactBondsDirichletBCPD : public NodalBC
{
Expand All @@ -38,4 +39,7 @@ class IntactBondsDirichletBCPD : public NodalBC

/// value of the AuxVariable for number of intact bonds associated with each material point
const VariableValue & _intact_bonds_val;

/// Maximum number of intact bonds connected a node for this BC to be active
const unsigned int _max_intact_bonds;
};
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ class ForceStabilizedSmallStrainMechanicsNOSPD : public MechanicsBasePD
const MaterialProperty<RankTwoTensor> & _ddgraddv;
const MaterialProperty<RankTwoTensor> & _ddgraddw;
const MaterialProperty<RankFourTensor> & _Cijkl;
const std::vector<MaterialPropertyName> _eigenstrain_names;
std::vector<const MaterialProperty<RankTwoTensor> *> _deigenstrain_dT;
///@}

/// Bond based material property for fictitious stabilization force
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ template <>
InputParameters validParams<GeneralizedPlaneStrainOffDiagNOSPD>();

/**
* Kernel class for coupled off diagonal jacobian entries of non-ordinary state-based peridynamic
* Kernel class for coupled off diagonal Jacobian entries of non-ordinary state-based peridynamic
* generalized plane strain model
*/
class GeneralizedPlaneStrainOffDiagNOSPD : public MechanicsBaseNOSPD
Expand All @@ -30,23 +30,23 @@ class GeneralizedPlaneStrainOffDiagNOSPD : public MechanicsBaseNOSPD
virtual void computeOffDiagJacobianScalar(unsigned int jvar_num) override;

/**
* Function to compute the full off diagonal jacobian for coupling between displacements and
* Function to compute the full off diagonal Jacobian for coupling between displacements and
* scalar variable
* @param component The index of displacement component
* @param jvar_num The coupled scalar variable number
*/
void computeDispFullOffDiagJacobianScalar(unsigned int component, unsigned int jvar_num);

/**
* Function to compute partial off diagonal jacobian for coupling between displacements and scalar
* Function to compute partial off diagonal Jacobian for coupling between displacements and scalar
* variable
* @param component The index of displacement component
* @param jvar_num The coupled scalar variable number
*/
void computeDispPartialOffDiagJacobianScalar(unsigned int component, unsigned int jvar_num);

/**
* Function to compute off disgonal jacobian for coupling between temperature and scalar variable
* Function to compute off disgonal Jacobian for coupling between temperature and scalar variable
* @param jvar_num The coupled scalar variable number
*/
void computeTempOffDiagJacobianScalar(unsigned int jvar_num);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ template <>
InputParameters validParams<GeneralizedPlaneStrainOffDiagOSPD>();

/**
* Kernel class for coupled off diagonal jacobian entries of ordinary state-based peridynamic
* Kernel class for coupled off diagonal Jacobian entries of ordinary state-based peridynamic
* generalized plane strain model
*/
class GeneralizedPlaneStrainOffDiagOSPD : public MechanicsBasePD
Expand All @@ -30,23 +30,23 @@ class GeneralizedPlaneStrainOffDiagOSPD : public MechanicsBasePD
virtual void computeOffDiagJacobianScalar(unsigned int jvar_num) override;

/**
* Function to compute the full off diagonal jacobian for coupling between displacements and
* Function to compute the full off diagonal Jacobian for coupling between displacements and
* scalar variable
* @param component The index of displacement component
* @param jvar_num The coupled scalar variable number
*/
void computeDispFullOffDiagJacobianScalar(unsigned int component, unsigned int jvar_num);

/**
* Function to compute partial off diagonal jacobian for coupling between displacements and scalar
* Function to compute partial off diagonal Jacobian for coupling between displacements and scalar
* variable
* @param component The index of displacement component
* @param jvar_num The coupled scalar variable number
*/
void computeDispPartialOffDiagJacobianScalar(unsigned int component, unsigned int jvar_num);

/**
* Function to compute off disgonal jacobian for coupling between temperature and scalar variable
* Function to compute off disgonal Jacobian for coupling between temperature and scalar variable
* @param jvar_num The coupled scalar variable number
*/
void computeTempOffDiagJacobianScalar(unsigned int jvar_num);
Expand Down
6 changes: 2 additions & 4 deletions modules/peridynamics/include/kernels/HeatSourceBPD.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ class HeatSourceBPD : public KernelBasePD
protected:
virtual void computeLocalResidual() override;

///@{ Power density values
double _power_density;
const Function * _power_density_function;
///@}
/// Power density function
const Function & _power_density;
};
4 changes: 4 additions & 0 deletions modules/peridynamics/include/kernels/MechanicsBaseNOSPD.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,9 @@ class MechanicsBaseNOSPD : public MechanicsBasePD
const MaterialProperty<RankTwoTensor> & _ddgraddv;
const MaterialProperty<RankTwoTensor> & _ddgraddw;
const MaterialProperty<RankFourTensor> & _Jacobian_mult;
const std::vector<MaterialPropertyName> _eigenstrain_names;
std::vector<const MaterialProperty<RankTwoTensor> *> _deigenstrain_dT;
///@}

///@}
};
5 changes: 0 additions & 5 deletions modules/peridynamics/include/kernels/MechanicsBasePD.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,6 @@ class MechanicsBasePD : public DerivativeMaterialInterface<KernelBasePD>
/// number of displacement components
unsigned int _ndisp;

///@{ Material point based material property for eigen strains
const std::vector<MaterialPropertyName> _eigenstrain_names;
std::vector<const MaterialProperty<RankTwoTensor> *> _deigenstrain_dT;
///@}

///@{ Parameters for out-of-plane strain in weak plane stress formulation
const bool _out_of_plane_strain_coupled;
MooseVariableFEBase * _out_of_plane_strain_var;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ class ThermalConstantHorizonBPD : public ThermalMaterialBaseBPD
ThermalConstantHorizonBPD(const InputParameters & parameters);

protected:
virtual void computePDMicroConductivity() override;
void computePDMicroConductivity(const Real ave_thermal_conductivity) override;
};
11 changes: 3 additions & 8 deletions modules/peridynamics/include/materials/ThermalMaterialBaseBPD.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,27 +40,22 @@ class ThermalMaterialBaseBPD : public MaterialBasePD

/**
* Function to compute micro-conductivity
* @param ave_thermal_conductivity average thermal conductivity for the current element
*/
virtual void computePDMicroConductivity() = 0;
virtual void computePDMicroConductivity(const Real ave_thermal_conductivity) = 0;

///@{ Temperature variable and values
MooseVariableFEBase & _temp_var;
std::vector<Real> _temp;
///@}

/// Constant thermal conductivity
const Real _thermal_conductivity;

/// Functional thermal conductivity
const Function * _thermal_conductivity_function;

///@{ Material properties to be stored
MaterialProperty<Real> & _bond_heat_flow;
MaterialProperty<Real> & _bond_dQdT;
///@}

/// Thermal conductivity
Real _kappa;
const MaterialProperty<Real> & _thermal_conductivity;

/// Micro-conductivity
Real _Kij;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ class ThermalVariableHorizonBPD : public ThermalMaterialBaseBPD
ThermalVariableHorizonBPD(const InputParameters & parameters);

protected:
virtual void computePDMicroConductivity() override;
void computePDMicroConductivity(const Real ave_thermal_conductivity) override;
};
35 changes: 0 additions & 35 deletions modules/peridynamics/src/base/PeridynamicsApp.C
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,6 @@ PeridynamicsApp::registerApps()
registerApp(PeridynamicsApp);
}

void
PeridynamicsApp::registerObjects(Factory & factory)
{
mooseDeprecated("use registerAll instead of registerObjects");
Registry::registerObjectsTo(factory, {"PeridynamicsApp"});
}

static void
associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
{
Expand All @@ -61,34 +54,6 @@ PeridynamicsApp::registerAll(Factory & f, ActionFactory & af, Syntax & s)
TensorMechanicsApp::registerAll(f, af, s);
}

void
PeridynamicsApp::registerObjectDepends(Factory & factory)
{
mooseDeprecated("use registerAll instead of registerObjectsDepends");
TensorMechanicsApp::registerObjects(factory);
}

void
PeridynamicsApp::associateSyntax(Syntax & syntax, ActionFactory & action_factory)
{
mooseDeprecated("use registerAll instead of associateSyntax");
Registry::registerActionsTo(action_factory, {"PeridynamicsApp"});
associateSyntaxInner(syntax, action_factory);
}

void
PeridynamicsApp::associateSyntaxDepends(Syntax & syntax, ActionFactory & action_factory)
{
mooseDeprecated("use registerAll instead of registerObjectsDepends");
TensorMechanicsApp::associateSyntax(syntax, action_factory);
}

void
PeridynamicsApp::registerExecFlags(Factory & /*factory*/)
{
mooseDeprecated("use registerAll instead of registerExecFlags");
}

extern "C" void
PeridynamicsApp__registerApps()
{
Expand Down
13 changes: 8 additions & 5 deletions modules/peridynamics/src/bcs/IntactBondsDirichletBCPD.C
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@ InputParameters
validParams<IntactBondsDirichletBCPD>()
{
InputParameters params = validParams<NodalBC>();
params.addClassDescription("Class to apply Dirichlet BC based on the number of intact bonds "
"associated with each material point.");
params.addClassDescription(
"Class to selectively apply a Dirichlet BC based on the number of intact "
"bonds associated with each material point. Used to stabilize nodes without "
"a sufficient number of connections to other material points.");
params.addRequiredCoupledVar(
"intact_bonds_variable",
"Name of auxiliary variable for number of intact bonds at each material point");
"Name of auxiliary variable containing the number of intact bonds at each material point");

return params;
}
Expand All @@ -29,7 +31,8 @@ IntactBondsDirichletBCPD::IntactBondsDirichletBCPD(const InputParameters & param
: NodalBC(parameters),
_pdmesh(dynamic_cast<PeridynamicsMesh &>(_mesh)),
_u_old(_var.dofValuesOld()),
_intact_bonds_val(coupledValue("intact_bonds_variable"))
_intact_bonds_val(coupledValue("intact_bonds_variable")),
_max_intact_bonds(_pdmesh.dimension() - 1)
{
}

Expand All @@ -43,7 +46,7 @@ bool
IntactBondsDirichletBCPD::shouldApply()
{
bool should_apply = false;
if (_intact_bonds_val[0] < _pdmesh.dimension())
if (_intact_bonds_val[0] <= _max_intact_bonds)
should_apply = true;

return should_apply;
Expand Down
5 changes: 3 additions & 2 deletions modules/peridynamics/src/kernels/FiniteStrainMechanicsNOSPD.C
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@ validParams<FiniteStrainMechanicsNOSPD>()
{
InputParameters params = validParams<MechanicsBaseNOSPD>();
params.addClassDescription(
"Class for calculating residual and Jacobian for Self-stabilized Non-Ordinary "
"State-based PeriDynamic (SNOSPD) formulation under finite strain assumptions");
"Class for calculating residual and Jacobian for the Self-stabilized "
"Non-Ordinary State-based PeriDynamic (SNOSPD) formulation under finite "
"strain assumptions");

params.addRequiredParam<unsigned int>(
"component",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,15 @@ validParams<ForceStabilizedSmallStrainMechanicsNOSPD>()
{
InputParameters params = validParams<MechanicsBasePD>();
params.addClassDescription("Class for calculating residual and Jacobian for Non-Ordinary "
"State-based PeriDynamic solid mechanics formulation");
"State-based PeriDynamic solid mechanics formulation using a "
"fictitious force method for stabilization.");

params.addRequiredParam<unsigned int>(
"component",
"An integer corresponding to the variable this kernel acts on (0 for x, 1 for y, 2 for z)");
params.addParam<std::vector<MaterialPropertyName>>(
"eigenstrain_names",
"List of eigenstrains to be coupled in non-ordinary state-based mechanics kernels");

return params;
}
Expand All @@ -40,9 +44,14 @@ ForceStabilizedSmallStrainMechanicsNOSPD::ForceStabilizedSmallStrainMechanicsNOS
_ddgraddv(getMaterialProperty<RankTwoTensor>("ddeformation_gradient_dv")),
_ddgraddw(getMaterialProperty<RankTwoTensor>("ddeformation_gradient_dw")),
_Cijkl(getMaterialProperty<RankFourTensor>("elasticity_tensor")),
_eigenstrain_names(getParam<std::vector<MaterialPropertyName>>("eigenstrain_names")),
_deigenstrain_dT(_eigenstrain_names.size()),
_sf_coeff(getMaterialProperty<Real>("stabilization_force_coeff")),
_component(getParam<unsigned int>("component"))
{
for (unsigned int i = 0; i < _deigenstrain_dT.size(); ++i)
_deigenstrain_dT[i] =
&getMaterialPropertyDerivative<RankTwoTensor>(_eigenstrain_names[i], _temp_var->name());
}

void
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ validParams<GeneralizedPlaneStrainOffDiagNOSPD>()
{
InputParameters params = validParams<MechanicsBaseNOSPD>();
params.addClassDescription(
"Class for calculating off-diagonal jacobian corresponding to "
"Class for calculating off-diagonal Jacobian corresponding to "
"coupling between displacements (or temperature) with scalar out-of-plane strain for "
"generalized plane strain using SNOSPD formulation");
params.addCoupledVar("scalar_out_of_plane_strain",
Expand All @@ -37,7 +37,7 @@ GeneralizedPlaneStrainOffDiagNOSPD::GeneralizedPlaneStrainOffDiagNOSPD(
{
// Consistency check
if (_disp_var.size() != 2)
mooseError("GeneralizedPlaneStrain only works for two dimensional case!");
mooseError("GeneralizedPlaneStrain only works for two dimensional models!");
}

void
Expand Down
20 changes: 5 additions & 15 deletions modules/peridynamics/src/kernels/HeatSourceBPD.C
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,13 @@ validParams<HeatSourceBPD>()
InputParameters params = validParams<KernelBasePD>();
params.addClassDescription("Class for calculating residual from heat source for bond-based "
"peridynamic heat conduction formulation");
params.addParam<Real>("power_density", 0, "Volumetric heat source density");
params.addParam<FunctionName>("power_density_function",
"Function describing the volumetric heat source density");
params.addRequiredParam<FunctionName>("power_density", "Volumetric heat source density");

return params;
}

HeatSourceBPD::HeatSourceBPD(const InputParameters & parameters)
: KernelBasePD(parameters),
_power_density(getParam<Real>("power_density")),
_power_density_function(
isParamValid("power_density_function") ? &getFunction("power_density_function") : NULL)
: KernelBasePD(parameters), _power_density(getFunction("power_density"))
{
}

Expand All @@ -41,13 +36,8 @@ HeatSourceBPD::computeLocalResidual()
// get the total_bonds for each node
unsigned int nn_i = _pdmesh.getNNeighbors(_current_elem->node_id(0));
unsigned int nn_j = _pdmesh.getNNeighbors(_current_elem->node_id(1));
Point p;

if (_power_density_function)
{
Point p;
_power_density = _power_density_function->value(_t, p);
}

_local_re(0) = -_power_density * _vols_ij[0] / nn_i;
_local_re(1) = -_power_density * _vols_ij[1] / nn_j;
_local_re(0) = -_power_density.value(_t, p) * _vols_ij[0] / nn_i;
_local_re(1) = -_power_density.value(_t, p) * _vols_ij[1] / nn_j;
}
Loading

0 comments on commit 900f163

Please sign in to comment.