diff --git a/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.cpp b/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.cpp index 41948df31313b979ca8be5b6c0ef973c9142e747..cd4853611b7baf1923aeac8cdae21af3275cdd51 100644 --- a/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.cpp +++ b/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.cpp @@ -35,7 +35,7 @@ mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const int num, const double r if(pos_Mhmod1 !=0) Randnum +=1; if(pos_Mhmod2 !=0) Randnum +=1; if(pos_Mhexp !=0) Randnum +=1; - + if(pos_euler !=0) Randnum +=1; //allocate memory if random variable are required if (pos_euler != 0){ mallocvector(&_Euler_mean,3); @@ -43,15 +43,18 @@ mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const int num, const double r _Euler_mean[1] = euler1; _Euler_mean[2] = euler2; Reuler = init_RandF(_Euler_mean, _Ldomain, _OrigX, _OrigY, _OrigZ, _dx, _dy, _dz); + if ( Randnum > 1){ + RMatProp = init_RandF(Randnum, _Ldomain, _OrigX, _OrigY,_OrigZ, _dx, _dy, _dz, RandProp); + } } - if ( Randnum != 0){ + else if ( Randnum != 0){ RMatProp = init_RandF(Randnum, _Ldomain, _OrigX, _OrigY,_OrigZ, _dx, _dy, _dz, RandProp); } } -mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl, const double euler0, const double euler1, const double euler2): mlawNonLocalDamage(num, rho, propName), _OrigX(Ori_x), _OrigY(Ori_y), _OrigZ(Ori_z), _Ldomain(Lx, Ly, Lz), _intpl(intpl), Reuler(NULL), RMatProp(NULL), _Euler_mean(NULL){ +mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl): mlawNonLocalDamage(num, rho, propName), _OrigX(Ori_x), _OrigY(Ori_y), _OrigZ(Ori_z), _Ldomain(Lx, Ly, Lz), _intpl(intpl), Reuler(NULL), RMatProp(NULL), _Euler_mean(NULL){ double vfi_max = 0.0; double ME_max = 0.0; @@ -76,19 +79,12 @@ mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const int num, const double r if(pos_Mhmod1 !=0) Randnum +=1; if(pos_Mhmod2 !=0) Randnum +=1; if(pos_Mhexp !=0) Randnum +=1; + if(pos_euler !=0) Randnum +=1; //allocate memory if random variable are required - if (pos_euler != 0){ - mallocvector(&_Euler_mean,3); - _Euler_mean[0] = euler0; - _Euler_mean[1] = euler1; - _Euler_mean[2] = euler2; - Reuler = init_RandF(_Euler_mean, _Ldomain, _OrigX, _OrigY,_OrigZ, _dx, _dy, _dz); - } - // read random property variables from if ( Randnum != 0){ - double Rprop[8]; + double Rprop[9]; int nxyz[3]; int k; @@ -106,13 +102,14 @@ mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const int num, const double r if(pos_Mhmod1 !=0) resizeFlag = _hmod1_Mat.resize(nxyz[0], nxyz[1], true); if(pos_Mhmod2 !=0) resizeFlag = _hmod2_Mat.resize(nxyz[0], nxyz[1], true); if(pos_Mhexp !=0) resizeFlag = _hexp_Mat.resize(nxyz[0], nxyz[1], true); + if(pos_euler !=0) resizeFlag = _euler_Mat.resize(nxyz[0], nxyz[1], true); fscanf(Props, "%lf %lf %lf\n", &_dx, &_dy, &_dz); if (resizeFlag){ for(int i=0; i<nxyz[0]; i++){ for(int j=0; j<nxyz[1]; j++){ - fscanf(Props, "%lf %lf %lf %lf %lf %lf %lf %lf\n", &Rprop[0], &Rprop[1],&Rprop[2], - &Rprop[3],&Rprop[4],&Rprop[5],&Rprop[6],&Rprop[7]); + fscanf(Props, "%lf %lf %lf %lf %lf %lf %lf %lf %lf\n", &Rprop[0], &Rprop[1],&Rprop[2], + &Rprop[3],&Rprop[4],&Rprop[5],&Rprop[6],&Rprop[7],&Rprop[8]); k = 0; if(pos_vfi !=0){ _VfMat.set(i, j, Rprop[k++]); @@ -128,6 +125,7 @@ mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const int num, const double r if(pos_Mhmod1 !=0) _hmod1_Mat.set(i, j, Rprop[k++]); if(pos_Mhmod2 !=0) _hmod2_Mat.set(i, j, Rprop[k++]); if(pos_Mhexp !=0) _hexp_Mat.set(i, j, Rprop[k]); + if(pos_euler !=0) _euler_Mat.set(i, j, Rprop[k]); } } } @@ -253,7 +251,7 @@ mlawNonLocalDamage_Stoch::mlawNonLocalDamage_Stoch(const mlawNonLocalDamage_Stoc _dx(source._dx), _dy(source._dy), _dz(source._dz), _OrigX(source._OrigX), _OrigY(source._OrigY), _OrigZ(source._OrigZ), _Ldomain(source._Ldomain), _VfMat(source._VfMat), _aspRMat(source._aspRMat), _E_Mat(source._E_Mat), _nu_Mat(source._nu_Mat), _sy0_Mat(source._sy0_Mat), _hmod1_Mat(source._hmod1_Mat), - _hmod2_Mat(source._hmod2_Mat), _hexp_Mat(source._hexp_Mat) { + _hmod2_Mat(source._hmod2_Mat), _hexp_Mat(source._hexp_Mat),_euler_Mat(source._euler_Mat) { Reuler = NULL; RMatProp = NULL; @@ -300,6 +298,7 @@ mlawNonLocalDamage_Stoch& mlawNonLocalDamage_Stoch::operator=(const materialLaw _hmod1_Mat = src->_hmod1_Mat; _hmod2_Mat = src->_hmod2_Mat; _hexp_Mat = src->_hexp_Mat; + _euler_Mat = src->_euler_Mat; RMatProp = NULL; Reuler = NULL; @@ -334,8 +333,8 @@ void mlawNonLocalDamage_Stoch::createIPState(const SVector3 &GaussP, IPNonLocalD double *stv2 = iv2->_nldStatev; double SpBartmp = 0.0; - if(pos_euler != 0) Reuler->RandomGen(GaussP, &(stv1[pos_euler])); if(Randnum !=0){ + if(Reuler != NULL) Reuler->RandomGen(GaussP, &(stv1[pos_euler])); if(RMatProp !=NULL){ double Rprop[Randnum]; int k=0; @@ -378,6 +377,11 @@ void mlawNonLocalDamage_Stoch::createIPState(const SVector3 &GaussP, IPNonLocalD stv1[pos_Mhmod2]=_hmod2_Mat(nx,ny)*(1.0-x)*(1.0-y)+_hmod2_Mat(nx+1,ny)*x*(1.0-y)+_hmod2_Mat(nx,ny+1)*(1.0-x)*y+_hmod2_Mat(nx+1,ny+1)*x*y;} if(pos_Mhexp !=0){ stv1[pos_Mhexp]=_hexp_Mat(nx,ny)*(1.0-x)*(1.0-y)+_hexp_Mat(nx+1,ny)*x*(1.0-y)+_hexp_Mat(nx,ny+1)*(1.0-x)*y+_hexp_Mat(nx+1,ny+1)*x*y;} + if(pos_euler !=0){ + stv1[pos_euler]=_euler_Mat(nx,ny)*(1.0-x)*(1.0-y)+_euler_Mat(nx+1,ny)*x*(1.0-y)+_euler_Mat(nx,ny+1)*(1.0-x)*y+_euler_Mat(nx+1,ny+1)*x*y; + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else if (_intpl ==2 ){ if(x >= 0.5){nx=nx+1;} @@ -391,6 +395,11 @@ void mlawNonLocalDamage_Stoch::createIPState(const SVector3 &GaussP, IPNonLocalD if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx,ny); if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx,ny); if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx,ny); + if(pos_euler !=0) { + stv1[pos_euler] = _euler_Mat(nx,ny); + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else if (_intpl == 3 ){ @@ -410,6 +419,11 @@ void mlawNonLocalDamage_Stoch::createIPState(const SVector3 &GaussP, IPNonLocalD if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx,ny); if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx,ny); if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx,ny); + if(pos_euler !=0) { + stv1[pos_euler] = _euler_Mat(nx,ny); + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else{ int ny0; @@ -431,6 +445,11 @@ void mlawNonLocalDamage_Stoch::createIPState(const SVector3 &GaussP, IPNonLocalD if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx,ny0) + (_hmod1_Mat(nx,ny)-_hmod1_Mat(nx,ny0))*coef; if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx,ny0) + (_hmod2_Mat(nx,ny)-_hmod2_Mat(nx,ny0))*coef; if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx,ny0) + (_hexp_Mat(nx,ny)-_hexp_Mat(nx,ny0))*coef; + if(pos_euler !=0){ + stv1[pos_euler] = _euler_Mat(nx,ny0) + (_euler_Mat(nx,ny)-_euler_Mat(nx,ny0))*coef; + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } } else{ @@ -454,6 +473,11 @@ void mlawNonLocalDamage_Stoch::createIPState(const SVector3 &GaussP, IPNonLocalD if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx0,ny) + (_hmod1_Mat(nx,ny)-_hmod1_Mat(nx0,ny))*coef; if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx0,ny) + (_hmod2_Mat(nx,ny)-_hmod2_Mat(nx0,ny))*coef; if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx0,ny) + (_hexp_Mat(nx,ny)-_hexp_Mat(nx0,ny))*coef; + if(pos_euler !=0) { + stv1[pos_euler] = _euler_Mat(nx0,ny) + (_euler_Mat(nx,ny)-_euler_Mat(nx0,ny))*coef; + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else{ int nx0, ny0; @@ -498,6 +522,11 @@ void mlawNonLocalDamage_Stoch::createIPState(const SVector3 &GaussP, IPNonLocalD stv1[pos_Mhmod2] = c00*_hmod2_Mat(nx0,ny0) + c01*_hmod2_Mat(nx0,ny) + c10*_hmod2_Mat(nx,ny0) + c11*_hmod2_Mat(nx,ny);} if(pos_Mhexp !=0){ stv1[pos_Mhexp] = c00*_hexp_Mat(nx0,ny0) + c01*_hexp_Mat(nx0,ny) + c10*_hexp_Mat(nx,ny0) + c11*_hexp_Mat(nx,ny);} + if(pos_euler !=0){ + stv1[pos_euler] = c00*_euler_Mat(nx0,ny0) + c01*_euler_Mat(nx0,ny) + c10*_euler_Mat(nx,ny0) + c11*_euler_Mat(nx,ny); + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } } } @@ -542,8 +571,8 @@ void mlawNonLocalDamage_Stoch::createIPVariable(const SVector3 &GaussP, IPNonLoc double *stv1 = ipv->_nldStatev; double SpBartmp = 0.0; - if(pos_euler != 0) Reuler->RandomGen(GaussP, &(stv1[pos_euler])); if(Randnum !=0){ + if(Reuler != NULL) Reuler->RandomGen(GaussP, &(stv1[pos_euler])); if(RMatProp !=NULL){ double Rprop[Randnum]; int k=0; @@ -586,6 +615,11 @@ void mlawNonLocalDamage_Stoch::createIPVariable(const SVector3 &GaussP, IPNonLoc stv1[pos_Mhmod2]=_hmod2_Mat(nx,ny)*(1.0-x)*(1.0-y)+_hmod2_Mat(nx+1,ny)*x*(1.0-y)+_hmod2_Mat(nx,ny+1)*(1.0-x)*y+_hmod2_Mat(nx+1,ny+1)*x*y;} if(pos_Mhexp !=0){ stv1[pos_Mhexp]=_hexp_Mat(nx,ny)*(1.0-x)*(1.0-y)+_hexp_Mat(nx+1,ny)*x*(1.0-y)+_hexp_Mat(nx,ny+1)*(1.0-x)*y+_hexp_Mat(nx+1,ny+1)*x*y;} + if(pos_euler !=0){ + stv1[pos_euler]=_euler_Mat(nx,ny)*(1.0-x)*(1.0-y)+_euler_Mat(nx+1,ny)*x*(1.0-y)+_euler_Mat(nx,ny+1)*(1.0-x)*y+_euler_Mat(nx+1,ny+1)*x*y; + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else if (_intpl ==2 ){ if(x >= 0.5){nx=nx+1;} @@ -599,6 +633,11 @@ void mlawNonLocalDamage_Stoch::createIPVariable(const SVector3 &GaussP, IPNonLoc if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx,ny); if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx,ny); if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx,ny); + if(pos_euler !=0) { + stv1[pos_euler] = _euler_Mat(nx,ny); + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else if (_intpl == 3 ){ @@ -618,6 +657,11 @@ void mlawNonLocalDamage_Stoch::createIPVariable(const SVector3 &GaussP, IPNonLoc if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx,ny); if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx,ny); if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx,ny); + if(pos_euler !=0) { + stv1[pos_euler] = _euler_Mat(nx,ny); + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else{ int ny0; @@ -639,6 +683,11 @@ void mlawNonLocalDamage_Stoch::createIPVariable(const SVector3 &GaussP, IPNonLoc if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx,ny0) + (_hmod1_Mat(nx,ny)-_hmod1_Mat(nx,ny0))*coef; if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx,ny0) + (_hmod2_Mat(nx,ny)-_hmod2_Mat(nx,ny0))*coef; if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx,ny0) + (_hexp_Mat(nx,ny)-_hexp_Mat(nx,ny0))*coef; + if(pos_euler !=0) { + stv1[pos_euler] = _euler_Mat(nx,ny0) + (_euler_Mat(nx,ny)-_euler_Mat(nx,ny0))*coef; + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } } else{ @@ -662,6 +711,11 @@ void mlawNonLocalDamage_Stoch::createIPVariable(const SVector3 &GaussP, IPNonLoc if(pos_Mhmod1 !=0) stv1[pos_Mhmod1] = _hmod1_Mat(nx0,ny) + (_hmod1_Mat(nx,ny)-_hmod1_Mat(nx0,ny))*coef; if(pos_Mhmod2 !=0) stv1[pos_Mhmod2] = _hmod2_Mat(nx0,ny) + (_hmod2_Mat(nx,ny)-_hmod2_Mat(nx0,ny))*coef; if(pos_Mhexp !=0) stv1[pos_Mhexp] = _hexp_Mat(nx0,ny) + (_hexp_Mat(nx,ny)-_hexp_Mat(nx0,ny))*coef; + if(pos_euler !=0) { + stv1[pos_euler] = _euler_Mat(nx0,ny) + (_euler_Mat(nx,ny)-_euler_Mat(nx0,ny))*coef; + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } else{ int nx0, ny0; @@ -706,6 +760,11 @@ void mlawNonLocalDamage_Stoch::createIPVariable(const SVector3 &GaussP, IPNonLoc stv1[pos_Mhmod2] = c00*_hmod2_Mat(nx0,ny0) + c01*_hmod2_Mat(nx0,ny) + c10*_hmod2_Mat(nx,ny0) + c11*_hmod2_Mat(nx,ny);} if(pos_Mhexp !=0){ stv1[pos_Mhexp] = c00*_hexp_Mat(nx0,ny0) + c01*_hexp_Mat(nx0,ny) + c10*_hexp_Mat(nx,ny0) + c11*_hexp_Mat(nx,ny);} + if(pos_euler !=0){ + stv1[pos_euler] = c00*_euler_Mat(nx0,ny0) + c01*_euler_Mat(nx0,ny) + c10*_euler_Mat(nx,ny0) + c11*_euler_Mat(nx,ny); + stv1[pos_euler+1]= 0.0; + stv1[pos_euler+2]= 0.0; + } } } } diff --git a/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.h b/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.h index 177cc088a9eb9bb85dc28156858bc008ca1c2731..f6682e442cb5804972f1e49787a2717c38586fb1 100644 --- a/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.h +++ b/NonLinearSolver/materialLaw/mlawNonLocalDamage_Stoch.h @@ -44,7 +44,7 @@ class mlawNonLocalDamage_Stoch : public mlawNonLocalDamage mutable double* _Euler_mean; Random_Fclass* Reuler; // class of random field - Random_Fclass* RMatProp; // random vectors (Vfi, aspR, Mtx(E,nu,sy0,hmod1,hmod2,hexp)) + Random_Fclass* RMatProp; // random vectors (Vfi, aspR, Mtx(E,nu,sy0,hmod1,hmod2,hexp)) or plus (Euler) // set random variables by prepared data file fullMatrix<double> _VfMat; @@ -57,12 +57,13 @@ class mlawNonLocalDamage_Stoch : public mlawNonLocalDamage fullMatrix<double> _hmod1_Mat; fullMatrix<double> _hmod2_Mat; fullMatrix<double> _hexp_Mat; + fullMatrix<double> _euler_Mat; public: mlawNonLocalDamage_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const int dx,const int dy, const int dz, const char *RandProp, const double euler0= 0.0, const double euler1= 0.0, const double euler2= 0.0); - mlawNonLocalDamage_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl, const double euler0=0.0, const double euler1=0.0, const double euler2=0.0); + mlawNonLocalDamage_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl); #ifndef SWIG mlawNonLocalDamage_Stoch(const mlawNonLocalDamage_Stoch &source); diff --git a/dG3D/src/dG3DMaterialLaw.cpp b/dG3D/src/dG3DMaterialLaw.cpp index cc146724dc5d755e13c2b2acd9d9499f293e8959..3751daf8cfaae33b0b184f69ee2aa53365068491 100644 --- a/dG3D/src/dG3DMaterialLaw.cpp +++ b/dG3D/src/dG3DMaterialLaw.cpp @@ -1001,10 +1001,9 @@ NonLocalDamageDG3DMaterialLaw_Stoch::NonLocalDamageDG3DMaterialLaw_Stoch(const i fillElasticStiffness(E, nu, elasticStiffness); } -NonLocalDamageDG3DMaterialLaw_Stoch::NonLocalDamageDG3DMaterialLaw_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl, const double euler0, const double euler1, const double euler2) : NonLocalDamageDG3DMaterialLaw(num,rho,propName){ +NonLocalDamageDG3DMaterialLaw_Stoch::NonLocalDamageDG3DMaterialLaw_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl) : NonLocalDamageDG3DMaterialLaw(num,rho,propName){ if(_nldlaw != NULL) delete _nldlaw; - _nldlaw = new mlawNonLocalDamage_Stoch(num,rho,propName,Ori_x, Ori_y, Ori_z, Lx, Ly, Lz, RandProp,intpl, - euler0,euler1,euler2); + _nldlaw = new mlawNonLocalDamage_Stoch(num,rho,propName,Ori_x, Ori_y, Ori_z, Lx, Ly, Lz, RandProp,intpl); double nu = _nldlaw->poissonRatio(); double mu = _nldlaw->shearModulus(); double E = 2.*mu*(1.+nu); diff --git a/dG3D/src/dG3DMaterialLaw.h b/dG3D/src/dG3DMaterialLaw.h index af84b04d6b0f09e80606e7582810002dd5832571..b776fb9344a47d4f80de2ce59a1cc2efca9c8ed9 100644 --- a/dG3D/src/dG3DMaterialLaw.h +++ b/dG3D/src/dG3DMaterialLaw.h @@ -750,7 +750,7 @@ class NonLocalDamageDG3DMaterialLaw_Stoch : public NonLocalDamageDG3DMaterialLaw public: NonLocalDamageDG3DMaterialLaw_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const int dx,const int dy, const int dz, const char *RandProp, const double euler0= 0.0, const double euler1= 0.0, const double euler2= 0.0); - NonLocalDamageDG3DMaterialLaw_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl, const double euler0=0.0, const double euler1=0.0, const double euler2=0.0); + NonLocalDamageDG3DMaterialLaw_Stoch(const int num, const double rho, const char *propName, const double Ori_x, const double Ori_y, const double Ori_z,const double Lx,const double Ly,const double Lz, const char *RandProp, const int intpl); virtual ~NonLocalDamageDG3DMaterialLaw_Stoch();