 |
Ice Sheet System Model
4.18
Code documentation
|
Go to the documentation of this file.
2 #include "../toolkits/toolkits.h"
3 #include "../classes/classes.h"
4 #include "../shared/shared.h"
5 #include "../modules/modules.h"
10 int finiteelement =
P1Enum;
19 int finiteelement =
P1Enum;
28 int finiteelement =
P1Enum;
47 element->
Update(inputs2,i,iomodel,analysis_counter,analysis_type,finiteelement);
80 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes);
92 for(
int ig=gauss->
begin();ig<gauss->end();ig++){
100 vel = sqrt(vx*vx+vy*vy);
101 if(sqrt(vx*vx+vy*vy)==0.){
104 vel = sqrt(vx*vx+vy*vy);
106 else if(vel<30./yts){
109 vel = sqrt(vx*vx+vy*vy);
110 vel = 30./yts*500000.;
113 for(
int i=0;i<numnodes;i++){
114 for(
int j=0;j<numnodes;j++){
116 (vx*dbasis[0*numnodes+i] + vy*dbasis[1*numnodes+i])*(vx*dbasis[0*numnodes+j] + vy*dbasis[1*numnodes+j])
117 + vel/500000.*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j]));
123 xDelete<IssmDouble>(xyz_list);
124 xDelete<IssmDouble>(dbasis);
140 IssmDouble* basis = xNew<IssmDouble>(numnodes);
150 for(
int ig=gauss->
begin();ig<gauss->end();ig++){
162 for(
int i=0;i<numnodes;i++) pe->
values[i]+=0*Jdet*gauss->
weight*(
163 (ms[0]+ms[1]-mb[0]-mb[1]-dhdt[0]-dhdt[1])*basis[i]
168 xDelete<IssmDouble>(xyz_list);
169 xDelete<IssmDouble>(basis);
177 _error_(
"Not implemented yet");
Declaration of Nodes class.
virtual int GetNumberOfNodes(void)=0
void InputUpdateFromSolution(IssmDouble *solution, Element *element)
@ BalancethicknessThickeningRateEnum
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
@ Balancethickness2AnalysisEnum
Declaration of Parameters class.
void CreateConstraints(Constraints *constraints, IoModel *iomodel)
ElementMatrix * CreateKMatrix(Element *element)
Declaration of Constraints class.
void Core(FemModel *femmodel)
Declaration of Elements class.
ElementVector * CreateDVector(Element *element)
int DofsPerNode(int **doflist, int domaintype, int approximation)
virtual Input2 * GetInput2(int inputenum)=0
virtual void NodalFunctions(IssmDouble *basis, Gauss *gauss)=0
void UpdateConstraints(FemModel *femmodel)
ElementVector * NewElementVector(int approximation_enum=NoneApproximationEnum)
: header file for generic external result object
@ BasalforcingsGroundediceMeltingRateEnum
virtual Gauss * NewGauss(void)=0
virtual void InputUpdateFromSolutionOneDof(IssmDouble *solution, int inputenum)=0
void GetSolutionFromInputs(Vector< IssmDouble > *solution, Element *element)
void UpdateElements(Elements *elements, Inputs2 *inputs2, IoModel *iomodel, int analysis_counter, int analysis_type)
void UpdateParameters(Parameters *parameters, IoModel *iomodel, int solution_enum, int analysis_enum)
void GetVerticesCoordinates(IssmDouble **xyz_list)
void GradientJ(Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index)
Declaration of Loads class.
void GetSolutionFromInputsOneDof(Vector< IssmDouble > *solution, int solutionenum)
#define _error_(StreamArgs)
ElementMatrix * CreateJacobianMatrix(Element *element)
virtual int begin(void)=0
Object * GetObjectByOffset(int offset)
virtual IssmDouble CharacteristicLength(void)=0
virtual void JacobianDeterminant(IssmDouble *Jdet, IssmDouble *xyz_list, Gauss *gauss)=0
virtual void GaussPoint(int ig)=0
virtual void Update(Inputs2 *inputs2, int index, IoModel *iomodel, int analysis_counter, int analysis_type, int finite_element)=0
ElementVector * CreatePVector(Element *element)
void FetchDataToInput(Inputs2 *inputs2, Elements *elements, const char *vector_name, int input_enum)
void IoModelToConstraintsx(Constraints *constraints, IoModel *iomodel, const char *spc_name, int analysis_type, int finite_element, int dof)
void CreateLoads(Loads *loads, IoModel *iomodel)
virtual void NodalFunctionsDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)=0
ElementMatrix * NewElementMatrix(int approximation_enum=NoneApproximationEnum)