v0.14.0
Remodeling.hpp

Implementation of element for bone remodeling

/** \file Remodeling.hpp
* \ingroup bone_remodelling
* \example Remodeling.hpp
* \brief Implementation of element for bone remodeling
*/
/*
* This file is part of MoFEM.
* MoFEM is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version.
*
* MoFEM is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with MoFEM. If not, see <http://www.gnu.org/licenses/>. */
#ifndef __REMODELING_HPP__
#define __REMODELING_HPP__
namespace BoneRemodeling {
/**
* \brief Implementation of bone remodeling finite element
*
* Implementation base on paper \cite waffenschmidt2012anisotropic
* <http://biomechanics.stanford.edu/paper/IJSS12.pdf>
*
*/
struct Remodeling {
/**
* \brief Volume finite element
*/
Fe(MoFEM::Interface &m_field)
/** \brief Set integrate rule
*/
int getRule(int order) { return 2 * (order - 1) + 1; };
};
/**
* \brief Not used at this stage. Could be used to do some calculations,
* before assembly of local elements.
*/
struct FePrePostProcessRhs : public FEMethod {
switch (ts_ctx) {
case CTX_TSSETIFUNCTION: {
snes_ctx = CTX_SNESSETFUNCTION;
snes_f = ts_F;
break;
}
default:
break;
}
}
}
};
/**
* \brief Not used at this stage. Could be used to do some calculations,
* before assembly of local elements.
*/
struct FePrePostProcessLhs : public FEMethod {
//
switch (ts_ctx) {
case CTX_TSSETIJACOBIAN: {
snes_ctx = CTX_SNESSETJACOBIAN;
snes_B = ts_B;
break;
}
default:
break;
}
}
}
};
/**
* Data structure for storing material parameters and evaluated values at
* integration points.
*
* @param oRder order of approximation
* @param lambda Lame parameter \f[ \lambda=\frac{E}{2(1+v)} \f]
* @param mu Lame parameter \f[ \mu=\frac{E\cdot\nu}{(1-2\nu)(1+\nu)} \f]
* @param c density evolution (growth) velocity [d/m^2] \f[ k_{p}^{\ast} \f]
* in Ellen Kuhl's paper
* @param m algorithmic exponent [-]
* @param n porosity exponent [-]
* @param rHo_ref reference density
* @param pSi_ref reference free energy
* @param R0 mass conduction coefficient
*/
struct CommonData {
Mat A;
Vec F, D;
// Approximation
int oRder;
// DM
DMType dm_name; ///< dm (problem) name
DM dm; ///< Discretization manager
TS ts; ///< Time solver
boost::shared_ptr<Fe> feLhs; ///< FE to make left hand side
boost::shared_ptr<Fe> feRhs; ///< FE to make right hand side
boost::shared_ptr<FePrePostProcessRhs> preProcRhs;
boost::shared_ptr<FePrePostProcessLhs> preProcLhs;
boost::ptr_map<string, NeummanForcesSurface>
neumannForces; ///< Forces on surface
boost::ptr_map<string, NodalForce> nodalForces; ///< Nodal forces
boost::ptr_map<string, EdgeForce> edgeForces; ///< Forces on edges
boost::shared_ptr<NonlinearElasticElement> elasticPtr;
boost::shared_ptr<ElasticMaterials> elasticMaterialsPtr;
// Material parameters
double lambda; ///< Lame parameter
double mu; ///< Lame parameter
double c; ///< density evolution (growth) velocity [d/m^2]
double m; ///< algorithmic exponent [-]
double n; ///< porosity exponent [-]
double rHo_ref; ///< reference density
double rHo_max; ///< max density
double rHo_min; ///< min density
int b; ///< b exponent for bell function
double pSi_ref; ///< reference free energy
double R0; ///< mass conduction coefficient
double
cUrrent_psi; ///< current free energy for evaluating equilibrium state
double
cUrrent_mass; ///< current free energy for evaluating equilibrium state
PetscBool with_adol_c;
PetscBool is_atom_testing; ///< for atom tests
PetscBool less_post_proc; ///< reduce file size
Range tEts_all; // all blockset
Range tEts_block; // blockset with no remodelling
inline double getCFromDensity(const double &rho);
inline double getCFromDensityDiff(const double &rho);
// aDouble values
aC; ///< right Cauchy-Green deformation tensor \f[ C=F^{T}\cdot F \f]
adouble aPsi; ///< Elastic energy
///< \f[\psi_{0}=\frac{\mu}{2}\left(\textrm{tr}(\mathbf{C})-3\right)-\mu\ln(J)+\frac{\lambda}{2}\ln^{2}(\ln
///< J)^{2} \f]
const int tAg;
const int kEep;
CommonData() : tAg(1), kEep(0) {}
struct DataContainers {
boost::shared_ptr<MatrixDouble>
gradDispPtr; ///< Ptr to gradient of displacements matrix container
boost::shared_ptr<VectorDouble>
rhoPtr; ///< Ptr to density matrix container
boost::shared_ptr<MatrixDouble> gradRhoPtr; ///< Gradient of density field
VectorDouble vecPsi; ///< Elastic energy density
MatrixDouble matS; ///< 2nd Piola stress
MatrixDouble matP; ///< 1st Piola stress
VectorDouble vecR; ///< Mass sorce
MatrixDouble matMaterialTangent; ///< Tangent matrix (derivative for F and
///< 1st Piola stress)
matPushedMaterialTangent; ///< Pushed tangent matrix (derivative for F
///< and 1st Piola stress)
MatrixDouble matGradientOfDeformation; ///< Gradient of deformation
MatrixDouble matInvF; ///< inverse of deformation gradient
VectorDouble vecDetF; ///< determinant of F
VectorDouble vecRhoDt; ///< Time derivative of density
};
DataContainers data;
};
Remodeling(MoFEM::Interface &m_field, CommonData &common_data)
: mField(m_field), commonData(common_data) {}
/**
* \brief Get parameters form line command or config file
* Read command line and config file to setup material and model parameters.
* @return Error code
*/
/**
* \brief Set and add entities to approximation fields
* @return Error code
*/
/**
* \brief Set and add finite elements
* @return Error code
*/
/**
* \brief (Testing only) Set finite element to run mass transport problem only
* @return Error code
*/
/**
* \brief (Testing only) Set finite element to run elastic problem only
* @return Error code
*/
/**
* \brief Finite elements to calculate tractions
* @return Error code
*/
/**
* \brief Set problem and DM
* @return Error code
*/
/**
* \brief Solve problem set up in DM
* @return Error code
*/
};
/**
* Calculate free energy
*
\f[\psi_{0}=\frac{\mu}{2}\left(\textrm{tr}(\mathbf{C})-3\right)-\mu\ln(J)+\frac{\lambda}{2}\ln^{2}(\ln
J) \f]
*
*/
template <class B1, class B2, class T>
inline MoFEMErrorCode freeEnergy(Remodeling::CommonData &common_data, T &C,
B1 &psi) {
const double mu = common_data.mu;
const double lambda = common_data.lambda;
// Compressible Neo-Hookean
B2 det;
det = sqrt(det);
B2 traceC;
traceC = C(I, I);
B2 log_det = log(det);
psi = 0.5 * mu * (traceC - 3.0) - mu * log_det +
0.5 * lambda * log_det * log_det;
// St. Venant–Kirchhoff Material
// T E;
// E(I,J) = C(I,J);
// E(0,0) -= 1;
// E(1,1) -= 1;
// E(2,2) -= 1;
// E(I,J) *= 0.5;
// B2 traceE = E(I,I);
// psi = 0.5*lambda*traceE*traceE+mu*E(I,J)*E(I,J);
}
template <class B1, class T>
inline MoFEMErrorCode recordFreeEnergy_dC(Remodeling::CommonData &common_data,
T &dC, B1 &psi) {
trace_on(common_data.tAg, common_data.kEep);
common_data.aC(I, J) <<= dC(I, J); // Set independent variables
CHKERR freeEnergy<adouble, adouble, FTensor::Tensor2_symmetric<adouble, 3>>(
common_data, common_data.aC, common_data.aPsi);
double psi_val;
common_data.aPsi >>= psi_val; // Set dependent variables
psi = psi_val;
trace_off();
}
/**
* \brief Evaluate density derivative with respect to time
in case of Backward Euler Method
\f[
\frac{\partial \rho}{\partial t} = \frac{\rho_{n+1} - \rho_{n}}{\Delta t}
\f]
The density within a finite element is approximated directly as
\f[
\rho = N r
\f]
*/
struct OpGetRhoTimeDirevative
Remodeling::CommonData &commonData;
OpGetRhoTimeDirevative(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int side, EntityType type,
};
/**
* \brief Evaluate physical equations at integration points.
\f[
F_{ij}=u_{i,j}+\delta_{ij} \\
C_{ij}=F_{k,i}F_{k,j} \\
P_{ij}=F_{i,k}S_{k,j} \\
\psi_{0}=\frac{\mu}{2}\left[\textrm{tr}(C)-3\right]-\mu\ln(\sqrt{\det
C})+\frac{\lambda}{2}\ln^{2}(\sqrt{\det C}) \\
R=c\left[\left[\frac{\rho}{\rho_0}\right]^{-m}\Psi-\Psi_0\right] \\
\f]
*/
Remodeling::CommonData &commonData;
OpCalculateStress(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int side, EntityType type,
};
/**
* \brief Used to post proc stresses, energy, source term.
*
* calculation of principal stresses. for e.g.
*
*/
Remodeling::CommonData &commonData;
std::vector<EntityHandle> &mapGaussPts;
std::vector<EntityHandle> &map_gauss_pts,
Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int side, EntityType type,
};
/**
* Evaluate tangent material matrix
\f[
C_{IJ} = F_{iI}F_{iJ}\\
P_{iI} = F_{iI}S_{IJ}(\mathbf{C})\\
\delta \Psi = \delta v_{iI}P_{iI} = \delta v_{iJ} F_{iI}S_{IJ}\\
D_{iJkL} \delta u_{k,L} = S_{IJ}F_{iI,kL} \delta u_{k,L} +
F_{iI}S_{IJ,KL}F_{kL}\delta u_{k,L}\\
D_{iJkL} \delta u_{k,L} = S_{IJ}\delta_{ik}\delta_{IL} \delta u_{k,L} +
F_{iI}S_{IJ,KL}F_{kL}\delta u_{k,L}\\
D_{iJkL} \delta u_{k,L} = \left( S_{IJ}\delta_{ik}\delta_{IL} +
F_{iI}S_{IJ,KL}F_{kL} \right)\delta u_{k,L}\\ \f]
*/
struct OpCalculateStressTangent
Remodeling::CommonData &commonData;
OpCalculateStressTangent(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int side, EntityType type,
};
struct OpCalculateStressTangentWithAdolc
Remodeling::CommonData &commonData;
OpCalculateStressTangentWithAdolc(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int side, EntityType type,
};
// TODO correct equations in documentation
/**
* \brief Assemble residual for conservation of momentum (stresses)
*
\f[
R^{\phi}=\intop_{V}\left[\frac{\rho_{0}}{\rho_{0}^{\ast}}\right]^{n}
\mathbf{P}_{ij}\nabla N_{j}\,dV
\f]
*/
struct OpAssmbleStressRhs
Remodeling::CommonData &commonData;
VectorDouble nF; ///< Vector of the right hand side (internal forces)
OpAssmbleStressRhs(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int side, EntityType type,
};
/**
* \brief Assemble residual for conservation of mass (density)
\f[
R^{\rho}=\intop_{V}N\frac{\partial\rho}{\partial t}-N\mathbf{R}-R_{0}\nabla
N\nabla\rho\,dV \f]
*/
struct OpAssmbleRhoRhs
Remodeling::CommonData &commonData;
VectorDouble nF; ///< Vector of the right hand side (internal forces)
OpAssmbleRhoRhs(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int side, EntityType type,
};
/**
* \brief Diagonal block of tangent matrix \f$K_{\rho\rho}\f$
\f[
K^{\rho \rho}=\intop_{V} \Delta t N_i N_j - R_0 \nabla N_i \nabla N_j -c
\frac{n-m}{\rho_0}\left[\frac{\rho_{0}}{\rho_{0}^{\ast}}\right]^{n-m} \psi_0
N_i N_j \,dV \f]
*/
struct OpAssmbleRhoLhs_dRho
Remodeling::CommonData &commonData;
OpAssmbleRhoLhs_dRho(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
EntityType col_type,
};
/**
* \brief Off diagonal block of tangent matrix \f$K_{\rho u}\f$
\f[
K_{\rho u}=-\intop_{V} c \left[\frac{\rho_{0}}{\rho_{0}^{\ast}}\right]^{n-m}
\nabla N_j P_{ij} N_i \,dV \f]
*/
struct OpAssmbleRhoLhs_dF
Remodeling::CommonData &commonData;
OpAssmbleRhoLhs_dF(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
EntityType col_type,
};
/**
* \brief Off diagonal block of tangent matrix \f$K_{u u}\f$
\f[
K_{u u}=\left[\frac{\rho_{0}}{\rho_{0}^{\ast}}\right]^{n} \nabla N_j
D_{ijkl}\nabla N_l S_{jl} \f]
*/
template <bool ADOLC>
struct OpAssmbleStressLhs_dF
Remodeling::CommonData &commonData;
OpAssmbleStressLhs_dF(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
EntityType col_type,
};
/**
* \brief Off diagonal block of tangent matrix \f$K_{u \rho}\f$
/f[
K_{u \rho}=\intop_{V} \left[\frac{n}{\rho_{0}}\right]
\left[\frac{\rho_{0}}{\rho_{0}^{\ast}}\right]^{n} \nabla N_j P_{ij} N_i \,dV
/f]
*/
struct OpAssmbleStressLhs_dRho
Remodeling::CommonData &commonData;
OpAssmbleStressLhs_dRho(Remodeling::CommonData &common_data);
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type,
EntityType col_type,
};
/**
* Element used to post-process results at each time step
*/
struct MonitorPostProc : public FEMethod {
Remodeling::CommonData &commonData;
// DensityMapFe densityMaps;
PetscBool mass_postproc;
PetscBool equilibrium_flg;
double rate;
bool iNit;
int pRT;
Remodeling::CommonData &common_data);
};
/**
* Operator used to calculate potential energy at each time step, for
* postprocessing
*/
struct OpMassAndEnergyCalculation
Remodeling::CommonData &commonData;
Remodeling::CommonData &common_data,
Vec energy_vec, Vec mass_vec)
energVec(energy_vec), massVec(mass_vec), commonData(common_data) {}
MoFEMErrorCode doWork(int row_side, EntityType row_type,
};
} // namespace BoneRemodeling
#endif //__REMODELING_HPP__
MoFEMFunctionReturnHot
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:460
BoneRemodeling::OpAssmbleRhoLhs_dRho::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data)
Definition: Remodeling.cpp:969
BoneRemodeling::Remodeling::CommonData::kEep
const int kEep
Definition: Remodeling.hpp:179
BoneRemodeling::OpAssmbleStressRhs::doWork
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Definition: Remodeling.cpp:820
BoneRemodeling::OpAssmbleStressLhs_dRho::OpAssmbleStressLhs_dRho
OpAssmbleStressLhs_dRho(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:1307
BoneRemodeling::Remodeling::CommonData::nOremodellingBlock
bool nOremodellingBlock
Definition: Remodeling.hpp:164
BoneRemodeling::Remodeling::buildDM
MoFEMErrorCode buildDM()
Set problem and DM.
Definition: Remodeling.cpp:1832
BoneRemodeling::Remodeling::addFields
MoFEMErrorCode addFields()
Set and add entities to approximation fields.
Definition: Remodeling.cpp:1607
BoneRemodeling::Remodeling::mField
MoFEM::Interface & mField
Definition: Remodeling.hpp:206
BoneRemodeling::Remodeling::CommonData::feRhs
boost::shared_ptr< Fe > feRhs
FE to make right hand side.
Definition: Remodeling.hpp:131
BoneRemodeling::OpGetRhoTimeDirevative::doWork
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Definition: Remodeling.cpp:239
BoneRemodeling::Remodeling::CommonData::ts
TS ts
Time solver.
Definition: Remodeling.hpp:128
BoneRemodeling::Remodeling::CommonData::DataContainers::vecDetF
VectorDouble vecDetF
determinant of F
Definition: Remodeling.hpp:200
BoneRemodeling::Remodeling::CommonData::neumannForces
boost::ptr_map< string, NeummanForcesSurface > neumannForces
Forces on surface.
Definition: Remodeling.hpp:136
BoneRemodeling::Remodeling::CommonData::n
double n
porosity exponent [-]
Definition: Remodeling.hpp:148
BoneRemodeling::MonitorPostProc::mass_postproc
PetscBool mass_postproc
Definition: Remodeling.hpp:560
BoneRemodeling::Remodeling::FePrePostProcessRhs::postProcess
MoFEMErrorCode postProcess()
Definition: Remodeling.hpp:69
BoneRemodeling::OpAssmbleRhoRhs::doWork
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Definition: Remodeling.cpp:889
BoneRemodeling::OpAssmbleStressRhs::nF
VectorDouble nF
Vector of the right hand side (internal forces)
Definition: Remodeling.hpp:439
BoneRemodeling::OpCalculateStressTangent::doWork
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Definition: Remodeling.cpp:732
BoneRemodeling::Remodeling::CommonData::dm_name
DMType dm_name
dm (problem) name
Definition: Remodeling.hpp:126
BoneRemodeling::OpAssmbleRhoLhs_dF::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:496
rho
double rho
Definition: plastic.cpp:140
BoneRemodeling::MonitorPostProc::operator()
MoFEMErrorCode operator()()
Definition: Remodeling.cpp:1399
BoneRemodeling::OpAssmbleStressLhs_dF::transLocK_P_F
MatrixDouble transLocK_P_F
Definition: Remodeling.hpp:518
BoneRemodeling::Remodeling::CommonData::nodalForces
boost::ptr_map< string, NodalForce > nodalForces
Nodal forces.
Definition: Remodeling.hpp:137
BoneRemodeling::OpAssmbleRhoLhs_dF::locK_rho_F
MatrixDouble locK_rho_F
Definition: Remodeling.hpp:497
BoneRemodeling::OpMassAndEnergyCalculation::energVec
Vec energVec
Definition: Remodeling.hpp:581
BoneRemodeling::Remodeling::CommonData::CommonData
CommonData()
Definition: Remodeling.hpp:181
MoFEM::Exceptions::MoFEMErrorCode
PetscErrorCode MoFEMErrorCode
MoFEM/PETSc error code.
Definition: Exceptions.hpp:56
MoFEM::Types::MatrixDouble
UBlasMatrix< double > MatrixDouble
Definition: Types.hpp:77
BoneRemodeling::Remodeling::CommonData::rHo_ref
double rHo_ref
reference density
Definition: Remodeling.hpp:150
BoneRemodeling::Remodeling::Fe::Fe
Fe(MoFEM::Interface &m_field)
Definition: Remodeling.hpp:42
BoneRemodeling::OpPostProcStress::postProcMesh
moab::Interface & postProcMesh
Definition: Remodeling.hpp:378
BoneRemodeling::OpAssmbleRhoLhs_dRho::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:475
BoneRemodeling::Remodeling::CommonData::cUrrent_psi
double cUrrent_psi
current free energy for evaluating equilibrium state
Definition: Remodeling.hpp:158
BoneRemodeling::Remodeling::CommonData::cUrrent_mass
double cUrrent_mass
current free energy for evaluating equilibrium state
Definition: Remodeling.hpp:160
BoneRemodeling::Remodeling::CommonData::rHo_max
double rHo_max
max density
Definition: Remodeling.hpp:151
BoneRemodeling::Remodeling::CommonData::DataContainers::vecR
VectorDouble vecR
Mass sorce.
Definition: Remodeling.hpp:192
BoneRemodeling::freeEnergy
MoFEMErrorCode freeEnergy(Remodeling::CommonData &common_data, T &C, B1 &psi)
Definition: Remodeling.hpp:272
BoneRemodeling::Remodeling::CommonData::aC
FTensor::Tensor2_symmetric< adouble, 3 > aC
right Cauchy-Green deformation tensor
Definition: Remodeling.hpp:173
BoneRemodeling::OpMassAndEnergyCalculation::massVec
Vec massVec
Definition: Remodeling.hpp:582
BoneRemodeling::Remodeling::CommonData::rHo_min
double rHo_min
min density
Definition: Remodeling.hpp:152
J
FTensor::Index< 'J', DIM1 > J
Definition: level_set.cpp:30
BoneRemodeling::OpAssmbleRhoLhs_dRho::OpAssmbleRhoLhs_dRho
OpAssmbleRhoLhs_dRho(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:961
FTensor::Tensor2_symmetric< adouble, 3 >
BoneRemodeling::Remodeling::CommonData::DataContainers::rhoPtr
boost::shared_ptr< VectorDouble > rhoPtr
Ptr to density matrix container.
Definition: Remodeling.hpp:187
BoneRemodeling::OpCalculateStressTangent::OpCalculateStressTangent
OpCalculateStressTangent(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:717
ts_ctx
MoFEM::TsCtx * ts_ctx
Definition: level_set.cpp:1932
BoneRemodeling::MonitorPostProc::preProcess
MoFEMErrorCode preProcess()
Definition: Remodeling.cpp:1394
BoneRemodeling::Remodeling::CommonData::lambda
double lambda
Lame parameter.
Definition: Remodeling.hpp:144
FTensor::Tensor2< double, 3, 3 >
BoneRemodeling::OpCalculateStressTangentWithAdolc::doWork
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Definition: Remodeling.cpp:396
order
constexpr int order
Definition: dg_projection.cpp:18
BoneRemodeling::OpGetRhoTimeDirevative::OpGetRhoTimeDirevative
OpGetRhoTimeDirevative(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:232
BoneRemodeling::Remodeling::CommonData::DataContainers::gradDispPtr
boost::shared_ptr< MatrixDouble > gradDispPtr
Ptr to gradient of displacements matrix container.
Definition: Remodeling.hpp:185
MoFEM::DeprecatedCoreInterface
Deprecated interface functions.
Definition: DeprecatedCoreInterface.hpp:16
BoneRemodeling::OpMassAndEnergyCalculation::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:583
BoneRemodeling::Remodeling::FePrePostProcessLhs::preProcess
MoFEMErrorCode preProcess()
Definition: Remodeling.hpp:81
OpPostProcStress
Definition: ElasticityMixedFormulation.hpp:429
I
constexpr IntegrationType I
Definition: operators_tests.cpp:31
MoFEM::Interface
DeprecatedCoreInterface Interface
Definition: Interface.hpp:2010
BoneRemodeling::Remodeling::CommonData::less_post_proc
PetscBool less_post_proc
reduce file size
Definition: Remodeling.hpp:163
BoneRemodeling::Remodeling::CommonData::with_adol_c
PetscBool with_adol_c
Definition: Remodeling.hpp:161
FEMethod
CHKERR
#define CHKERR
Inline error check.
Definition: definitions.h:548
BoneRemodeling::recordFreeEnergy_dC
MoFEMErrorCode recordFreeEnergy_dC(Remodeling::CommonData &common_data, T &dC, B1 &psi)
Definition: Remodeling.hpp:305
BoneRemodeling::Remodeling::CommonData::tEts_block
Range tEts_block
Definition: Remodeling.hpp:166
BoneRemodeling::OpCalculateStress::vecC
VectorDouble vecC
Definition: Remodeling.hpp:360
BoneRemodeling::OpCalculateStressTangent::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:407
BoneRemodeling::MonitorPostProc::MonitorPostProc
MonitorPostProc(MoFEM::Interface &m_field, Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:1387
BoneRemodeling::Remodeling::CommonData::bitLevel
BitRefLevel bitLevel
Definition: Remodeling.hpp:123
BoneRemodeling::Remodeling::getParameters
MoFEMErrorCode getParameters()
Get parameters form line command or config file.
Definition: Remodeling.cpp:1579
BoneRemodeling::OpAssmbleRhoLhs_dRho::transLocK_rho_rho
MatrixDouble transLocK_rho_rho
Definition: Remodeling.hpp:477
BoneRemodeling::OpCalculateStress::OpCalculateStress
OpCalculateStress(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:280
BoneRemodeling::Remodeling::CommonData::mu
double mu
Lame parameter.
Definition: Remodeling.hpp:145
BoneRemodeling::Remodeling::CommonData::D
Vec D
Definition: Remodeling.hpp:120
BoneRemodeling::OpAssmbleRhoLhs_dRho::locK_rho_rho
MatrixDouble locK_rho_rho
Definition: Remodeling.hpp:476
BoneRemodeling::Remodeling::CommonData::is_atom_testing
PetscBool is_atom_testing
for atom tests
Definition: Remodeling.hpp:162
BoneRemodeling::MonitorPostProc::postProcElastic
PostProcVolumeOnRefinedMesh postProcElastic
Definition: Remodeling.hpp:558
BoneRemodeling::Remodeling::CommonData::elasticPtr
boost::shared_ptr< NonlinearElasticElement > elasticPtr
Definition: Remodeling.hpp:140
BoneRemodeling::OpAssmbleRhoRhs::OpAssmbleRhoRhs
OpAssmbleRhoRhs(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:883
BoneRemodeling::OpAssmbleStressLhs_dF::locK_P_F
MatrixDouble locK_P_F
Definition: Remodeling.hpp:517
BoneRemodeling::OpCalculateStressTangentWithAdolc::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:418
BoneRemodeling::Remodeling::CommonData::b
int b
b exponent for bell function
Definition: Remodeling.hpp:153
BoneRemodeling::Remodeling::addElementsTestingElasticty
MoFEMErrorCode addElementsTestingElasticty()
(Testing only) Set finite element to run elastic problem only
BoneRemodeling::MonitorPostProc::equilibrium_flg
PetscBool equilibrium_flg
Definition: Remodeling.hpp:561
BoneRemodeling::Remodeling::CommonData::DataContainers::gradRhoPtr
boost::shared_ptr< MatrixDouble > gradRhoPtr
Gradient of density field.
Definition: Remodeling.hpp:188
convert.type
type
Definition: convert.py:64
BoneRemodeling::Remodeling::FePrePostProcessRhs::preProcess
MoFEMErrorCode preProcess()
Definition: Remodeling.hpp:55
BoneRemodeling::Remodeling::Remodeling
Remodeling(MoFEM::Interface &m_field, CommonData &common_data)
Definition: Remodeling.hpp:209
BoneRemodeling::MonitorPostProc::postProcess
MoFEMErrorCode postProcess()
Definition: Remodeling.cpp:1404
BoneRemodeling::Remodeling::CommonData::edgeForces
boost::ptr_map< string, EdgeForce > edgeForces
Forces on edges.
Definition: Remodeling.hpp:138
MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator
friend class UserDataOperator
Definition: VolumeElementForcesAndSourcesCore.hpp:105
BoneRemodeling
Definition: DensityMaps.hpp:27
BoneRemodeling::Remodeling::CommonData::DataContainers::vecPsi
VectorDouble vecPsi
Elastic energy density.
Definition: Remodeling.hpp:189
BoneRemodeling::MonitorPostProc::rate
double rate
Definition: Remodeling.hpp:562
BoneRemodeling::MonitorPostProc::pRT
int pRT
Definition: Remodeling.hpp:564
BoneRemodeling::Remodeling::CommonData::F
Vec F
Definition: Remodeling.hpp:120
BoneRemodeling::OpAssmbleStressRhs::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:438
BoneRemodeling::Remodeling::addMomentumFluxes
MoFEMErrorCode addMomentumFluxes()
Finite elements to calculate tractions.
Definition: Remodeling.cpp:1792
BoneRemodeling::Remodeling::CommonData::getCFromDensity
double getCFromDensity(const double &rho)
Definition: Remodeling.cpp:218
BoneRemodeling::Remodeling::commonData
CommonData & commonData
Definition: Remodeling.hpp:207
BoneRemodeling::Remodeling::CommonData::DataContainers::matGradientOfDeformation
MatrixDouble matGradientOfDeformation
Gradient of deformation.
Definition: Remodeling.hpp:198
MoFEM::VolumeElementForcesAndSourcesCore
Volume finite element base.
Definition: VolumeElementForcesAndSourcesCore.hpp:26
BoneRemodeling::OpCalculateStress::doWork
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Definition: Remodeling.cpp:294
BoneRemodeling::OpAssmbleStressLhs_dRho::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:539
MoFEM::VolumeElementForcesAndSourcesCore::UserDataOperator
Definition: VolumeElementForcesAndSourcesCore.hpp:108
BoneRemodeling::OpAssmbleStressLhs_dF::diffDiff
FTensor::Tensor2< double, 3, 3 > diffDiff
Definition: Remodeling.hpp:519
EntData
EntitiesFieldData::EntData EntData
Definition: child_and_parent.cpp:37
field_name
constexpr auto field_name
Definition: poisson_2d_homogeneous.cpp:13
FTensor::Index
Definition: Index.hpp:23
BoneRemodeling::OpAssmbleStressRhs::OpAssmbleStressRhs
OpAssmbleStressRhs(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:814
MoFEM::determinantTensor3by3
static auto determinantTensor3by3(T &t)
Calculate the determinant of a 3x3 matrix or a tensor of rank 2.
Definition: Templates.hpp:1540
BoneRemodeling::OpCalculateStressTangentWithAdolc::OpCalculateStressTangentWithAdolc
OpCalculateStressTangentWithAdolc(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:382
BoneRemodeling::Remodeling::solveDM
MoFEMErrorCode solveDM()
Solve problem set up in DM.
Definition: Remodeling.cpp:1863
Range
BoneRemodeling::OpMassAndEnergyCalculation::OpMassAndEnergyCalculation
OpMassAndEnergyCalculation(const string &field_name, Remodeling::CommonData &common_data, Vec energy_vec, Vec mass_vec)
Definition: Remodeling.hpp:585
adouble
BoneRemodeling::Remodeling::CommonData::DataContainers::matPushedMaterialTangent
MatrixDouble matPushedMaterialTangent
Definition: Remodeling.hpp:196
BoneRemodeling::OpAssmbleStressLhs_dRho::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data)
Definition: Remodeling.cpp:1316
BoneRemodeling::OpCalculateStress::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:359
BoneRemodeling::Remodeling::CommonData::pSi_ref
double pSi_ref
reference free energy
Definition: Remodeling.hpp:154
BoneRemodeling::Remodeling::CommonData::feLhs
boost::shared_ptr< Fe > feLhs
FE to make left hand side.
Definition: Remodeling.hpp:130
BoneRemodeling::OpPostProcStress::mapGaussPts
std::vector< EntityHandle > & mapGaussPts
Definition: Remodeling.hpp:379
BoneRemodeling::Remodeling::CommonData::R0
double R0
mass conduction coefficient
Definition: Remodeling.hpp:155
PostProcVolumeOnRefinedMesh
Post processing.
Definition: PostProcOnRefMesh.hpp:955
BoneRemodeling::Remodeling::addElements
MoFEMErrorCode addElements()
Set and add finite elements.
Definition: Remodeling.cpp:1694
BoneRemodeling::MonitorPostProc::postProc
PostProcVolumeOnRefinedMesh postProc
Definition: Remodeling.hpp:557
BoneRemodeling::MonitorPostProc::iNit
bool iNit
Definition: Remodeling.hpp:563
BoneRemodeling::MonitorPostProc::mField
MoFEM::Interface & mField
Definition: Remodeling.hpp:555
BoneRemodeling::Remodeling::CommonData::DataContainers::matP
MatrixDouble matP
1st Piola stress
Definition: Remodeling.hpp:191
BoneRemodeling::Remodeling::CommonData::elasticMaterialsPtr
boost::shared_ptr< ElasticMaterials > elasticMaterialsPtr
Definition: Remodeling.hpp:141
BoneRemodeling::Remodeling::CommonData::getCFromDensityDiff
double getCFromDensityDiff(const double &rho)
Definition: Remodeling.cpp:225
BoneRemodeling::Remodeling::Fe::getRule
int getRule(int order)
Set integrate rule.
Definition: Remodeling.hpp:46
BoneRemodeling::Remodeling::CommonData::getParameters
MoFEMErrorCode getParameters()
Definition: Remodeling.cpp:62
BoneRemodeling::Remodeling::CommonData::oRder
int oRder
Definition: Remodeling.hpp:122
CommonData
Definition: continuity_check_on_skeleton_with_simple_2d_for_h1.cpp:22
BoneRemodeling::Remodeling::CommonData::dm
DM dm
Discretization manager.
Definition: Remodeling.hpp:127
BoneRemodeling::Remodeling::CommonData::tEts_all
Range tEts_all
Definition: Remodeling.hpp:165
mu
double mu
Definition: dynamic_first_order_con_law.cpp:98
lambda
static double lambda
Definition: incompressible_elasticity.cpp:199
BoneRemodeling::OpMassAndEnergyCalculation::doWork
MoFEMErrorCode doWork(int row_side, EntityType row_type, DataForcesAndSourcesCore::EntData &row_data)
Definition: Remodeling.cpp:1947
EigenMatrix::Vec
const FTensor::Tensor2< T, Dim, Dim > Vec
Definition: MatrixFunction.hpp:66
BoneRemodeling::OpAssmbleRhoRhs::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:456
BoneRemodeling::Remodeling::CommonData::DataContainers::matInvF
MatrixDouble matInvF
inverse of deformation gradient
Definition: Remodeling.hpp:199
BoneRemodeling::Remodeling::CommonData::m
double m
algorithmic exponent [-]
Definition: Remodeling.hpp:147
MoFEM::Types::VectorDouble
UBlasVector< double > VectorDouble
Definition: Types.hpp:68
BoneRemodeling::OpPostProcStress::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:377
BoneRemodeling::OpCalculateStressTangentWithAdolc::vecC
VectorDouble vecC
Definition: Remodeling.hpp:419
OpCalculateStress
Definition: HookeElement.hpp:153
BoneRemodeling::OpAssmbleRhoLhs_dF::OpAssmbleRhoLhs_dF
OpAssmbleRhoLhs_dF(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:1066
BoneRemodeling::Remodeling::CommonData::A
Mat A
Definition: Remodeling.hpp:119
BoneRemodeling::Remodeling::CommonData::DataContainers::matS
MatrixDouble matS
2nd Piola stress
Definition: Remodeling.hpp:190
BoneRemodeling::Remodeling::CommonData::tAg
const int tAg
Definition: Remodeling.hpp:178
MoFEM::Types::BitRefLevel
std::bitset< BITREFLEVEL_SIZE > BitRefLevel
Bit structure attached to each entity identifying to what mesh entity is attached.
Definition: Types.hpp:40
BoneRemodeling::Remodeling::CommonData::DataContainers::vecRhoDt
VectorDouble vecRhoDt
Time derivative of density.
Definition: Remodeling.hpp:201
MoFEMFunctionBeginHot
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:453
BoneRemodeling::Remodeling::CommonData::DataContainers::matMaterialTangent
MatrixDouble matMaterialTangent
Definition: Remodeling.hpp:193
BoneRemodeling::OpAssmbleStressLhs_dF::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data)
Definition: Remodeling.cpp:1153
BoneRemodeling::OpPostProcStress::doWork
MoFEMErrorCode doWork(int side, EntityType type, DataForcesAndSourcesCore::EntData &data)
Definition: Remodeling.cpp:567
BoneRemodeling::Remodeling::CommonData::aPsi
adouble aPsi
Definition: Remodeling.hpp:174
BoneRemodeling::OpAssmbleStressLhs_dF::OpAssmbleStressLhs_dF
OpAssmbleStressLhs_dF(Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:1145
MonitorPostProc
Definition: nonlinear_dynamics.cpp:30
BoneRemodeling::Remodeling::CommonData::c
double c
density evolution (growth) velocity [d/m^2]
Definition: Remodeling.hpp:146
BoneRemodeling::Remodeling::CommonData::data
DataContainers data
Definition: Remodeling.hpp:203
BoneRemodeling::OpAssmbleStressLhs_dF::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:516
BoneRemodeling::Remodeling::addElementsTestingDensity
MoFEMErrorCode addElementsTestingDensity()
(Testing only) Set finite element to run mass transport problem only
MoFEMFunctionReturn
#define MoFEMFunctionReturn(a)
Last executable line of each PETSc function used for error handling. Replaces return()
Definition: definitions.h:429
BoneRemodeling::OpGetRhoTimeDirevative::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:335
BoneRemodeling::OpAssmbleStressLhs_dRho::locK_P_RHO
MatrixDouble locK_P_RHO
Definition: Remodeling.hpp:540
BoneRemodeling::Remodeling::CommonData::preProcLhs
boost::shared_ptr< FePrePostProcessLhs > preProcLhs
Definition: Remodeling.hpp:133
BoneRemodeling::Remodeling::FePrePostProcessLhs::postProcess
MoFEMErrorCode postProcess()
Definition: Remodeling.hpp:96
BoneRemodeling::OpAssmbleRhoLhs_dF::doWork
MoFEMErrorCode doWork(int row_side, int col_side, EntityType row_type, EntityType col_type, DataForcesAndSourcesCore::EntData &row_data, DataForcesAndSourcesCore::EntData &col_data)
Definition: Remodeling.cpp:1074
BoneRemodeling::OpAssmbleRhoRhs::nF
VectorDouble nF
Vector of the right hand side (internal forces)
Definition: Remodeling.hpp:457
BoneRemodeling::OpPostProcStress::OpPostProcStress
OpPostProcStress(moab::Interface &post_proc_mesh, std::vector< EntityHandle > &map_gauss_pts, Remodeling::CommonData &common_data)
Definition: Remodeling.cpp:550
BoneRemodeling::MonitorPostProc::commonData
Remodeling::CommonData & commonData
Definition: Remodeling.hpp:556
MoFEMFunctionBegin
#define MoFEMFunctionBegin
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
Definition: definitions.h:359
BoneRemodeling::Remodeling::CommonData::preProcRhs
boost::shared_ptr< FePrePostProcessRhs > preProcRhs
Definition: Remodeling.hpp:132
MoFEM::ForcesAndSourcesCore::UserDataOperator::OPROW
@ OPROW
operator doWork function is executed on FE rows
Definition: ForcesAndSourcesCore.hpp:567