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

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

Added new inputs dataset in each element! With new UpdateInputs module
to populate this inputs datasets with TriaVertexInput objects that store
vx,vy, vz, etc ...

File size: 6.8 KB
Line 
1/*! \file Penta.h
2 * \brief: header file for penta object
3 */
4
5#ifndef _PENTA_H
6#define _PENTA_H
7
8class Object;
9class Node;
10class Hook;
11class ElementProperties;
12class DataSet;
13struct IoModel;
14
15
16#include "./Object.h"
17#include "./Element.h"
18#include "./Matpar.h"
19#include "./Numpar.h"
20#include "./Matice.h"
21#include "./Tria.h"
22#include "./Hook.h"
23#include "./ElementProperties.h"
24#include "../ModelProcessorx/IoModel.h"
25#include "./ParameterInputs.h"
26#include "./Node.h"
27
28class Penta: public Element{
29
30 private:
31
32 int id;
33 Hook hnodes; //hook to 6 nodes
34 Hook hmatice; //hook to 1 matice
35 Hook hmatpar; //hook to 1 matpar
36 Hook hnumpar; //hook to 1 numpar
37
38 ElementProperties properties;
39 DataSet* inputs;
40
41 public:
42
43 /*FUNCTION constructors, destructors {{{1*/
44 Penta();
45 Penta(int penta_id,int* penta_node_ids, int penta_matice_id, int penta_matpar_id, int penta_numpar_id, ElementProperties* properties);
46 Penta(int penta_id,Hook* penta_hnodes, Hook* penta_hmatice, Hook* penta_hmatpar, Hook* penta_hnumpar, ElementProperties* penta_properties);
47 Penta(int i, IoModel* iomodel);
48 ~Penta();
49 /*}}}*/
50 /*FUNCTION object management {{{1*/
51 void Configure(void* loads,void* nodes,void* materials,void* parameters);
52 Object* copy();
53 void DeepEcho();
54 void Demarshall(char** pmarshalled_dataset);
55 void Echo();
56 int Enum();
57 int GetId();
58 char* GetName();
59 void Marshall(char** pmarshalled_dataset);
60 int MarshallSize();
61 int MyRank();
62 void* SpawnTria(int g0, int g1, int g2);
63 void UpdateFromDakota(void* inputs);
64 void UpdateFromInputs(void* inputs);
65 void UpdateInputs(double* solution, int analysis_type, int sub_analysis_type);
66 void SetClone(int* minranks);
67
68 /*}}}*/
69 /*FUNCTION element numerical routines {{{1*/
70 void CreateKMatrix(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
71 void CreateKMatrixDiagnosticHoriz( Mat Kgg, void* inputs, int analysis_type,int sub_analysis_type);
72 void CreateKMatrixDiagnosticVert( Mat Kgg, void* inputs, int analysis_type,int sub_analysis_type);
73 void CreatePVector(Vec pg, void* inputs, int analysis_type,int sub_analysis_type);
74 void GetDofList(int* doflist,int* pnumberofdofs);
75 void GetDofList1(int* doflist);
76 void* GetMatPar();
77 int GetShelf();
78 void GetNodes(void** nodes);
79 int GetOnBed();
80 void Du(Vec du_g,void* inputs,int analysis_type,int sub_analysis_type);
81 void Gradj(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type,char* control_type);
82 void GradjDrag(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type);
83 void GradjB(Vec grad_g,void* inputs,int analysis_type,int sub_analysis_type);
84 double Misfit(void* inputs,int analysis_type,int sub_analysis_type);
85 double SurfaceArea(void* inputs,int analysis_type,int sub_analysis_type);
86 double CostFunction(void* inputs,int analysis_type,int sub_analysis_type);
87
88 void GetThicknessList(double* thickness_list);
89 void GetBedList(double* bed_list);
90
91 void GetStrainRate(double* epsilon, double* velocity, double* xyz_list, double* gauss_coord);
92 void GetB(double* pB, double* xyz_list, double* gauss_coord);
93 void GetBPrime(double* B, double* xyz_list, double* gauss_coord);
94 void GetB_vert(double* B, double* xyz_list, double* gauss_coord);
95 void GetBPrime_vert(double* B, double* xyz_list, double* gauss_coord);
96 void GetJacobianDeterminant(double* Jdet, double* xyz_list,double* gauss_coord);
97 void GetNodalFunctionsDerivatives(double* dh1dh6,double* xyz_list, double* gauss_coord);
98 void GetJacobian(double* J, double* xyz_list,double* gauss_coord);
99 void GetNodalFunctionsDerivativesReference(double* dl1dl6,double* gauss_coord);
100 void GetJacobianInvert(double* Jinv, double* xyz_list,double* gauss_coord);
101 void CreatePVectorDiagnosticHoriz( Vec pg, void* inputs,int analysis_type,int sub_analysis_type);
102 void CreatePVectorDiagnosticVert( Vec pg, void* inputs,int analysis_type,int sub_analysis_type);
103 void GetParameterValue(double* pvalue, double* v_list,double* gauss_coord);
104 void GetParameterDerivativeValue(double* p, double* p_list,double* xyz_list, double* gauss_coord);
105 void GetNodalFunctions(double* l1l6, double* gauss_coord);
106 void FieldExtrude(Vec field,double* field_serial,char* field_name, int iscollapsed);
107 void ComputeBasalStress(Vec sigma_b,void* inputs,int analysis_type,int sub_analysis_type);
108 void ComputePressure(Vec p_g,void* inputs,int analysis_type,int sub_analysis_type);
109 void ComputeStrainRate(Vec eps,void* inputs,int analysis_type,int sub_analysis_type);
110 void CreateKMatrixSlopeCompute(Mat Kgg,void* vinputs,int analysis_type,int sub_analysis_type);
111 void CreatePVectorSlopeCompute( Vec pg, void* vinputs, int analysis_type,int sub_analysis_type);
112 void CreateKMatrixPrognostic(Mat Kgg,void* vinputs,int analysis_type,int sub_analysis_type);
113 void CreatePVectorPrognostic( Vec pg, void* vinputs, int analysis_type,int sub_analysis_type);
114
115 void CreateKMatrixDiagnosticStokes( Mat Kgg, void* vinputs, int analysis_type,int sub_analysis_type);
116 void CreatePVectorDiagnosticStokes( Vec pg, void* vinputs,int analysis_type,int sub_analysis_type);
117 void ReduceMatrixStokes(double* Ke_reduced, double* Ke_temp);
118 void GetMatrixInvert(double* Ke_invert, double* Ke);
119 void SurfaceNormal(double* surface_normal, double xyz_list[3][3]);
120 void GetStrainRateStokes(double* epsilon, double* velocity, double* xyz_list, double* gauss_coord);
121 void GetBStokes(double* B, double* xyz_list, double* gauss_coord);
122 void GetBprimeStokes(double* B_prime, double* xyz_list, double* gauss_coord);
123 void GetLStokes(double* LStokes, double* gauss_coord_tria);
124 void GetLprimeStokes(double* LprimeStokes, double* xyz_list, double* gauss_coord_tria, double* gauss_coord);
125 void GetNodalFunctionsDerivativesStokes(double* dh1dh7,double* xyz_list, double* gauss_coord);
126 void GetNodalFunctionsDerivativesReferenceStokes(double* dl1dl7,double* gauss_coord);
127 void ReduceVectorStokes(double* Pe_reduced, double* Ke_temp, double* Pe_temp);
128 void GetNodalFunctionsStokes(double* l1l7, double* gauss_coord);
129 void CreateKMatrixThermal(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
130 void GetB_conduct(double* B_conduct, double* xyz_list, double* gauss_coord);
131 void GetB_advec(double* B_advec, double* xyz_list, double* gauss_coord);
132 void GetBprime_advec(double* Bprime_advec, double* xyz_list, double* gauss_coord);
133 void GetB_artdiff(double* B_artdiff, double* xyz_list, double* gauss_coord);
134 void CreateKMatrixMelting(Mat Kgg,void* inputs,int analysis_type,int sub_analysis_type);
135 void CreatePVectorThermal( Vec pg, void* vinputs,int analysis_type,int sub_analysis_type);
136 void CreatePVectorMelting( Vec pg, void* vinputs,int analysis_type,int sub_analysis_type);
137 void GetPhi(double* phi, double* epsilon, double viscosity);
138 double MassFlux(double* segment,double* ug);
139 /*}}}*/
140
141
142};
143#endif /* _PENTA_H */
Note: See TracBrowser for help on using the repository browser.