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