 |
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"
27 element->
Update(inputs2,i,iomodel,analysis_counter,analysis_type,
P1Enum);
66 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes);
67 IssmDouble* basis = xNew<IssmDouble>(numnodes);
76 for(
int ig=gauss->
begin();ig<gauss->end();ig++){
81 if(thickness<50.) thickness=50.;
86 for(
int i=0;i<numnodes;i++){
87 for(
int j=0;j<numnodes;j++){
90 +(l*thickness)*(l*thickness)*(dbasis[0*numnodes+i]*dbasis[0*numnodes+j] + dbasis[1*numnodes+i]*dbasis[1*numnodes+j])
98 xDelete<IssmDouble>(dbasis);
99 xDelete<IssmDouble>(basis);
100 xDelete<IssmDouble>(xyz_list);
121 Input2* H_input = NULL, *surface_input = NULL, *vx_input = NULL, *vy_input = NULL;
123 IssmDouble rho_ice,gravity,slope[2],thickness;
130 IssmDouble* basis = xNew<IssmDouble>(numnodes);
152 default: input = element->
GetInput2(input_enum);
157 for(
int ig=gauss->
begin();ig<gauss->end();ig++){
167 surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
168 if(vx_input && vy_input){
169 vx_input->GetInputValue(&vx,gauss);
170 vy_input->GetInputValue(&vy,gauss);
171 norms = sqrt(slope[0]*slope[0]+slope[1]*slope[1]+1.e-10);
172 normv = sqrt(vx*vx + vy*vy);
173 if(normv>15./(365.*24.*3600.)){
174 slope[0] = -vx/normv*norms;
175 slope[1] = -vy/normv*norms;
179 value = rho_ice*gravity*thickness*slope[0];
181 value = rho_ice*gravity*thickness*slope[1];
185 surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
189 surface_input->GetInputDerivativeValue(&slope[0],xyz_list,gauss);
196 for(
int i=0;i<numnodes;i++) pe->
values[i]+=Jdet*gauss->
weight*value*basis[i];
200 xDelete<IssmDouble>(xyz_list);
201 xDelete<IssmDouble>(basis);
206 _error_(
"not implemented yet");
209 _error_(
"Not implemented yet");
212 int inputenum,domaintype,elementtype;
: header file for generic external result object
Declaration of Nodes class.
virtual int GetNumberOfNodes(void)=0
void FindParam(bool *pvalue, int paramenum)
Declaration of Parameters class.
Declaration of Constraints class.
Declaration of Elements class.
void GradientJ(Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index)
void GetSolutionFromInputs(Vector< IssmDouble > *solution, 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 InputUpdateFromSolution(IssmDouble *solution, Element *element)
ElementVector * NewElementVector(int approximation_enum=NoneApproximationEnum)
void Core(FemModel *femmodel)
virtual Gauss * NewGauss(void)=0
virtual void InputUpdateFromSolutionOneDof(IssmDouble *solution, int inputenum)=0
const char * EnumToStringx(int enum_in)
@ SmoothThicknessMultiplierEnum
void GetVerticesCoordinates(IssmDouble **xyz_list)
ElementVector * CreateDVector(Element *element)
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
Declaration of Loads class.
#define _error_(StreamArgs)
virtual int begin(void)=0
Object * GetObjectByOffset(int offset)
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
void CreateConstraints(Constraints *constraints, IoModel *iomodel)
ElementMatrix * CreateJacobianMatrix(Element *element)
void UpdateElements(Elements *elements, Inputs2 *inputs2, IoModel *iomodel, int analysis_counter, int analysis_type)
void UpdateConstraints(FemModel *femmodel)
void CreateLoads(Loads *loads, IoModel *iomodel)
ElementMatrix * CreateKMatrix(Element *element)
void UpdateParameters(Parameters *parameters, IoModel *iomodel, int solution_enum, int analysis_enum)
virtual void NodalFunctionsDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)=0
ElementVector * CreatePVector(Element *element)
ElementMatrix * NewElementMatrix(int approximation_enum=NoneApproximationEnum)