Skip to content
Snippets Groups Projects
Commit 9fe3af74 authored by Julien Leclerc's avatar Julien Leclerc
Browse files

create pointer to mlaw coupled poroous

parent c346afd1
No related branches found
No related tags found
2 merge requests!147Coal jl8,!133Coal jl8
...@@ -181,7 +181,8 @@ ThomasonCoalescenceLaw::ThomasonCoalescenceLaw(const int num, const double lamda ...@@ -181,7 +181,8 @@ ThomasonCoalescenceLaw::ThomasonCoalescenceLaw(const int num, const double lamda
CoalescenceLaw(num,true), CoalescenceLaw(num,true),
_initialVoidSpacingRatio(lamda0),_kappa(kappa), _alpha(0.1),_beta(1.24), _initialVoidSpacingRatio(lamda0),_kappa(kappa), _alpha(0.1),_beta(1.24),
_acceleratedRate(1.), _acceleratedRate(1.),
_checkWithNormal(false), _onlyInterface(false) _checkWithNormal(false), _onlyInterface(false),
_bulkCoupledPorousLaw(NULL)
{ {
_ChiRegularizedFunction = new twoVariableExponentialSaturationScalarFunction(0.99,0.999); _ChiRegularizedFunction = new twoVariableExponentialSaturationScalarFunction(0.99,0.999);
}; };
...@@ -192,7 +193,8 @@ ThomasonCoalescenceLaw::ThomasonCoalescenceLaw(const int num, const double lamda ...@@ -192,7 +193,8 @@ ThomasonCoalescenceLaw::ThomasonCoalescenceLaw(const int num, const double lamda
CoalescenceLaw(num,true), CoalescenceLaw(num,true),
_initialVoidSpacingRatio(lamda0), _kappa(kappa), _alpha(0.1), _beta(1.24), _initialVoidSpacingRatio(lamda0), _kappa(kappa), _alpha(0.1), _beta(1.24),
_acceleratedRate(accRate), _acceleratedRate(accRate),
_checkWithNormal(withNormal), _onlyInterface(onlyInt) _checkWithNormal(withNormal), _onlyInterface(onlyInt),
_bulkCoupledPorousLaw(NULL)
{ {
_ChiRegularizedFunction = new twoVariableExponentialSaturationScalarFunction(0.99,0.999); _ChiRegularizedFunction = new twoVariableExponentialSaturationScalarFunction(0.99,0.999);
}; };
...@@ -205,10 +207,10 @@ ThomasonCoalescenceLaw::ThomasonCoalescenceLaw(const ThomasonCoalescenceLaw& src ...@@ -205,10 +207,10 @@ ThomasonCoalescenceLaw::ThomasonCoalescenceLaw(const ThomasonCoalescenceLaw& src
_checkWithNormal(src._checkWithNormal), _onlyInterface(src._onlyInterface) _checkWithNormal(src._checkWithNormal), _onlyInterface(src._onlyInterface)
{ {
_ChiRegularizedFunction = NULL; _ChiRegularizedFunction = NULL;
if (src._ChiRegularizedFunction != NULL) if (src._ChiRegularizedFunction != NULL){_ChiRegularizedFunction = src._ChiRegularizedFunction->clone();}
{
_ChiRegularizedFunction = src._ChiRegularizedFunction->clone(); _bulkCoupledPorousLaw = NULL;
} if (src._bulkCoupledPorousLaw != NULL){_bulkCoupledPorousLaw = src._bulkCoupledPorousLaw;}
}; };
...@@ -218,6 +220,7 @@ ThomasonCoalescenceLaw::~ThomasonCoalescenceLaw() ...@@ -218,6 +220,7 @@ ThomasonCoalescenceLaw::~ThomasonCoalescenceLaw()
delete _ChiRegularizedFunction; delete _ChiRegularizedFunction;
_ChiRegularizedFunction = NULL; _ChiRegularizedFunction = NULL;
} }
_bulkCoupledPorousLaw = NULL;
} }
...@@ -232,6 +235,10 @@ void ThomasonCoalescenceLaw::setThomasonCoefficient(const double a, const double ...@@ -232,6 +235,10 @@ void ThomasonCoalescenceLaw::setThomasonCoefficient(const double a, const double
_beta = b; _beta = b;
}; };
void ThomasonCoalescenceLaw::setCoupledPorousLaw(mlawNonLocalPorousCoupledLaw* law){
_bulkCoupledPorousLaw = law;
}
void ThomasonCoalescenceLaw::createIPVariable(const double f0, IPCoalescence* &qCoal) const void ThomasonCoalescenceLaw::createIPVariable(const double f0, IPCoalescence* &qCoal) const
{ {
if(qCoal != NULL) delete qCoal; if(qCoal != NULL) delete qCoal;
......
...@@ -17,7 +17,10 @@ ...@@ -17,7 +17,10 @@
#include "STensor43.h" #include "STensor43.h"
#include "STensor63.h" #include "STensor63.h"
#include "scalarFunction.h" #include "scalarFunction.h"
class IPNonLocalPorosity; class IPNonLocalPorosity;
class mlawNonLocalPorousCoupledLaw;
#endif // SWIG #endif // SWIG
...@@ -156,6 +159,9 @@ class ThomasonCoalescenceLaw : public CoalescenceLaw ...@@ -156,6 +159,9 @@ class ThomasonCoalescenceLaw : public CoalescenceLaw
// =false: criterion is based on maximal eigen value // =false: criterion is based on maximal eigen value
bool _onlyInterface; // =true: check coalescence only on interface bool _onlyInterface; // =true: check coalescence only on interface
// Offset managamement
mlawNonLocalPorousCoupledLaw* _bulkCoupledPorousLaw; // Pointer to access to CftOffsetMethod stored in mlawNonLocalPorousCoupledLaw
public: public:
// Constructors & destructor // Constructors & destructor
ThomasonCoalescenceLaw(const int num, const double lamda0, const double kappa); ThomasonCoalescenceLaw(const int num, const double lamda0, const double kappa);
...@@ -163,6 +169,7 @@ class ThomasonCoalescenceLaw : public CoalescenceLaw ...@@ -163,6 +169,7 @@ class ThomasonCoalescenceLaw : public CoalescenceLaw
const bool withNormal=false, const bool nlcheck = true, const bool onlyInt = false); const bool withNormal=false, const bool nlcheck = true, const bool onlyInt = false);
void setRegularizedFunction(const scalarFunction& f); void setRegularizedFunction(const scalarFunction& f);
void setThomasonCoefficient(const double a, const double b); void setThomasonCoefficient(const double a, const double b);
void setCoupledPorousLaw(mlawNonLocalPorousCoupledLaw* law);
#ifndef SWIG #ifndef SWIG
ThomasonCoalescenceLaw(const ThomasonCoalescenceLaw& src); ThomasonCoalescenceLaw(const ThomasonCoalescenceLaw& src);
virtual ~ThomasonCoalescenceLaw(); virtual ~ThomasonCoalescenceLaw();
......
...@@ -103,7 +103,17 @@ void mlawNonLocalPorousCoupledLaw::setScatterredInitialPorosity(double f0min, do ...@@ -103,7 +103,17 @@ void mlawNonLocalPorousCoupledLaw::setScatterredInitialPorosity(double f0min, do
void mlawNonLocalPorousCoupledLaw::setCoalescenceLaw(const CoalescenceLaw& added_coalsLaw) void mlawNonLocalPorousCoupledLaw::setCoalescenceLaw(const CoalescenceLaw& added_coalsLaw)
{ {
// set coalescence law in:
// this law
mlawNonLocalPorosity::setCoalescenceLaw(added_coalsLaw); mlawNonLocalPorosity::setCoalescenceLaw(added_coalsLaw);
// check for the type of Coalescence law (only Thomason can be used)
ThomasonCoalescenceLaw* thomlaw = dynamic_cast<ThomasonCoalescenceLaw*>(_coalescenceLaw);
if (thomlaw == NULL){Msg::Fatal("mlawNonLocalPorousCoupledLaw::setCoalescenceLaw: The coalescence law is not a Thomason one");};
// set the pointer in Thomason law
thomlaw->setCoupledPorousLaw(this);
// in mlawCoales
_mlawCoales->setCoalescenceLaw(added_coalsLaw); _mlawCoales->setCoalescenceLaw(added_coalsLaw);
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment