 |
Ice Sheet System Model
4.18
Code documentation
|
Go to the documentation of this file.
8 #error "Cannot compile with HAVE_CONFIG_H symbol! run configure first!"
13 #include "../Elements/Element.h"
14 #include "../Elements/Tria.h"
15 #include "../Elements/Penta.h"
16 #include "../Params/Parameters.h"
17 #include "../Vertex.h"
20 #include "../IoModel.h"
21 #include "../../shared/shared.h"
36 this->
mid=matestar_mid;
109 this->
helement->
Marshall(pmarshalled_data,pmarshalled_data_size,marshall_direction);
173 _error_(
"not implemented yet");
178 _error_(
"not implemented yet");
229 _error_(
"not implemented yet");
233 _error_(
"not implemented yet");
237 _error_(
"not implemented yet");
241 _error_(
"not implemented yet");
245 _error_(
"not implemented yet");
260 vmag = sqrt(vx*vx+vy*vy+vz*vz);
267 dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
268 dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
269 dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
277 if (isdepthaveraged==0.){
288 E = Ec + (Es-Ec)*lambdas*lambdas;
_assert_(E>0.);
293 viscosity = 1.e+14/2.;
298 viscosity = B/(2.*pow(E,1./n)*pow(eps_eff,2./n));
302 if(viscosity<=0)
_error_(
"Negative viscosity");
318 vmag = sqrt(vx*vx+vy*vy+vz*vz);
325 dvmag[0]=1./(2*sqrt(vmag))*(2*vx*dvx[0]+2*vy*dvy[0]+2*vz*dvz[0]);
326 dvmag[1]=1./(2*sqrt(vmag))*(2*vx*dvx[1]+2*vy*dvy[1]+2*vz*dvz[1]);
327 dvmag[2]=1./(2*sqrt(vmag))*(2*vx*dvx[2]+2*vy*dvy[2]+2*vz*dvz[2]);
334 if (isdepthaveraged==0.){
344 E = Ec + (Es-Ec)*lambdas*lambdas;
_assert_(E>0.);
347 if(eps_eff==0.) dmudB = 0.;
348 else dmudB = 1./(2.*pow(E,1./3.)*pow(eps_eff,2./3.));
356 _error_(
"not implemented yet");
360 _error_(
"not implemented yet");
364 _error_(
"not implemented yet");
369 _error_(
"not implemented yet");
389 _error_(
"not implemented yet");
392 _error_(
"not implemented yet");
400 bool isdepthaveraged=0.;
417 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
429 bool isdepthaveraged=0.;
444 dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
447 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
456 bool isdepthaveraged=1.;
472 dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
477 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
490 bool isdepthaveraged=0.;
507 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = 0.;
513 eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[3]*epsilon3d[3] + epsilon3d[4]*epsilon3d[4] + epsilon3d[5]*epsilon3d[5] + epsilon3d[0]*epsilon3d[1]+eps0*eps0);
518 eps_eff = 1./sqrt(2.)*sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + 2.*epsilon2d[2]*epsilon2d[2]);
522 *pviscosity=
GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
533 bool isdepthaveraged=0.;
538 eps_eff = sqrt(epsilon3d[0]*epsilon3d[0] + epsilon3d[1]*epsilon3d[1] + epsilon3d[2]*epsilon3d[2] + epsilon3d[3]*epsilon3d[3] + epsilon3d[4]*epsilon3d[4] + epsilon3d[0]*epsilon3d[1]);
543 eps_eff = 1./sqrt(2.)*sqrt(2*epsilon2d[0]*epsilon2d[0] + 2*epsilon2d[1]*epsilon2d[1]);
559 dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
562 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
565 *pviscosity=
GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
568 _error_(
"not implemented yet");
578 bool isdepthaveraged=1.;
594 dvy[0] = 0.; dvy[1] = 0.; dvy[2] = 0.;
599 dvz[0] = 0.; dvz[1] = 0.; dvz[2] = -dvx[0]-dvy[1];
604 eps_eff = sqrt(epsilon2d[0]*epsilon2d[0] + epsilon2d[1]*epsilon2d[1] + epsilon2d[2]*epsilon2d[2] + epsilon2d[0]*epsilon2d[1]);
609 eps_eff = fabs(epsilon1d);
613 *pviscosity=
GetViscosityGeneral(vx,vy,vz,&dvx[0],&dvy[0],&dvz[0],eps_eff,isdepthaveraged,gauss);
Declaration of Vertices class.
void Configure(Elements *elements)
IssmDouble EstarLambdaS(IssmDouble epseff, IssmDouble epsprime_norm)
Declaration of Nodes class.
@ MaterialsRheologyEsbarEnum
void ViscositySSADerivativeEpsSquare(IssmDouble *pmu_prime, IssmDouble *epsilon, Gauss *gauss)
IssmDouble GetViscosityGeneral(IssmDouble vx, IssmDouble vy, IssmDouble vz, IssmDouble *dvx, IssmDouble *dvy, IssmDouble *dvz, IssmDouble eps_eff, bool isdepthaveraged, Gauss *gauss)
@ MaterialsRheologyEcEnum
#define _printf_(StreamArgs)
: header file for matice object
Declaration of Parameters class.
#define MARSHALLING_ENUM(EN)
IssmDouble GetEcbar(Gauss *gauss)
IssmDouble GetEc(Gauss *gauss)
void EstarStrainrateQuantities(IssmDouble *pepsprime_norm, IssmDouble vx, IssmDouble vy, IssmDouble vz, IssmDouble vmag, IssmDouble *dvx, IssmDouble *dvy, IssmDouble *dvz, IssmDouble *dvmag)
void StrainRateFS(IssmDouble *epsilon, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, Input2 *vz_input)
void ViscosityBFS(IssmDouble *pmudB, int dim, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, Input2 *vz_input, IssmDouble eps_eff)
Declaration of Elements class.
void ViscosityBHO(IssmDouble *pmudB, int dim, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, IssmDouble eps_eff)
void GetViscosity2dDerivativeEpsSquare(IssmDouble *pmu_prime, IssmDouble *pepsilon, Gauss *gauss)
void ViscositySSA(IssmDouble *pviscosity, int dim, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input)
void GetViscosity(IssmDouble *pviscosity, IssmDouble eps_eff, Gauss *gauss)
IssmDouble GetBbar(Gauss *gauss)
void SetCurrentConfiguration(Elements *elements, Loads *loads, Nodes *nodes, Vertices *vertices, Materials *materials, Parameters *parameters)
@ MaterialsRheologyBbarEnum
virtual Input2 * GetInput2(int inputenum)=0
void GetViscosity_B(IssmDouble *pviscosity, IssmDouble eps_eff, Gauss *gauss)
Material * copy2(Element *element)
void ViscosityFSDerivativeEpsSquare(IssmDouble *pmu_prime, IssmDouble *epsilon, Gauss *gauss)
IssmDouble GetB(Gauss *gauss)
Declaration of Materials class.
IssmDouble GetEs(Gauss *gauss)
void configure(DataSet *dataset)
void GetViscosity_D(IssmDouble *pviscosity, IssmDouble eps_eff, Gauss *gauss)
IssmDouble GetViscosity_BGeneral(IssmDouble vx, IssmDouble vy, IssmDouble vz, IssmDouble *dvx, IssmDouble *dvy, IssmDouble *dvz, IssmDouble eps_eff, bool isdepthaveraged, Gauss *gauss)
void Marshall(char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
void GetViscosityBar(IssmDouble *pviscosity, IssmDouble eps_eff, Gauss *gauss)
IssmDouble GetD(Gauss *gauss)
IssmDouble GetDbar(Gauss *gauss)
#define MARSHALLING(FIELD)
void StrainRateSSA1d(IssmDouble *epsilon, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input)
void ViscosityBSSA(IssmDouble *pmudB, int dim, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, IssmDouble eps_eff)
@ MaterialsRheologyEsEnum
void GetViscosityDerivativeEpsSquare(IssmDouble *pmu_prime, IssmDouble *pepsilon, Gauss *gauss)
void GetViscosityComplement(IssmDouble *pviscosity_complement, IssmDouble *pepsilon, Gauss *gauss)
Declaration of Loads class.
void StrainRateHO(IssmDouble *epsilon, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input)
#define _error_(StreamArgs)
void ViscosityFS(IssmDouble *pviscosity, int dim, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, Input2 *vz_input)
void GetViscosityDComplement(IssmDouble *, IssmDouble *, Gauss *gauss)
void ViscosityHODerivativeEpsSquare(IssmDouble *pmu_prime, IssmDouble *epsilon, Gauss *gauss)
void StrainRateSSA(IssmDouble *epsilon, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input)
IssmDouble GetAbar(Gauss *gauss)
@ MaterialsRheologyEcbarEnum
IssmDouble GetA(Gauss *gauss)
void StrainRateHO2dvertical(IssmDouble *epsilon, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input)
Declaration of DataSet class.
IssmDouble GetEsbar(Gauss *gauss)
void ViscosityL1L2(IssmDouble *pviscosity, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input, Input2 *surf)
void Marshall(char **pmarshalled_data, int *pmarshalled_data_size, int marshall_direction)
void ViscosityHO(IssmDouble *pviscosity, int dim, IssmDouble *xyz_list, Gauss *gauss, Input2 *vx_input, Input2 *vy_input)