Changeset 18922
- Timestamp:
- 12/03/14 21:00:05 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r18884 r18922 43 43 int ObjectEnum(); 44 44 /*}}}*/ 45 /*Update virtual functions definitions: {{{*/ 46 void InputUpdateFromVector(IssmDouble* vector, int name, int type); 47 #ifdef _HAVE_DAKOTA_ 48 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type); 49 void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type); 50 #endif 51 void InputUpdateFromIoModel(int index, IoModel* iomodel); 52 /*}}}*/ 53 /*Element virtual functions definitions: {{{*/ 54 IssmDouble CharacteristicLength(void){_error_("not implemented yet");}; 55 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); 56 void ComputeSigmaNN(){_error_("not implemented yet");}; 57 void ComputeStressTensor(); 58 void ComputeDeviatoricStressTensor(); 59 void StressIntensityFactor(); 60 void StrainRateparallel(); 61 void StrainRateperpendicular(); 62 void CalvingRateLevermann(); 63 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters); 64 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 65 int FiniteElement(void); 66 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating); 67 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 68 void ResetHooks(); 69 void Delta18oParameterization(void); 70 Penta* GetUpperPenta(void); 71 Penta* GetLowerPenta(void); 72 Penta* GetSurfacePenta(void); 73 Penta* GetBasalPenta(void); 74 Element* GetUpperElement(void); 75 Element* GetBasalElement(void); 76 void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");}; 77 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating); 78 IssmDouble GetGroundedPortion(IssmDouble* xyz_list); 79 int GetNodeIndex(Node* node); 80 int GetNumberOfNodes(void); 81 int GetNumberOfNodes(int enum_type); 82 int GetNumberOfVertices(void); 83 void GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type); 84 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 85 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); 86 87 void InputDepthAverageAtBase(int enum_type,int average_enum_type); 88 void InputScale(int enum_type,IssmDouble scale_factor); 89 int NumberofNodesVelocity(void); 90 int NumberofNodesPressure(void); 91 int VelocityInterpolation(); 92 int PressureInterpolation(); 93 int TensorInterpolation(){_error_("not implemented yet");}; 94 bool IsZeroLevelset(int levelset_enum); 95 bool IsIcefront(void); 96 bool IsFaceOnBoundary(void){_error_("not implemented yet");}; 97 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum); 98 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum); 99 void GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");}; 100 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm); 101 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe); 102 void ResetFSBasalBoundaryCondition(void); 103 void SetTemporaryElementType(int element_type_in); 104 Element* SpawnBasalElement(void); 105 Element* SpawnTopElement(void); 106 IssmDouble SurfaceArea(void); 107 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement); 108 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum); 109 IssmDouble TimeAdapt(); 110 void ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss); 111 void ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss); 112 int VertexConnectivity(int vertexindex); 113 void VerticalSegmentIndices(int** pindices,int* pnumseg); 114 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 115 116 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part); 117 IssmDouble IceVolume(void); 118 IssmDouble IceVolumeAboveFloatation(void); 119 IssmDouble TotalSmb(void); 120 IssmDouble MassFlux(IssmDouble* segment); 121 IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id); 122 void ElementResponse(IssmDouble* presponse,int response_enum); 123 124 #ifdef _HAVE_GIA_ 125 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y); 126 #endif 127 128 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid); 129 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index); 130 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index); 131 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum); 132 void InputControlUpdate(IssmDouble scalar,bool save_parameter); 133 IssmDouble Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");}; 134 IssmDouble MisfitArea(int weightsenum){_error_("not implemented yet");}; 135 IssmDouble Masscon(IssmDouble* levelset){_error_("not implemented yet");}; 136 137 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding); 138 int UpdatePotentialUngrounding(IssmDouble* potential_sheet_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf); 139 /*}}}*/ 140 /*Penta specific routines:{{{*/ 45 /*Penta routines:{{{*/ 141 46 void AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum); 142 47 void AddInput(int input_enum, IssmDouble* values, int interpolation_enum); 143 void NormalBase(IssmDouble* bed_normal, IssmDouble* xyz_list); 144 void NormalSection(IssmDouble* normal,IssmDouble* xyz_list); 145 void NormalTop(IssmDouble* bed_normal, IssmDouble* xyz_list); 48 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part); 49 IssmDouble CharacteristicLength(void){_error_("not implemented yet");}; 50 void CalvingRateLevermann(); 51 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); 52 void ComputeDeviatoricStressTensor(); 53 void ComputeSigmaNN(){_error_("not implemented yet");}; 54 void ComputeStressTensor(); 55 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters); 56 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index); 57 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum); 146 58 ElementMatrix* CreateBasalMassMatrix(void); 59 void Delta18oParameterization(void); 60 void ElementResponse(IssmDouble* presponse,int response_enum); 61 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 62 int FiniteElement(void); 63 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating); 147 64 void GetAreaCoordinates(IssmDouble *area_coordinates,IssmDouble* xyz_zero,IssmDouble* xyz_list,int numpoints); 65 Element* GetBasalElement(void); 66 Penta* GetBasalPenta(void); 148 67 int GetElementType(void); 68 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating); 69 IssmDouble GetGroundedPortion(IssmDouble* xyz_list); 70 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum); 149 71 void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype); 72 void GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");}; 73 void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");}; 150 74 Node* GetNode(int node_number); 75 int GetNodeIndex(Node* node); 76 int GetNumberOfNodes(void); 77 int GetNumberOfNodes(int enum_type); 78 int GetNumberOfVertices(void); 79 Penta* GetLowerPenta(void); 80 void GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type); 81 Penta* GetSurfacePenta(void); 82 Element* GetUpperElement(void); 83 Penta* GetUpperPenta(void); 84 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid); 85 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 86 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); 87 IssmDouble IceVolume(void); 88 IssmDouble IceVolumeAboveFloatation(void); 89 void InputControlUpdate(IssmDouble scalar,bool save_parameter); 90 void InputDepthAverageAtBase(int enum_type,int average_enum_type); 151 91 void InputExtrude(int enum_type,int start); 92 void InputScale(int enum_type,IssmDouble scale_factor); 93 void InputUpdateFromIoModel(int index, IoModel* iomodel); 152 94 void InputUpdateFromSolutionOneDof(IssmDouble* solutiong,int enum_type); 153 95 void InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solutiong,int enum_type); 96 void InputUpdateFromVector(IssmDouble* vector, int name, int type); 97 bool IsFaceOnBoundary(void){_error_("not implemented yet");}; 98 bool IsIcefront(void); 99 bool IsNodeOnShelfFromFlags(IssmDouble* flags); 100 bool IsOnBase(void); 154 101 bool IsOnSurface(void); 155 bool IsOnBase(void); 156 bool IsNodeOnShelfFromFlags(IssmDouble* flags); 102 bool IsZeroLevelset(int levelset_enum); 157 103 void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss); 104 void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss); 158 105 void JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss); 159 106 void JacobianDeterminantSurface(IssmDouble* pJdet, IssmDouble* xyz_list,Gauss* gauss); 160 void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);161 107 void JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss); 108 IssmDouble Masscon(IssmDouble* levelset){_error_("not implemented yet");}; 109 IssmDouble MassFlux(IssmDouble* segment); 110 IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id); 111 IssmDouble MinEdgeLength(IssmDouble* xyz_list); 112 IssmDouble Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");}; 113 IssmDouble MisfitArea(int weightsenum){_error_("not implemented yet");}; 162 114 Gauss* NewGauss(void); 163 115 Gauss* NewGauss(int order); … … 169 121 Gauss* NewGaussTop(int order); 170 122 void NodalFunctions(IssmDouble* basis,Gauss* gauss); 123 void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 124 void NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 125 void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 126 void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss); 171 127 void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss); 128 void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 172 129 void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss); 173 void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 174 void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 175 void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 176 void NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 130 void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss); 177 131 void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss); 178 void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss); 179 void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss); 180 IssmDouble MinEdgeLength(IssmDouble* xyz_list); 132 void NormalBase(IssmDouble* bed_normal, IssmDouble* xyz_list); 133 void NormalSection(IssmDouble* normal,IssmDouble* xyz_list); 134 void NormalTop(IssmDouble* bed_normal, IssmDouble* xyz_list); 135 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum); 136 int NumberofNodesPressure(void); 137 int NumberofNodesVelocity(void); 138 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm); 139 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding); 140 int PressureInterpolation(); 141 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe); 142 void ResetFSBasalBoundaryCondition(void); 143 void ResetHooks(); 181 144 void SetClone(int* minranks); 145 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index); 146 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 147 void SetTemporaryElementType(int element_type_in); 148 Element* SpawnBasalElement(void); 149 Element* SpawnTopElement(void); 182 150 Tria* SpawnTria(int index1,int index2,int index3); 183 151 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa); 184 152 void StressIntensityFactor(); 153 void StrainRateparallel(); 154 void StrainRateperpendicular(); 155 IssmDouble SurfaceArea(void); 156 int TensorInterpolation(){_error_("not implemented yet");}; 157 IssmDouble TimeAdapt(); 158 IssmDouble TotalSmb(void); 159 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement); 185 160 void UpdateConstraintsExtrudeFromBase(void); 186 161 void UpdateConstraintsExtrudeFromTop(void); 162 int UpdatePotentialUngrounding(IssmDouble* potential_sheet_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf); 163 void ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss); 164 void ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss); 165 int VelocityInterpolation(); 166 int VertexConnectivity(int vertexindex); 167 void VerticalSegmentIndices(int** pindices,int* pnumseg); 168 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 169 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum); 170 171 #ifdef _HAVE_DAKOTA_ 172 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type); 173 void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type); 174 #endif 175 176 #ifdef _HAVE_GIA_ 177 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y); 178 #endif 187 179 /*}}}*/ 188 180 };
Note:
See TracChangeset
for help on using the changeset viewer.