 |
Ice Sheet System Model
4.18
Code documentation
|
#include <BalancevelocityAnalysis.h>
|
void | CreateConstraints (Constraints *constraints, IoModel *iomodel) |
|
void | CreateLoads (Loads *loads, IoModel *iomodel) |
|
void | CreateNodes (Nodes *nodes, IoModel *iomodel, bool isamr=false) |
|
int | DofsPerNode (int **doflist, int domaintype, int approximation) |
|
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 | Core (FemModel *femmodel) |
|
ElementVector * | CreateDVector (Element *element) |
|
ElementMatrix * | CreateJacobianMatrix (Element *element) |
|
ElementMatrix * | CreateKMatrix (Element *element) |
|
ElementVector * | CreatePVector (Element *element) |
|
void | GetSolutionFromInputs (Vector< IssmDouble > *solution, Element *element) |
|
void | GradientJ (Vector< IssmDouble > *gradient, Element *element, int control_type, int control_index) |
|
void | InputUpdateFromSolution (IssmDouble *solution, Element *element) |
|
void | UpdateConstraints (FemModel *femmodel) |
|
virtual | ~Analysis () |
|
Definition at line 11 of file BalancevelocityAnalysis.h.
◆ CreateConstraints()
void BalancevelocityAnalysis::CreateConstraints |
( |
Constraints * |
constraints, |
|
|
IoModel * |
iomodel |
|
) |
| |
|
virtual |
◆ CreateLoads()
void BalancevelocityAnalysis::CreateLoads |
( |
Loads * |
loads, |
|
|
IoModel * |
iomodel |
|
) |
| |
|
virtual |
◆ CreateNodes()
void BalancevelocityAnalysis::CreateNodes |
( |
Nodes * |
nodes, |
|
|
IoModel * |
iomodel, |
|
|
bool |
isamr = false |
|
) |
| |
|
virtual |
◆ DofsPerNode()
int BalancevelocityAnalysis::DofsPerNode |
( |
int ** |
doflist, |
|
|
int |
domaintype, |
|
|
int |
approximation |
|
) |
| |
|
virtual |
◆ UpdateElements()
void BalancevelocityAnalysis::UpdateElements |
( |
Elements * |
elements, |
|
|
Inputs2 * |
inputs2, |
|
|
IoModel * |
iomodel, |
|
|
int |
analysis_counter, |
|
|
int |
analysis_type |
|
) |
| |
|
virtual |
◆ UpdateParameters()
void BalancevelocityAnalysis::UpdateParameters |
( |
Parameters * |
parameters, |
|
|
IoModel * |
iomodel, |
|
|
int |
solution_enum, |
|
|
int |
analysis_enum |
|
) |
| |
|
virtual |
◆ Core()
void BalancevelocityAnalysis::Core |
( |
FemModel * |
femmodel | ) |
|
|
virtual |
◆ CreateDVector()
◆ CreateJacobianMatrix()
◆ CreateKMatrix()
Implements Analysis.
Definition at line 70 of file BalancevelocityAnalysis.cpp.
83 IssmDouble* basis = xNew<IssmDouble>(numnodes);
84 IssmDouble* dbasis = xNew<IssmDouble>(2*numnodes);
100 for(
int i=0;i<numnodes;i++){
101 IssmDouble norm=sqrt(Nx[i]*Nx[i]+Ny[i]*Ny[i]+1.e-10);
102 HNx[i] = -H[i]*Nx[i]/norm;
103 HNy[i] = -H[i]*Ny[i]/norm;
108 for(
int ig=gauss->
begin();ig<gauss->end();ig++){
112 if(thickness<50.) thickness=50.;
118 gamma=h/(2.*thickness+1.e-10);
124 for(
int i=0;i<numnodes;i++){
125 for(
int j=0;j<numnodes;j++){
127 (basis[i]+gamma*(basis[i]*(dhnx[0]+dhny[1]) + dbasis[0*numnodes+i]*hnx + dbasis[1*numnodes+i]*hny))*
128 (basis[j]*(dhnx[0]+dhny[1]) + dbasis[0*numnodes+j]*hnx + dbasis[1*numnodes+j]*hny)
135 xDelete<IssmDouble>(xyz_list);
136 xDelete<IssmDouble>(basis);
137 xDelete<IssmDouble>(dbasis);
138 xDelete<IssmDouble>(H);
139 xDelete<IssmDouble>(Nx);
140 xDelete<IssmDouble>(Ny);
141 xDelete<IssmDouble>(HNx);
142 xDelete<IssmDouble>(HNy);
◆ CreatePVector()
Implements Analysis.
Definition at line 146 of file BalancevelocityAnalysis.cpp.
156 basalelement = element;
159 if(!element->
IsOnBase())
return NULL;
176 IssmDouble* basis = xNew<IssmDouble>(numnodes);
177 IssmDouble* dbasis = xNew<IssmDouble>(numnodes*2);
194 for(
int i=0;i<numnodes;i++){
195 IssmDouble norm=sqrt(Nx[i]*Nx[i]+Ny[i]*Ny[i]+1.e-10);
196 Nx[i] = -H[i]*Nx[i]/norm;
197 Ny[i] = -H[i]*Ny[i]/norm;
202 for(
int ig=gauss->
begin();ig<gauss->end();ig++){
218 if(thickness<50.) thickness=50.;
220 gamma=h/(2.*thickness+1.e-10);
222 for(
int i=0;i<numnodes;i++){
223 pe->
values[i]+=Jdet*gauss->
weight*(ms-mb-dhdt)*( basis[i] + gamma*(basis[i]*(dhnx[0]+dhny[1])+hnx*dbasis[0*numnodes+i] + hny*dbasis[1*numnodes+i]));
228 xDelete<IssmDouble>(xyz_list);
229 xDelete<IssmDouble>(basis);
230 xDelete<IssmDouble>(dbasis);
231 xDelete<IssmDouble>(H);
232 xDelete<IssmDouble>(Nx);
233 xDelete<IssmDouble>(Ny);
◆ GetSolutionFromInputs()
◆ GradientJ()
void BalancevelocityAnalysis::GradientJ |
( |
Vector< IssmDouble > * |
gradient, |
|
|
Element * |
element, |
|
|
int |
control_type, |
|
|
int |
control_index |
|
) |
| |
|
virtual |
◆ InputUpdateFromSolution()
void BalancevelocityAnalysis::InputUpdateFromSolution |
( |
IssmDouble * |
solution, |
|
|
Element * |
element |
|
) |
| |
|
virtual |
◆ UpdateConstraints()
void BalancevelocityAnalysis::UpdateConstraints |
( |
FemModel * |
femmodel | ) |
|
|
virtual |
The documentation for this class was generated from the following files:
void GetInputListOnNodes(IssmDouble *pvalue, int enumtype)
virtual int GetNumberOfNodes(void)=0
@ BalancevelocityAnalysisEnum
void FindParam(bool *pvalue, int paramenum)
@ BalancethicknessThickeningRateEnum
virtual Element * SpawnBasalElement(void)=0
virtual Input2 * GetInput2(int inputenum)=0
void DeleteMaterials(void)
virtual void NodalFunctions(IssmDouble *basis, Gauss *gauss)=0
virtual void ValueP1OnGauss(IssmDouble *pvalue, IssmDouble *values, Gauss *gauss)=0
ElementVector * NewElementVector(int approximation_enum=NoneApproximationEnum)
@ BasalforcingsGroundediceMeltingRateEnum
virtual Gauss * NewGauss(void)=0
virtual void InputUpdateFromSolutionOneDof(IssmDouble *solution, int inputenum)=0
const char * EnumToStringx(int enum_in)
void GetVerticesCoordinates(IssmDouble **xyz_list)
void CreateNodes(Nodes *nodes, IoModel *iomodel, bool isamr=false)
virtual void ValueP1DerivativesOnGauss(IssmDouble *dvalue, IssmDouble *values, IssmDouble *xyz_list, Gauss *gauss)=0
#define _error_(StreamArgs)
virtual int begin(void)=0
Object * GetObjectByOffset(int offset)
virtual IssmDouble CharacteristicLength(void)=0
@ MeshVertexonsurfaceEnum
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 FetchDataToInput(Inputs2 *inputs2, Elements *elements, const char *vector_name, int input_enum)
virtual void InputUpdateFromSolutionOneDofCollapsed(IssmDouble *solution, int inputenum)=0
virtual void NodalFunctionsDerivatives(IssmDouble *dbasis, IssmDouble *xyz_list, Gauss *gauss)=0
ElementMatrix * NewElementMatrix(int approximation_enum=NoneApproximationEnum)