source: issm/trunk/src/c/objects/Penta.h@ 128

Last change on this file since 128 was 128, checked in by Eric.Larour, 16 years ago

Vertical velocity solution

File size: 4.2 KB
Line 
1/*! \file Penta.h
2 * \brief: header file for penta object
3 */
4
5#ifndef _PENTA_H
6#define _PENTA_H
7
8#include "./Object.h"
9#include "./Element.h"
10#include "./Matpar.h"
11#include "./Matice.h"
12#include "./Node.h"
13#include "./Tria.h"
14
15class Penta: public Element{
16
17 private:
18 int id;
19
20 /*nodes: */
21 int node_ids[6]; //node ids
22 Node* nodes[6]; //node pointers
23 int node_offsets[6]; //node offsets in nodes dataset
24
25 /*materials: */
26 int mid;
27 Matice* matice;
28 int matice_offset;
29
30 int mparid;
31 Matpar* matpar;
32 int matpar_offset;
33
34
35 double h[6];
36 double s[6];
37 double b[6];
38 double k[6];
39 double melting[6];
40 double accumulation[6];
41 int friction_type;
42 double p;
43 double q;
44 int shelf;
45 int onbed;
46 int onsurface;
47 double meanvel;/*!scaling ratio for velocities*/
48 double epsvel; /*!minimum velocity to avoid infinite velocity ratios*/
49 int collapse;
50 double geothermalflux[6];
51 int artdiff;
52 int thermal_steadystate;
53 double viscosity_overshoot;
54
55 public:
56
57 Penta();
58 Penta( int id, int mid, int mparid, int node_ids[6], double h[6], double s[6], double b[6], double k[6], int friction_type,
59 double p, double q, int shelf, int onbed, int onsurface, double meanvel,double epsvel,
60 int collapse, double melting[6], double accumulation[6], double geothermalflux[6],
61 int artdiff, int thermal_steadystate,double viscosity_overshoot);
62 ~Penta();
63
64 void Echo();
65 void Marshall(char** pmarshalled_dataset);
66 int MarshallSize();
67 char* GetName();
68 void Demarshall(char** pmarshalled_dataset);
69 int Enum();
70 int GetId();
71 int MyRank();
72 void Configure(void* loads,void* nodes,void* materials);
73 void CreateKMatrix(Mat Kgg,ParameterInputs* inputs,int analysis_type);
74 void CreateKMatrixDiagnosticHoriz( Mat Kgg, ParameterInputs* inputs, int analysis_type);
75 void CreateKMatrixDiagnosticVert( Mat Kgg, ParameterInputs* inputs, int analysis_type);
76 void CreatePVector(Vec pg, ParameterInputs* inputs, int analysis_type);
77 void UpdateFromInputs(ParameterInputs* inputs);
78 void GetDofList(int* doflist,int* pnumberofdofs);
79 Matpar* GetMatPar();
80 int GetShelf();
81 void GetNodes(Node** nodes);
82 int GetOnBed();
83 void Du(Vec du_g,double* u_g,double* u_g_obs,ParameterInputs* inputs,int analysis_type);
84 void Gradj(Vec grad_g,double* u_g,double* lambda_g,ParameterInputs* inputs,int analysis_type,char* control_type);
85 void GradjDrag(Vec grad_g,double* u_g,double* lambda_g,ParameterInputs* inputs,int analysis_type);
86 void GradjB(Vec grad_g,double* u_g,double* lambda_g,ParameterInputs* inputs,int analysis_type);
87 double Misfit(double* u_g,double* u_g_obs,ParameterInputs* inputs,int analysis_type);
88
89 void GetThicknessList(double* thickness_list);
90 void GetBedList(double* bed_list);
91 Object* copy();
92 Tria* SpawnTria(int g0, int g1, int g2);
93
94 void GetStrainRate(double* epsilon, double* velocity, double* xyz_list, double* gauss_l1l2l3l4);
95 void GetB(double* pB, double* xyz_list, double* gauss_l1l2l3l4);
96 void GetBPrime(double* B, double* xyz_list, double* gauss_l1l2l3l4);
97 void GetB_vert(double* B, double* xyz_list, double* gauss_l1l2l3l4);
98 void GetBPrime_vert(double* B, double* xyz_list, double* gauss_l1l2l3l4);
99 void GetJacobianDeterminant(double* Jdet, double* xyz_list,double* gauss_l1l2l3l4);
100 void GetNodalFunctionsDerivativesBasic(double* dh1dh2dh3dh4dh5dh6_basic,double* xyz_list, double* gauss_l1l2l3l4);
101 void GetJacobian(double* J, double* xyz_list,double* gauss_l1l2l3l4);
102 void GetNodalFunctionsDerivativesParams(double* dl1dl2dl3dl4dl5dl6,double* gauss_l1l2l3l4);
103 void GetJacobianInvert(double* Jinv, double* xyz_list,double* gauss_l1l2l3l4);
104 void CreatePVectorDiagnosticHoriz( Vec pg, ParameterInputs* inputs,int analysis_type);
105 void CreatePVectorDiagnosticVert( Vec pg, ParameterInputs* inputs,int analysis_type);
106 void GetParameterValue(double* pvalue, double* v_list,double* gauss_l1l2l3l4);
107 void GetParameterDerivativeValue(double* p, double* p_list,double* xyz_list, double* gauss_l1l2l3l4);
108 void GetNodalFunctions(double* l1l2l3l4l5l6, double* gauss_l1l2l3l4);
109 void VelocityExtrude(Vec ug,double* ug_serial);
110
111};
112#endif /* _PENTA_H */
113
114
Note: See TracBrowser for help on using the repository browser.