Commit 5b95f35f authored by wenqing's avatar wenqing

[NonisothermalRichardsFlowMechanics] Use fixed strain/stress rate for the staggered scheme

parent 820dc4ef
......@@ -13,6 +13,7 @@
#include <vector>
#include "ProcessLib/Deformation/StrainCouplingSplitType.h"
#include "ProcessLib/RichardsMechanics/RichardsMechanicsFEM.h"
namespace ProcessLib
......@@ -69,14 +70,15 @@ public:
MeshLib::Element const& e,
std::size_t const local_matrix_size,
bool const is_axially_symmetric,
ProcessLib::StrainCouplingSplitType const& strain_coupling_split_type,
unsigned const integration_order,
RichardsMechanics::RichardsMechanicsProcessData<DisplacementDim>&
process_data)
: RichardsMechanics::RichardsMechanicsLocalAssembler<
ShapeFunctionDisplacement, ShapeFunctionPressure,
IntegrationMethod, DisplacementDim>(
e, local_matrix_size, is_axially_symmetric, integration_order,
process_data)
e, local_matrix_size, is_axially_symmetric,
strain_coupling_split_type, integration_order, process_data)
{
}
......
......@@ -394,16 +394,14 @@ void NonIsothermalRichardsFlowMechanicsAssemblerTcHcM<
double volume_mechanical_term_rate = 0.0;
if (data_of_staggeredTcHcM_.use_fixed_stress_rate_split)
{
auto const& sigma_eff = ip_data.sigma_eff;
auto const& sigma_eff_prev = ip_data.sigma_eff_prev;
auto const C_el =
ip_data.computeElasticTangentStiffness(t, pos, dt, T_at_xi);
K_dr = solid_material.getBulkModulus(t, pos, &C_el);
auto const& dsigma_eff_prev = ip_data.dsigma_eff_prev;
auto const sigma_v_rate_over_K_dr =
Invariants::trace(sigma_eff - sigma_eff_prev) / dt / K_dr;
Invariants::trace(dsigma_eff_prev) / dt / K_dr;
volume_mechanical_term_rate = sigma_v_rate_over_K_dr;
......@@ -415,10 +413,8 @@ void NonIsothermalRichardsFlowMechanicsAssemblerTcHcM<
}
else // Fixed strain rate split
{
auto const& eps = ip_data.eps;
auto const& eps_prev = ip_data.eps_prev;
volume_mechanical_term_rate =
Invariants::trace(eps - eps_prev) / dt;
Invariants::trace(ip_data.deps_prev) / dt;
}
double rho_v_over_rho_w = 0.0;
......
......@@ -56,6 +56,7 @@ public:
MeshLib::Element const& e,
std::size_t const local_matrix_size,
bool const is_axially_symmetric,
ProcessLib::StrainCouplingSplitType const& strain_coupling_split_type,
unsigned const integration_order,
RichardsMechanics::RichardsMechanicsProcessData<DisplacementDim>&
process_data,
......@@ -66,7 +67,8 @@ public:
DisplacementDim>,
ShapeFunctionDisplacement, ShapeFunction, IntegrationMethod,
DisplacementDim>(e, local_matrix_size, is_axially_symmetric,
integration_order, process_data),
strain_coupling_split_type, integration_order,
process_data),
data_of_staggeredTcHcM_(data_of_staggeredTcHcM)
{
}
......
......@@ -17,6 +17,7 @@
#include "NonIsothermalRichardsFlowMechanicsTcHcMFEM.h"
#include "NumLib/DOF/ComputeSparsityPattern.h"
#include "ProcessLib/Deformation/SolidMaterialInternalToSecondaryVariables.h"
#include "ProcessLib/Deformation/StrainCouplingSplitType.h"
#include "ProcessLib/Process.h"
#include "ProcessLib/RichardsMechanics/CreateLocalAssemblers.h"
#include "ProcessLib/RichardsMechanics/RichardsMechanicsFEM.h"
......@@ -129,12 +130,18 @@ void NonisothermalRichardsFlowMechanicsStaggerdTcHcM<DisplacementDim>::
.get()
.getShapeFunctionOrder();
ProcessLib::StrainCouplingSplitType const strain_coupling_split_type =
data_of_staggeredTcHcM_.use_fixed_stress_rate_split
? ProcessLib::StrainCouplingSplitType::FIXED_STRESS_RATE
: ProcessLib::StrainCouplingSplitType::FIXED_STRAIN_RATE;
ProcessLib::RichardsMechanics::createLocalAssemblers<
DisplacementDim, NonIsothermalRichardsFlowMechanicsAssemblerTcHcM>(
mesh.getDimension(), mesh.getElements(), dof_table,
M_shape_function_orger, other_shape_function_orger,
this->local_assemblers_, mesh.isAxiallySymmetric(), integration_order,
this->process_data_, data_of_staggeredTcHcM_);
this->local_assemblers_, mesh.isAxiallySymmetric(),
strain_coupling_split_type, integration_order, this->process_data_,
data_of_staggeredTcHcM_);
this->initializeConcreteProcessData(mesh);
// Initialize local assemblers after all variables have been set.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment