Skip to content
Snippets Groups Projects
Commit 91e0bde7 authored by Kevin Spilker's avatar Kevin Spilker
Browse files

cleaning + assign corrected names to methods

parent e589ba6f
No related branches found
No related tags found
1 merge request!374New impl cluster
......@@ -285,8 +285,14 @@ void mlawGenericTFAMaterialLaws::setTFAMethod(int TFAMethodNum, int dim, int cor
else if(TFAMethodNum == 2)
{
polarization = true;
Msg::Info("IncrementalTangentTFAPolarization is used !!!");
_reductionModel = new IncrementalTangentTFAPolarization(solverType, dim, correction, withFrame, polarization, tag);
Msg::Info("IncrementalTangentHS is used !!!");
_reductionModel = new IncrementalTangentHS(solverType, dim, correction, withFrame, polarization, tag);
}
else if(TFAMethodNum == 3)
{
polarization = true;
Msg::Info("IncrementalTangentPFA is used !!!");
_reductionModel = new IncrementalTangentPFA(solverType, dim, correction, withFrame, polarization, tag);
}
else
{
......
......@@ -612,7 +612,7 @@ void ReductionTFA::preallocateSystem(const ClusteringData *q0, const Clustering
}
else if(_polarization)
{
getBiLinearTermPolarization(icl,q0,q1, othersId, m);
getBiLinearTermHS(icl,q0,q1, othersId, m);
}
else
{
......@@ -868,7 +868,7 @@ void ReductionTFA::assembleRes(const ClusteringData *q0, const ClusteringData *
{
for (int icl = 0; icl < nbClusters; icl++)
{
getLinearTermPolarization(icl,q0,q1,r);
getLinearTermHS(icl,q0,q1,r);
std::vector<Dof> R;
getKeys(icl,R);
for (int j=0; j<R.size(); j++)
......@@ -944,7 +944,7 @@ void ReductionTFA::assembleDresDu(const ClusteringData *q0, const ClusteringDat
{
for (int icl = 0; icl < nbClusters; icl++)
{
getBiLinearTermPolarization(icl,q0,q1,othersId,Ke);
getBiLinearTermHS(icl,q0,q1,othersId,Ke);
//Ke.print("Ke");
//
std::vector<Dof> R, C;
......@@ -1496,7 +1496,125 @@ void ReductionTFA::getTangentTerm(int clusterId, const ClusteringData *q0, cons
};
void ReductionTFA::getLinearTermPolarization(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const
void ReductionTFA::getLinearTermHS(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const
{
int nbClusters = _clusteringData->getTotalNumberOfClusters();
const STensor3& eps1i = q1->getConstRefToStrain(clusterId);
const STensor3& eps0i = q0->getConstRefToStrain(clusterId);
const STensor3& macroeps1 = q1->getConstRefToMacroStrain();
const STensor3& macroeps0 = q0->getConstRefToMacroStrain();
static STensor3 resTen;
resTen = eps1i;
resTen -= eps0i;
resTen -= macroeps1;
resTen += macroeps0;
const STensor43& C0iso = _clusteringData->getReferenceStiffnessIso();
double G0 = C0iso(0,1,0,1);
const double& Gtan = q1->getConstRefToTangentShearModulus();
for (int jcl =0; jcl < nbClusters; jcl++)
{
const STensor43 &Dij = getClusterInteractionTensor(clusterId,jcl);
const STensor3& sig1j = q1->getConstRefToStress(jcl);
const STensor3& eps1j = q1->getConstRefToStrain(jcl);
const STensor3& sig0j = q0->getConstRefToStress(jcl);
const STensor3& eps0j = q0->getConstRefToStrain(jcl);
STensor3 dsigj(sig1j);
dsigj -= sig0j;
STensor3 depsj(eps1j);
depsj -= eps0j;
STensor3 fac;
fac = dsigj;
fac *= G0/Gtan;
STensorOperation::multSTensor43STensor3Add(C0iso,depsj,-1.,fac);
STensorOperation::multSTensor43STensor3Add(Dij,fac,-1.,resTen);
}
STensorOperation::fromSTensor3ToFullVector(resTen,res);
};
void ReductionTFA::getBiLinearTermHS(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const
{
int nbClusters = _clusteringData->getTotalNumberOfClusters();
othersId.resize(nbClusters);
for (int j=0; j< nbClusters; j++)
{
othersId[j] = j;
}
dres.resize(6,6*nbClusters,true);
double vtot;
vtot = totalVolume();
for (int jcl=0; jcl< nbClusters; jcl++)
{
static STensor43 J_ij;
getJacHS_rs(clusterId,jcl,q0,q1,J_ij);
static fullMatrix<double> J_ij_matrix;
STensorOperation::fromSTensor43ToFullMatrix(J_ij,J_ij_matrix);
for (int row=0; row<6; row++)
{
for (int col=0; col<6; col++)
{
dres(row, col+6*jcl) += J_ij_matrix(row,col);
}
}
}
}
void ReductionTFA::getJacHS_rs(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const
{
if (r==s)
{
STensorOperation::unity(Jac_rs);
}
else
{
STensorOperation::zero(Jac_rs);
}
const STensor3& macroeps1 = q1->getConstRefToMacroStrain();
const STensor43& C0iso = _clusteringData->getReferenceStiffnessIso();
double G0 = C0iso(0,1,0,1);
const double& Gtan = q1->getConstRefToTangentShearModulus();
const STensor43 &Drs = getClusterInteractionTensor(r,s);
const STensor43 &Calgs = q1->getConstRefToTangent(s);
const STensor3& sig1s = q1->getConstRefToStress(s);
const STensor3& sig0s = q0->getConstRefToStress(s);
STensor3 dsigs(sig1s);
dsigs -= sig0s;
STensor43 fac;
fac = Calgs;
fac *= G0/Gtan;
fac -= C0iso;
STensorOperation::multSTensor43Add(Drs,fac,-1.,Jac_rs);
/*STensor3 dGtandeps;
dtangentShearModulusOveralldeps(q0,q1,s,dGtandeps);
STensor3 fac2_part;
int nbClusters = _clusteringData->getTotalNumberOfClusters();
for (int p =0; p < nbClusters; p++)
{
const STensor43 &Drp = getClusterInteractionTensor(r,p);
const STensor3& sig1p = q1->getConstRefToStress(p);
const STensor3& sig0p = q0->getConstRefToStress(p);
STensor3 Dsigp(sig1p);
Dsigp -= sig0p;
STensorOperation::multSTensor43STensor3Add(Drp,Dsigp,1.,fac2_part);
}
fac2_part *= G0/(Gtan*Gtan);
STensorOperation::prodAdd(fac2_part,dGtandeps,1.,Jac_rs);*/
}
void ReductionTFA::getLinearTermPFA(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const
{
int nbClusters = _clusteringData->getTotalNumberOfClusters();
......@@ -1560,17 +1678,15 @@ void ReductionTFA::getLinearTermPolarization(int clusterId, const ClusteringData
//STensorOperation::multSTensor43STensor3(prefac,dsigj,fac);
STensorOperation::multSTensor43STensor3Add(C0iso,depsj,-1.,fac);
//STensorOperation::multSTensor43(C0,C_inv,prefac);
//STensorOperation::multSTensor43STensor3(prefac,dsigj,fac);
//STensorOperation::multSTensor43STensor3Add(C0,depsj,-1.,fac);
STensorOperation::multSTensor43STensor3Add(Dij,fac,-1.,resTen);
}
STensorOperation::fromSTensor3ToFullVector(resTen,res);
};
void ReductionTFA::getBiLinearTermPolarization(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const
void ReductionTFA::getBiLinearTermPFA(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const
{
int nbClusters = _clusteringData->getTotalNumberOfClusters();
othersId.resize(nbClusters);
......@@ -1586,7 +1702,7 @@ void ReductionTFA::getBiLinearTermPolarization(int clusterId, const ClusteringDa
for (int jcl=0; jcl< nbClusters; jcl++)
{
static STensor43 J_ij;
getJacPolarization_rs(clusterId,jcl,q0,q1,J_ij);
getJacHS_rs(clusterId,jcl,q0,q1,J_ij);
static fullMatrix<double> J_ij_matrix;
STensorOperation::fromSTensor43ToFullMatrix(J_ij,J_ij_matrix);
for (int row=0; row<6; row++)
......@@ -1598,7 +1714,7 @@ void ReductionTFA::getBiLinearTermPolarization(int clusterId, const ClusteringDa
}
}
}
void ReductionTFA::getJacPolarization_rs(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const
void ReductionTFA::getJacPFA_rs(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const
{
if (r==s)
{
......@@ -1674,6 +1790,7 @@ void ReductionTFA::getJacPolarization_rs(int r, int s, const ClusteringData *q0,
STensorOperation::prodAdd(fac2_part,dGtandeps,1.,Jac_rs);*/
}
void ReductionTFA::elasticStiffnessHom(STensor43& CelHom) const
{
int nbClusters = _clusteringData->getTotalNumberOfClusters();
......@@ -2227,20 +2344,18 @@ void IncrementalTangentTFAWithFrame::localConstitutive(const STensor3& F0, const
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
IncrementalTangentTFAPolarization::IncrementalTangentTFAPolarization(int solverType, int dim, int correction, bool withFrame, bool polarization, int tag): ReductionTFA(solverType, dim, correction, withFrame, polarization, tag){}
IncrementalTangentTFAPolarization::~IncrementalTangentTFAPolarization(){}
IncrementalTangentHS::IncrementalTangentHS(int solverType, int dim, int correction, bool withFrame, bool polarization, int tag): ReductionTFA(solverType, dim, correction, withFrame, polarization, tag){}
IncrementalTangentHS::~IncrementalTangentHS(){}
void IncrementalTangentTFAPolarization::localConstitutive(const STensor3& F0, const STensor3& Fn, const ClusteringData *q0, ClusteringData *q1)
void IncrementalTangentHS::localConstitutive(const STensor3& F0, const STensor3& Fn, const ClusteringData *q0, ClusteringData *q1)
{
int nbClusters = _clusteringData->getTotalNumberOfClusters();
const STensor43& C0 = _clusteringData->getReferenceStiffness();
const STensor43& C0iso = _clusteringData->getReferenceStiffnessIso();
double G0 = C0iso(0,1,0,1);
double k0 = C0iso(0,0,0,0) - 4./3.*G0;
//
const STensor3& eps0 = q0->getConstRefToMacroStrain();
STensor3& eps1 = q1->getRefToMacroStrain();
for (int i=0; i<3; i++)
......@@ -2260,15 +2375,88 @@ void IncrementalTangentTFAPolarization::localConstitutive(const STensor3& F0, co
double DepsEq = TFANumericTools::EquivalentStrain(Deps);
const STensor3& P0hom = q0->getConstRefToMacroStress();
const STensor3& epsEigMacro0 = q0->getConstRefToMacroEigenStrain();
STensor3& Phom = q1->getRefToMacroStress();
STensor3& epsEigMacro = q1->getRefToMacroEigenStrain();
STensor3 PtrHom;
elasticTotalTrialStressHom(q1,PtrHom);
// local constitutive behavior
static STensor3 Isecond(1.);
for (int icl =0; icl < nbClusters; icl++)
{
const materialLaw *law = getLawForCluster(icl);
static STensor3 F0i, F1i;
F0i = q0->getConstRefToStrain(icl);
F1i = q1->getConstRefToStrain(icl);
F0i += Isecond;
F1i += Isecond;
STensor3& P1i = q1->getRefToStress(icl);
STensor43& Tangenti = q1->getRefToTangent(icl);
STensor43& depsEig1depsi = q1->getRefTodEigenStraindStrain(icl);
STensor3& epsEig1i = q1->getRefToEigenStrain(icl);
//
const IPVariable* ipv0i = q0->getConstRefToIPv(icl);
IPVariable* ipv1i = q1->getRefToIPv(icl);
if(_clusterIncOri)
{
const fullVector<double>& euler_i = getClusterMeanFiberOrientation(icl);
law->constitutiveTFA_incOri(F0i,F1i,euler_i,P1i,ipv0i,ipv1i,Tangenti,epsEig1i,depsEig1depsi);
}
else
{
law->constitutiveTFA(F0i,F1i,P1i,ipv0i,ipv1i,Tangenti,epsEig1i,depsEig1depsi);
}
}
STensor3 DPhom;
double DsigEqHom;
q1->computeHomogenizedStress(Phom);
DPhom = Phom;
DPhom -= P0hom;
DsigEqHom = TFANumericTools::EquivalentStress(DPhom);
STensor3 PtrHom_true;
STensorOperation::multSTensor43STensor3(C0,eps1,PtrHom_true);
double& Gel = q1->getRefToElasticShearModulus();
Gel = G0;
double& Gtan = q1->getRefToTangentShearModulus();
Gtan = G0;
if(DepsEq>1.e-10)
{
Gtan = DsigEqHom/(3.*DepsEq);
}
if(Gtan < 5.){Gtan=5.;};
};
IncrementalTangentPFA::IncrementalTangentPFA(int solverType, int dim, int correction, bool withFrame, bool polarization, int tag): ReductionTFA(solverType, dim, correction, withFrame, polarization, tag){}
IncrementalTangentPFA::~IncrementalTangentPFA(){}
void IncrementalTangentPFA::localConstitutive(const STensor3& F0, const STensor3& Fn, const ClusteringData *q0, ClusteringData *q1)
{
int nbClusters = _clusteringData->getTotalNumberOfClusters();
const STensor43& C0 = _clusteringData->getReferenceStiffness();
const STensor43& C0iso = _clusteringData->getReferenceStiffnessIso();
double G0 = C0iso(0,1,0,1);
double k0 = C0iso(0,0,0,0) - 4./3.*G0;
//
const STensor3& eps0 = q0->getConstRefToMacroStrain();
STensor3& eps1 = q1->getRefToMacroStrain();
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
eps1(i,j) = (Fn(i,j)+Fn(j,i))*0.5;
}
}
eps1(0,0) -= 1.;
eps1(1,1) -= 1.;
eps1(2,2) -= 1.;
double epsEq = TFANumericTools::EquivalentStrain(eps1);
STensor3 Deps;
Deps = eps1;
Deps -= eps0;
double DepsEq = TFANumericTools::EquivalentStrain(Deps);
const STensor3& P0hom = q0->getConstRefToMacroStress();
STensor3& Phom = q1->getRefToMacroStress();
// local constitutive behavior
static STensor3 Isecond(1.);
......@@ -2287,7 +2475,6 @@ void IncrementalTangentTFAPolarization::localConstitutive(const STensor3& F0, co
//
const IPVariable* ipv0i = q0->getConstRefToIPv(icl);
IPVariable* ipv1i = q1->getRefToIPv(icl);
STensor43& Secanti = q1->getRefToSecant(icl);
if(_clusterIncOri)
{
const fullVector<double>& euler_i = getClusterMeanFiberOrientation(icl);
......@@ -2300,35 +2487,19 @@ void IncrementalTangentTFAPolarization::localConstitutive(const STensor3& F0, co
}
STensor3 DPhom,DepsEigMacro;
double sigEqHom,DsigEqHom;
double DepsEigEqHom;
double DsigEqHom;
q1->computeHomogenizedStress(Phom);
//sigEqHom = TFANumericTools::EquivalentStress(Phom);
DPhom = Phom;
DPhom -= P0hom;
DsigEqHom = TFANumericTools::EquivalentStress(DPhom);
//STensor3 sigEigMacro;
//sigEigMacro = Phom;
//sigEigMacro -= PtrHom;
//STensor43 SelHom;
//STensorOperation::inverseSTensor43(C0,SelHom);
//STensorOperation::multSTensor43STensor3(SelHom,sigEigMacro,epsEigMacro);
//epsEigMacro *= -1.;
//DepsEigMacro = epsEigMacro;
//DepsEigMacro -= epsEigMacro0;
//DepsEigEqHom = TFANumericTools::EquivalentStrain(DepsEigMacro);
double& Gel = q1->getRefToElasticShearModulus();
Gel = G0;
double& Gtan = q1->getRefToTangentShearModulus();
Gtan = G0;
if(DepsEq>1.e-10)
{
//DepsEigEqHom = DepsEq - DsigEqHom/(3.*G0);
//Gtan *= (1.-DepsEigEqHom/DepsEq);
Gtan = DsigEqHom/(3.*DepsEq);
}
if(Gtan < 5){Gtan=5;};
......@@ -2347,6 +2518,7 @@ void IncrementalTangentTFAPolarization::localConstitutive(const STensor3& F0, co
};
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
HierarchicalReductionTFA::HierarchicalReductionTFA(int solverType, int dim, int correction, bool withFrame, bool polarization, int tag):
ReductionTFA(solverType, dim, 0, false, polarization, tag), _sysHierarchical(NULL) {}
......@@ -3433,7 +3605,7 @@ void HierarchicalReductionTFA::getJac_rsHierarchical(int r, int s, const Cluster
STensorOperation::multSTensor43Add(Drs,depsEig1dstrains,1.,Jac_rs);
}
void HierarchicalReductionTFA::getLinearTermPolarizationHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const
void HierarchicalReductionTFA::getLinearTermHSHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const
{
int nbClusters = q0->clustersNb;
......@@ -3482,7 +3654,7 @@ void HierarchicalReductionTFA::getLinearTermPolarizationHierarchical(int cluster
}
STensorOperation::fromSTensor3ToFullVector(resTen,res);
};
void HierarchicalReductionTFA::getBiLinearTermPolarizationHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres)
void HierarchicalReductionTFA::getBiLinearTermHSHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres)
const
{
int nbClusters = q0->clustersNb;
......@@ -3499,7 +3671,7 @@ const
for (int jcl=0; jcl< nbClusters; jcl++)
{
static STensor43 J_ij;
getJacPolarization_rsHierarchical(clusterId,jcl,q0,q1,J_ij);
getJacHS_rsHierarchical(clusterId,jcl,q0,q1,J_ij);
static fullMatrix<double> J_ij_matrix;
STensorOperation::fromSTensor43ToFullMatrix(J_ij,J_ij_matrix);
for (int row=0; row<6; row++)
......@@ -3511,7 +3683,7 @@ const
}
}
}
void HierarchicalReductionTFA::getJacPolarization_rsHierarchical(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const
void HierarchicalReductionTFA::getJacHS_rsHierarchical(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const
{
std::vector<int> clHostIDs = q0->upperClusterIDs;
......
......@@ -23,8 +23,8 @@ class nonLinearSystemPETSc;
class modelReduction
{
public:
enum ReductionMethod{TFA_IncrementalTangent=0, TFA_IncrementalTangentWithFrame, TFA_IncrementalTangentPolarization,
TFA_HierarchicalIncrementalTangent, TFA_HierarchicalIncrementalTangentMixed};
enum ReductionMethod{TFA_IncrementalTangent=0, TFA_IncrementalTangentWithFrame, HS_IncrementalTangent, PFA_IncrementalTangent,
TFA_HierarchicalIncrementalTangent};
#ifndef SWIG
public:
modelReduction(){}
......@@ -174,9 +174,13 @@ class ReductionTFA: public modelReduction
//////////////////////////////////////////////////////////////////////////////////////////
virtual void getJac_rs(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const;
virtual void getLinearTermPolarization(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const;
virtual void getBiLinearTermPolarization(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const;
virtual void getJacPolarization_rs(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const;
virtual void getLinearTermHS(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const;
virtual void getBiLinearTermHS(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const;
virtual void getJacHS_rs(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const;
virtual void getLinearTermPFA(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const;
virtual void getBiLinearTermPFA(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const;
virtual void getJacPFA_rs(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const;
virtual void elasticStiffnessHom(STensor43& CelHom) const;
virtual void elasticTotalTrialStressHom(const ClusteringData *q, STensor3& PtrHom) const;
......@@ -234,13 +238,25 @@ class IncrementalTangentTFAWithFrame : public ReductionTFA
virtual void localConstitutive(const STensor3& F0, const STensor3& Fn, const ClusteringData *q0, ClusteringData *q1);
#endif // SWIG
};
class IncrementalTangentTFAPolarization : public ReductionTFA
class IncrementalTangentHS : public ReductionTFA
{
public:
IncrementalTangentHS(int solverType, int dim, int correction, bool withFrame, bool polarization, int tag=1000);
#ifndef SWIG
virtual ~IncrementalTangentHS();
virtual ReductionMethod getMethod() const {return modelReduction::HS_IncrementalTangent;};
protected:
virtual void localConstitutive(const STensor3& F0, const STensor3& Fn, const ClusteringData *q0, ClusteringData *q1);
#endif // SWIG
};
class IncrementalTangentPFA : public ReductionTFA
{
public:
IncrementalTangentTFAPolarization(int solverType, int dim, int correction, bool withFrame, bool polarization, int tag=1000);
IncrementalTangentPFA(int solverType, int dim, int correction, bool withFrame, bool polarization, int tag=1000);
#ifndef SWIG
virtual ~IncrementalTangentTFAPolarization();
virtual ReductionMethod getMethod() const {return modelReduction::TFA_IncrementalTangentPolarization;};
virtual ~IncrementalTangentPFA();
virtual ReductionMethod getMethod() const {return modelReduction::PFA_IncrementalTangent;};
protected:
virtual void localConstitutive(const STensor3& F0, const STensor3& Fn, const ClusteringData *q0, ClusteringData *q1);
......@@ -333,9 +349,9 @@ class HierarchicalReductionTFA : public ReductionTFA
virtual void getBiLinearTermHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const;
virtual void getJac_rsHierarchical(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const;
virtual void getLinearTermPolarizationHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const;
virtual void getBiLinearTermPolarizationHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const;
virtual void getJacPolarization_rsHierarchical(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const;
virtual void getLinearTermHSHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, fullVector<double>& res) const;
virtual void getBiLinearTermHSHierarchical(int clusterId, const ClusteringData *q0, const ClusteringData *q1, std::vector<int>& othersId, fullMatrix<double>& dres) const;
virtual void getJacHS_rsHierarchical(int r, int s, const ClusteringData *q0, const ClusteringData *q1, STensor43& Jac_rs) const;
void initSolveHierarchical(const ClusteringData *q0, const ClusteringData *q1, nonLinearSystemPETSc<double>* &NLsystem);
void preallocateSystemHierarchical(const ClusteringData *q0, const ClusteringData *q1, nonLinearSystemPETSc<double>* &NLsystem);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment