Comments (3)
Small investigation to refine this will be taken up by @WPK4FEM @rfaasse
from kratos.
Refinement investigation start (work in progress)
Functions the GeoLinearElasticPlaneStrain2DLaw overrides:
public:
ConstitutiveLaw::Pointer Clone() const override;
bool RequiresInitializeMaterialResponse() override;
void InitializeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) override;
bool RequiresFinalizeMaterialResponse() override;
void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) override;
void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) override;
void GetLawFeatures(Features& rFeatures) override;
SizeType WorkingSpaceDimension() override;
SizeType GetStrainSize() const override;
bool IsIncremental() override;
bool& GetValue(const Variable<bool>& rThisVariable, bool& rValue) override;
protected:
void CalculateElasticMatrix(Matrix& C, ConstitutiveLaw::Parameters& rValues) override;
void CalculatePK2Stress(const Vector& rStrainVector,
Vector& rStressVector,
ConstitutiveLaw::Parameters& rValues) override;
Functions its base LinearPlaneStrainK0Law overrides:
public:
ConstitutiveLaw::Pointer Clone() const override;
void GetLawFeatures(Features& rFeatures) override;
SizeType WorkingSpaceDimension() override { return Dimension; };
SizeType GetStrainSize() const override { return VoigtSize; }
bool& GetValue(const Variable<bool>& rThisVariable, bool& rValue) override;
protected:
void CalculateElasticMatrix(Matrix& C, ConstitutiveLaw::Parameters& rValues) override;
void CalculatePK2Stress(const Vector& rStrainVector,
Vector& rStressVector,
ConstitutiveLaw::Parameters& rValues) override;
void CalculateCauchyGreenStrain(ConstitutiveLaw::Parameters& rValues, Vector& rStrainVector) override;
The only one the K0 version has, that the 2D version doesn't have is the CalculateCauchyGreenStrain
function. If it would have that function, we could move it in the inheritance structure to derive from GeoLinearElasticLaw directly. This should be relatively small effort, so we could look at the possibility of extending this class to have 3D functionality.
My first idea would be to take the following steps to get this done:
- Make sure the GeoLinearElasticPlaneStrain2DLaw does not derive from a K0 law anymore
- Identify the behavior that's dimension specific (should that be part of the refinement?)
- Create a policy we can inject into the GeoLinearElasticPlaneStrain2DLaw (which should then be renamed to something more generic)
- Capture the 2D and 3D behaviors in the policy, later on easily extendible to axisymmetric
- Register the laws (where both 2D and 3D are the same class, but get a different policy)
from kratos.
To be split by @rfaasse
from kratos.
Related Issues (20)
- [GeoMechanicsApplication] Extract a static utility function for the calculation of the Stiffness Matrix (K)
- [GeoMechanicsApplication][Thermal] Write the results of the initial stage to the output file HOT 2
- [Mapping] Map Vector/Matrix Variables HOT 6
- [Mapping] Map elemental/condition values HOT 1
- [CoSim] Incorrect residuals in `ConvergenceCriteria` HOT 4
- [GeoMechanicsApplication] Refactor Linear Elastic law to extract a policy for 2D behavior
- [GeoMechanicsApplication] Extract a static utility for VoigtVector
- [Core][IO] wrong output in vtk files when Point3D elements are present in model HOT 3
- [GeoMechanicsApplication] Investigate unstable 1D consolidation test
- [GeoMechanicsApplication] Cleaning of element variables structure
- Running Kratos HOT 5
- [GeoMechanicsApplication] Create backbone and unloading model with elastic unloading for trusses and interface elements
- [GeoMechanicsApplication] Convert piping interface element, to 1D line element HOT 1
- [GeoMechanicsApplication] Make `UPwBaseElement` a non-template class
- [GeoMechanicsApplication] Calculate integration coefficients prior to integration point loop
- [GeoMechanicsApplication] Creation of a backbone model for interface elements
- [GeoMechanicsApplication] Change the base class of `SmallStrainUPwDiffOrderElement` to `UPwBaseElement`
- [GeoMechanicsApplication] Investigate thermal simulation performance
- [General] Output no longer outputs the initial conditions (i.e. time = 0 ) HOT 1
- [GeoMechanicsApplication] Degrees of freedom should be freed in between stages HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kratos.