Changeset 18923
- Timestamp:
- 12/03/14 21:11:19 (10 years ago)
- Location:
- issm/trunk-jpl/src/c/classes/Elements
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp
r18521 r18923 104 104 /*}}}*/ 105 105 106 int Tetra::FiniteElement(void){/*{{{*/107 return this->element_type;108 } /*}}}*/109 int Tetra::ObjectEnum(void){/*{{{*/110 111 return TetraEnum;112 113 }/*}}}*/114 106 void Tetra::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/ 115 107 … … 196 188 } 197 189 /*}}}*/ 190 void Tetra::FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/ 191 192 IssmDouble values[NUMVERTICES]; 193 int indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}}; 194 195 /*Retrieve all inputs and parameters*/ 196 GetInputListOnVertices(&values[0],MaskIceLevelsetEnum); 197 198 for(int i=0;i<4;i++){ 199 if(values[indices[i][0]] == 0. && values[indices[i][1]] == 0. && values[indices[i][2]] == 0.){ 200 *pindex1 = indices[i][0]; 201 *pindex2 = indices[i][1]; 202 *pindex3 = indices[i][2]; 203 return; 204 } 205 } 206 207 _error_("Could not find 3 vertices on bed"); 208 } 209 /*}}}*/ 198 210 void Tetra::FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/ 199 211 … … 216 228 } 217 229 /*}}}*/ 218 void Tetra::FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/ 219 220 IssmDouble values[NUMVERTICES]; 221 int indices[4][3] = {{0,1,2},{0,3,1},{1,3,2},{0,2,3}}; 222 223 /*Retrieve all inputs and parameters*/ 224 GetInputListOnVertices(&values[0],MaskIceLevelsetEnum); 225 226 for(int i=0;i<4;i++){ 227 if(values[indices[i][0]] == 0. && values[indices[i][1]] == 0. && values[indices[i][2]] == 0.){ 228 *pindex1 = indices[i][0]; 229 *pindex2 = indices[i][1]; 230 *pindex3 = indices[i][2]; 231 return; 232 } 233 } 234 235 _error_("Could not find 3 vertices on bed"); 236 } 237 /*}}}*/ 230 int Tetra::FiniteElement(void){/*{{{*/ 231 return this->element_type; 232 } /*}}}*/ 238 233 int Tetra::GetElementType(){/*{{{*/ 239 234 … … 475 470 } 476 471 /*}}}*/ 477 bool Tetra::IsOnBase(){/*{{{*/478 return HasFaceOnBase();479 }480 /*}}}*/481 bool Tetra::IsOnSurface(){/*{{{*/482 return HasFaceOnSurface();483 }484 /*}}}*/485 472 bool Tetra::IsIcefront(void){/*{{{*/ 486 473 … … 497 484 return false; 498 485 }/*}}}*/ 486 bool Tetra::IsOnBase(){/*{{{*/ 487 return HasFaceOnBase(); 488 } 489 /*}}}*/ 490 bool Tetra::IsOnSurface(){/*{{{*/ 491 return HasFaceOnSurface(); 492 } 493 /*}}}*/ 499 494 void Tetra::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 500 495 … … 504 499 } 505 500 /*}}}*/ 501 void Tetra::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/ 502 503 _assert_(gauss->Enum()==GaussTetraEnum); 504 this->GetJacobianDeterminantFace(pJdet,xyz_list_base,(GaussTetra*)gauss); 505 506 } 507 /*}}}*/ 506 508 void Tetra::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 507 509 508 510 _assert_(gauss->Enum()==GaussTetraEnum); 509 511 this->GetJacobianDeterminantFace(pJdet,xyz_list,(GaussTetra*)gauss); 510 511 }512 /*}}}*/513 void Tetra::JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss){/*{{{*/514 515 _assert_(gauss->Enum()==GaussTetraEnum);516 this->GetJacobianDeterminantFace(pJdet,xyz_list_base,(GaussTetra*)gauss);517 512 518 513 } … … 561 556 } 562 557 /*}}}*/ 558 void Tetra::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 559 560 _assert_(gauss->Enum()==GaussTetraEnum); 561 this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->element_type); 562 563 } 564 /*}}}*/ 565 void Tetra::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 566 567 _assert_(gauss->Enum()==GaussTetraEnum); 568 this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->VelocityInterpolation()); 569 570 } 571 /*}}}*/ 572 void Tetra::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/ 573 574 _assert_(gauss->Enum()==GaussTetraEnum); 575 this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->PressureInterpolation()); 576 577 } 578 /*}}}*/ 579 void Tetra::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/ 580 581 _assert_(gauss->Enum()==GaussTetraEnum); 582 this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->TensorInterpolation()); 583 584 } 585 /*}}}*/ 563 586 void Tetra::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/ 564 587 … … 568 591 } 569 592 /*}}}*/ 570 void Tetra::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/ 571 572 _assert_(gauss->Enum()==GaussTetraEnum); 573 this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->PressureInterpolation()); 574 575 } 576 /*}}}*/ 577 void Tetra::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/ 578 579 _assert_(gauss->Enum()==GaussTetraEnum); 580 this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->TensorInterpolation()); 581 582 } 583 /*}}}*/ 584 void Tetra::NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 585 586 _assert_(gauss->Enum()==GaussTetraEnum); 587 this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->element_type); 588 589 } 590 /*}}}*/ 591 void Tetra::NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/ 592 593 _assert_(gauss->Enum()==GaussTetraEnum); 594 this->GetNodalFunctionsDerivatives(dbasis,xyz_list,(GaussTetra*)gauss,this->VelocityInterpolation()); 595 593 void Tetra::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/ 594 595 IssmDouble v13[3],v23[3]; 596 IssmDouble normal[3]; 597 IssmDouble normal_norm; 598 599 for(int i=0;i<3;i++){ 600 v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i]; 601 v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i]; 602 } 603 604 normal[0]=v13[1]*v23[2]-v13[2]*v23[1]; 605 normal[1]=v13[2]*v23[0]-v13[0]*v23[2]; 606 normal[2]=v13[0]*v23[1]-v13[1]*v23[0]; 607 normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]); 608 609 /*Bed normal is opposite to surface normal*/ 610 bed_normal[0]=-normal[0]/normal_norm; 611 bed_normal[1]=-normal[1]/normal_norm; 612 bed_normal[2]=-normal[2]/normal_norm; 613 614 _assert_(bed_normal[2]<0.); 596 615 } 597 616 /*}}}*/ … … 616 635 } 617 636 /*}}}*/ 618 void Tetra::Normal Base(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/637 void Tetra::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/ 619 638 620 639 IssmDouble v13[3],v23[3]; … … 632 651 normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]); 633 652 634 /*Bed normal is opposite to surface normal*/635 bed_normal[0]=-normal[0]/normal_norm;636 bed_normal[1]=-normal[1]/normal_norm;637 bed_normal[2]=-normal[2]/normal_norm;638 639 _assert_(bed_normal[2]<0.);640 }641 /*}}}*/642 void Tetra::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/643 644 IssmDouble v13[3],v23[3];645 IssmDouble normal[3];646 IssmDouble normal_norm;647 648 for(int i=0;i<3;i++){649 v13[i]=xyz_list[0*3+i]-xyz_list[2*3+i];650 v23[i]=xyz_list[1*3+i]-xyz_list[2*3+i];651 }652 653 normal[0]=v13[1]*v23[2]-v13[2]*v23[1];654 normal[1]=v13[2]*v23[0]-v13[0]*v23[2];655 normal[2]=v13[0]*v23[1]-v13[1]*v23[0];656 normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);657 658 653 top_normal[0]=normal[0]/normal_norm; 659 654 top_normal[1]=normal[1]/normal_norm; … … 668 663 int Tetra::NumberofNodesVelocity(void){/*{{{*/ 669 664 return TetraRef::NumberofNodes(this->VelocityInterpolation()); 665 } 666 /*}}}*/ 667 int Tetra::ObjectEnum(void){/*{{{*/ 668 669 return TetraEnum; 670 671 }/*}}}*/ 672 int Tetra::PressureInterpolation(void){/*{{{*/ 673 return TetraRef::PressureInterpolation(this->element_type); 670 674 } 671 675 /*}}}*/ … … 764 768 } 765 769 /*}}}*/ 766 void Tetra::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/767 768 /*go into parameters and get the analysis_counter: */769 int analysis_counter;770 parametersin->FindParam(&analysis_counter,AnalysisCounterEnum);771 772 /*Get Element type*/773 this->element_type=this->element_type_list[analysis_counter];774 775 /*Pick up nodes*/776 if(this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp();777 else this->nodes=NULL;778 779 }780 /*}}}*/781 770 void Tetra::ResetHooks(){/*{{{*/ 782 771 … … 793 782 this->hmatpar->reset(); 794 783 if(this->hneighbors) this->hneighbors->reset(); 784 } 785 /*}}}*/ 786 void Tetra::SetCurrentConfiguration(Elements* elementsin, Loads* loadsin, Nodes* nodesin, Materials* materialsin, Parameters* parametersin){/*{{{*/ 787 788 /*go into parameters and get the analysis_counter: */ 789 int analysis_counter; 790 parametersin->FindParam(&analysis_counter,AnalysisCounterEnum); 791 792 /*Get Element type*/ 793 this->element_type=this->element_type_list[analysis_counter]; 794 795 /*Pick up nodes*/ 796 if(this->hnodes[analysis_counter]) this->nodes=(Node**)this->hnodes[analysis_counter]->deliverp(); 797 else this->nodes=NULL; 798 795 799 } 796 800 /*}}}*/ … … 836 840 /*Return new Tria*/ 837 841 return tria; 842 } 843 /*}}}*/ 844 int Tetra::TensorInterpolation(void){/*{{{*/ 845 return TetraRef::TensorInterpolation(this->element_type); 838 846 } 839 847 /*}}}*/ … … 981 989 } 982 990 /*}}}*/ 983 int Tetra::PressureInterpolation(void){/*{{{*/984 return TetraRef::PressureInterpolation(this->element_type);985 }986 /*}}}*/987 int Tetra::TensorInterpolation(void){/*{{{*/988 return TetraRef::TensorInterpolation(this->element_type);989 }990 /*}}}*/991 991 void Tetra::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/ 992 992 /*Compute portion of the element that is grounded*/ -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r18884 r18923 39 39 Object *copy(); 40 40 /*}}}*/ 41 /*Update virtual functions resolution: {{{*/42 void InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum){_error_("not implemented yet");};43 void InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum);44 void InputUpdateFromVector(IssmDouble* vector, int name, int type){_error_("not implemented yet");};45 #ifdef _HAVE_DAKOTA_46 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("not implemented yet");};47 void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type){_error_("not implemented yet");};48 #endif49 void InputUpdateFromIoModel(int index, IoModel* iomodel);50 /*}}}*/51 41 /*Element virtual functions definitions: {{{*/ 52 42 void AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");}; 53 43 void AddInput(int input_enum, IssmDouble* values, int interpolation_enum); 44 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");}; 45 void CalvingRateLevermann(void){_error_("not implemented yet");}; 54 46 IssmDouble CharacteristicLength(void){_error_("not implemented yet");}; 55 47 void ComputeBasalStress(Vector<IssmDouble>* sigma_b){_error_("not implemented yet");}; … … 57 49 void ComputeStressTensor(){_error_("not implemented yet");}; 58 50 void ComputeDeviatoricStressTensor(){_error_("not implemented yet");}; 59 void StressIntensityFactor(void){_error_("not implemented yet");};60 void StrainRateparallel(void){_error_("not implemented yet");};61 void StrainRateperpendicular(void){_error_("not implemented yet");};62 void CalvingRateLevermann(void){_error_("not implemented yet");};63 51 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 64 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters);65 void ResetHooks();52 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");}; 53 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");}; 66 54 void Delta18oParameterization(void){_error_("not implemented yet");}; 55 IssmDouble DragCoefficientAbsGradient(void){_error_("not implemented yet");}; 56 void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");}; 67 57 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); 58 void FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3); 68 59 void FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3); 69 void FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3);70 60 void FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3); 61 int FiniteElement(void); 71 62 void FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");}; 72 int FiniteElement(void);73 Element* GetUpperElement(void){_error_("not implemented yet");};74 63 Element* GetBasalElement(void){_error_("not implemented yet");}; 64 int GetElementType(void); 65 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");}; 66 IssmDouble GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");}; 67 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");}; 68 void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype); 69 void GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");}; 70 void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");}; 71 Node* GetNode(int node_number){_error_("Not implemented");}; 75 72 int GetNodeIndex(Node* node); 76 73 int GetNumberOfNodes(void); 77 74 int GetNumberOfNodes(int enum_type){_error_("not implemented yet");}; 78 75 int GetNumberOfVertices(void); 76 void GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");}; 77 Element* GetUpperElement(void){_error_("not implemented yet");}; 78 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");}; 79 79 void GetVerticesCoordinatesBase(IssmDouble** pxyz_list); 80 80 void GetVerticesCoordinatesTop(IssmDouble** pxyz_list); 81 void GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");}; 81 82 bool HasFaceOnBase(); 82 83 bool HasFaceOnSurface(); 84 IssmDouble IceVolume(void){_error_("not implemented yet");}; 85 IssmDouble IceVolumeAboveFloatation(void){_error_("not implemented yet");}; 86 bool IsFaceOnBoundary(void){_error_("not implemented yet");}; 87 bool IsIcefront(void); 88 bool IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");}; 83 89 bool IsOnBase(); 84 90 bool IsOnSurface(); 85 bool IsNodeOnShelfFromFlags(IssmDouble* flags){_error_("not implemented yet");}; 91 bool IsZeroLevelset(int levelset_enum){_error_("not implemented");}; 92 void InputControlUpdate(IssmDouble scalar,bool save_parameter){_error_("not implemented yet");}; 93 void InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");}; 94 void InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/}; 95 void InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");}; 96 void InputUpdateFromIoModel(int index, IoModel* iomodel); 97 void InputUpdateFromSolutionOneDof(IssmDouble* solution,int inputenum); 98 void InputUpdateFromSolutionOneDofCollapsed(IssmDouble* solution,int inputenum){_error_("not implemented yet");}; 99 void InputUpdateFromVector(IssmDouble* vector, int name, int type){_error_("not implemented yet");}; 86 100 void JacobianDeterminant(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss); 101 void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss); 87 102 void JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 88 103 void JacobianDeterminantSurface(IssmDouble* pJdet, IssmDouble* xyz_list,Gauss* gauss); 89 void JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);90 104 void JacobianDeterminantTop(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss); 105 IssmDouble Masscon(IssmDouble* levelset){_error_("not implemented yet");}; 106 IssmDouble MassFlux(IssmDouble* segment){_error_("not implemented yet");}; 107 IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){_error_("not implemented yet");} 108 void MaterialUpdateFromTemperature(void){_error_("not implemented yet");}; 91 109 IssmDouble MinEdgeLength(IssmDouble* xyz_list){_error_("not implemented yet");}; 92 void NodalFunctions(IssmDouble* basis,Gauss* gauss); 93 void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; 94 void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; 95 void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss); 96 void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss); 97 void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss); 98 void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 99 void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 100 void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 101 void NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 102 void NormalSection(IssmDouble* normal,IssmDouble* xyz_list); 103 void NormalTop(IssmDouble* normal,IssmDouble* xyz_list); 104 void NormalBase(IssmDouble* normal,IssmDouble* xyz_list); 105 int NumberofNodesVelocity(void); 106 int NumberofNodesPressure(void); 107 Element* SpawnBasalElement(void); 108 Element* SpawnTopElement(void); 109 Tria* SpawnTria(int index1,int index2,int index3); 110 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");}; 111 int PressureInterpolation(void); 112 void ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss); 113 void ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 114 int VelocityInterpolation(void); 115 int TensorInterpolation(void); 116 void GetLevelsetPositivePart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlynegative,IssmDouble* levelsetvalues){_error_("not implemented yet");}; 117 void GetGroundedPart(int* point1,IssmDouble* fraction1, IssmDouble* fraction2,bool* mainlyfloating){_error_("not implemented yet");}; 118 IssmDouble GetGroundedPortion(IssmDouble* xyz_list){_error_("not implemented yet");}; 119 void GetInputValue(IssmDouble* pvalue,Node* node,int enumtype); 120 Node* GetNode(int node_number){_error_("Not implemented");}; 121 int GetElementType(void); 110 IssmDouble Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");}; 111 IssmDouble MisfitArea(int weightsenum){_error_("not implemented yet");}; 122 112 Gauss* NewGauss(void); 123 113 Gauss* NewGauss(int order); … … 128 118 Gauss* NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");}; 129 119 Gauss* NewGaussTop(int order); 120 void NodalFunctions(IssmDouble* basis,Gauss* gauss); 121 void NodalFunctionsDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 122 void NodalFunctionsDerivativesVelocity(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss); 123 void NodalFunctionsMINIDerivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 124 void NodalFunctionsPressure(IssmDouble* basis,Gauss* gauss); 125 void NodalFunctionsP1(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; 126 void NodalFunctionsP1Derivatives(IssmDouble* dbasis,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 127 void NodalFunctionsP2(IssmDouble* basis,Gauss* gauss){_error_("not implemented yet");}; 128 void NodalFunctionsTensor(IssmDouble* basis,Gauss* gauss); 129 void NodalFunctionsVelocity(IssmDouble* basis,Gauss* gauss); 130 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");}; 131 void NormalBase(IssmDouble* normal,IssmDouble* xyz_list); 132 void NormalSection(IssmDouble* normal,IssmDouble* xyz_list); 133 void NormalTop(IssmDouble* normal,IssmDouble* xyz_list); 134 int NumberofNodesPressure(void); 135 int NumberofNodesVelocity(void); 136 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm){_error_("not implemented yet");}; 137 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");}; 138 int PressureInterpolation(void); 139 void ResetFSBasalBoundaryCondition(void); 140 void ResetHooks(); 141 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe); 142 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");}; 143 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 144 void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");}; 145 Element* SpawnBasalElement(void); 146 Element* SpawnTopElement(void); 147 Tria* SpawnTria(int index1,int index2,int index3); 148 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");}; 149 void StrainRateparallel(void){_error_("not implemented yet");}; 150 void StrainRateperpendicular(void){_error_("not implemented yet");}; 151 void StressIntensityFactor(void){_error_("not implemented yet");}; 152 IssmDouble SurfaceArea(void){_error_("not implemented yet");}; 153 int TensorInterpolation(void); 154 IssmDouble TimeAdapt(){_error_("not implemented yet");}; 155 IssmDouble TotalSmb(void){_error_("not implemented yet");}; 156 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement); 157 void UpdateConstraintsExtrudeFromBase(){_error_("not implemented");}; 158 void UpdateConstraintsExtrudeFromTop(){_error_("not implemented");}; 159 int UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){_error_("not implemented yet");}; 160 void ValueP1DerivativesOnGauss(IssmDouble* dvalue,IssmDouble* values,IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");}; 161 void ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss); 162 int VelocityInterpolation(void); 130 163 int VertexConnectivity(int vertexindex){_error_("not implemented yet");}; 131 164 void VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");}; 132 165 void ViscousHeating(IssmDouble* pphi,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vz_input); 133 bool IsZeroLevelset(int levelset_enum){_error_("not implemented");};134 bool IsIcefront(void);135 bool IsFaceOnBoundary(void){_error_("not implemented yet");};136 166 void ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum); 137 void GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum){_error_("not implemented yet");};138 void GetLevelCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum,IssmDouble level){_error_("not implemented yet");};139 void GetSolutionFromInputsOneDof(Vector<IssmDouble>* solution,int enum_type){_error_("not implemented yet");};140 void InputDepthAverageAtBase(int enum_type,int average_enum_type){_error_("not implemented yet");};141 void InputExtrude(int enum_type,int start){_error_("not implemented"); /*For penta only*/};142 void InputScale(int enum_type,IssmDouble scale_factor){_error_("not implemented yet");};143 void MaterialUpdateFromTemperature(void){_error_("not implemented yet");};144 int NodalValue(IssmDouble* pvalue, int index, int natureofdataenum){_error_("not implemented yet");};145 void PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm){_error_("not implemented yet");};146 void ResetFSBasalBoundaryCondition(void);147 void ReduceMatrices(ElementMatrix* Ke,ElementVector* pe);148 void SetTemporaryElementType(int element_type_in){_error_("not implemented yet");};149 IssmDouble SurfaceArea(void){_error_("not implemented yet");};150 void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);151 IssmDouble TimeAdapt(){_error_("not implemented yet");};152 void UpdateConstraintsExtrudeFromBase(){_error_("not implemented");};153 void UpdateConstraintsExtrudeFromTop(){_error_("not implemented");};154 155 void AverageOntoPartition(Vector<IssmDouble>* partition_contributions,Vector<IssmDouble>* partition_areas,IssmDouble* vertex_response,IssmDouble* qmu_part){_error_("not implemented yet");};156 IssmDouble IceVolume(void){_error_("not implemented yet");};157 IssmDouble IceVolumeAboveFloatation(void){_error_("not implemented yet");};158 IssmDouble TotalSmb(void){_error_("not implemented yet");};159 IssmDouble MassFlux(IssmDouble* segment){_error_("not implemented yet");};160 IssmDouble MassFlux(IssmDouble x1,IssmDouble y1, IssmDouble x2, IssmDouble y2,int segment_id){_error_("not implemented yet");}161 void ElementResponse(IssmDouble* presponse,int response_enum){_error_("not implemented yet");};162 IssmDouble Misfit(int modelenum,int observationenum,int weightsenum){_error_("not implemented yet");};163 IssmDouble MisfitArea(int weightsenum){_error_("not implemented yet");};164 IssmDouble Masscon(IssmDouble* levelset){_error_("not implemented yet");};165 167 166 168 #ifdef _HAVE_GIA_ 167 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");};169 void GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y){_error_("not implemented yet");}; 168 170 #endif 169 171 170 IssmDouble DragCoefficientAbsGradient(void){_error_("not implemented yet");}; 171 void GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");}; 172 void GetVectorFromControlInputs(Vector<IssmDouble>* gradient,int control_enum,int control_index,const char* data,bool onsid){_error_("not implemented yet");}; 173 void SetControlInputsFromVector(IssmDouble* vector,int control_enum,int control_index){_error_("not implemented yet");}; 174 void ControlInputSetGradient(IssmDouble* gradient,int enum_type,int control_index){_error_("not implemented yet");}; 175 void ControlToVectors(Vector<IssmPDouble>* vector_control, Vector<IssmPDouble>* vector_gradient,int control_enum){_error_("not implemented yet");}; 176 void InputControlUpdate(IssmDouble scalar,bool save_parameter){_error_("not implemented yet");}; 177 178 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");}; 179 int UpdatePotentialUngrounding(IssmDouble* vertices_potentially_ungrounding,Vector<IssmDouble>* vec_nodes_on_iceshelf,IssmDouble* nodes_on_iceshelf){_error_("not implemented yet");}; 172 #ifdef _HAVE_DAKOTA_ 173 void InputUpdateFromVectorDakota(IssmDouble* vector, int name, int type){_error_("not implemented yet");}; 174 void InputUpdateFromMatrixDakota(IssmDouble* matrix, int nows, int ncols, int name, int type){_error_("not implemented yet");}; 175 #endif 180 176 /*}}}*/ 181 177 };
Note:
See TracChangeset
for help on using the changeset viewer.