Changeset 18923


Ignore:
Timestamp:
12/03/14 21:11:19 (10 years ago)
Author:
seroussi
Message:

CHG: reorder Tetra

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  
    104104/*}}}*/
    105105
    106 int      Tetra::FiniteElement(void){/*{{{*/
    107         return this->element_type;
    108 } /*}}}*/
    109 int      Tetra::ObjectEnum(void){/*{{{*/
    110 
    111         return TetraEnum;
    112 
    113 }/*}}}*/
    114106void     Tetra::AddInput(int input_enum,IssmDouble* values, int interpolation_enum){/*{{{*/
    115107
     
    196188}
    197189/*}}}*/
     190void     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/*}}}*/
    198210void     Tetra::FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3){/*{{{*/
    199211
     
    216228}
    217229/*}}}*/
    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 /*}}}*/
     230int      Tetra::FiniteElement(void){/*{{{*/
     231        return this->element_type;
     232} /*}}}*/
    238233int      Tetra::GetElementType(){/*{{{*/
    239234
     
    475470}
    476471/*}}}*/
    477 bool     Tetra::IsOnBase(){/*{{{*/
    478         return HasFaceOnBase();
    479 }
    480 /*}}}*/
    481 bool     Tetra::IsOnSurface(){/*{{{*/
    482         return HasFaceOnSurface();
    483 }
    484 /*}}}*/
    485472bool     Tetra::IsIcefront(void){/*{{{*/
    486473
     
    497484        return false;
    498485}/*}}}*/
     486bool     Tetra::IsOnBase(){/*{{{*/
     487        return HasFaceOnBase();
     488}
     489/*}}}*/
     490bool     Tetra::IsOnSurface(){/*{{{*/
     491        return HasFaceOnSurface();
     492}
     493/*}}}*/
    499494void     Tetra::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
    500495
     
    504499}
    505500/*}}}*/
     501void     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/*}}}*/
    506508void     Tetra::JacobianDeterminantSurface(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
    507509
    508510        _assert_(gauss->Enum()==GaussTetraEnum);
    509511        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);
    517512
    518513}
     
    561556}
    562557/*}}}*/
     558void     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/*}}}*/
     565void     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/*}}}*/
     572void     Tetra::NodalFunctionsPressure(IssmDouble* basis, Gauss* gauss){/*{{{*/
     573
     574        _assert_(gauss->Enum()==GaussTetraEnum);
     575        this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->PressureInterpolation());
     576
     577}
     578/*}}}*/
     579void     Tetra::NodalFunctionsTensor(IssmDouble* basis, Gauss* gauss){/*{{{*/
     580
     581        _assert_(gauss->Enum()==GaussTetraEnum);
     582        this->GetNodalFunctions(basis,(GaussTetra*)gauss,this->TensorInterpolation());
     583
     584}
     585/*}}}*/
    563586void     Tetra::NodalFunctionsVelocity(IssmDouble* basis, Gauss* gauss){/*{{{*/
    564587
     
    568591}
    569592/*}}}*/
    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 
     593void     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.);
    596615}
    597616/*}}}*/
     
    616635}
    617636/*}}}*/
    618 void     Tetra::NormalBase(IssmDouble* bed_normal,IssmDouble* xyz_list){/*{{{*/
     637void     Tetra::NormalTop(IssmDouble* top_normal,IssmDouble* xyz_list){/*{{{*/
    619638
    620639        IssmDouble v13[3],v23[3];
     
    632651        normal_norm=sqrt(normal[0]*normal[0]+ normal[1]*normal[1]+ normal[2]*normal[2]);
    633652
    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 
    658653        top_normal[0]=normal[0]/normal_norm;
    659654        top_normal[1]=normal[1]/normal_norm;
     
    668663int      Tetra::NumberofNodesVelocity(void){/*{{{*/
    669664        return TetraRef::NumberofNodes(this->VelocityInterpolation());
     665}
     666/*}}}*/
     667int      Tetra::ObjectEnum(void){/*{{{*/
     668
     669        return TetraEnum;
     670
     671}/*}}}*/
     672int      Tetra::PressureInterpolation(void){/*{{{*/
     673        return TetraRef::PressureInterpolation(this->element_type);
    670674}
    671675/*}}}*/
     
    764768}
    765769/*}}}*/
    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 /*}}}*/
    781770void     Tetra::ResetHooks(){/*{{{*/
    782771
     
    793782        this->hmatpar->reset();
    794783        if(this->hneighbors) this->hneighbors->reset();
     784}
     785/*}}}*/
     786void     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
    795799}
    796800/*}}}*/
     
    836840        /*Return new Tria*/
    837841        return tria;
     842}
     843/*}}}*/
     844int      Tetra::TensorInterpolation(void){/*{{{*/
     845        return TetraRef::TensorInterpolation(this->element_type);
    838846}
    839847/*}}}*/
     
    981989}
    982990/*}}}*/
    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 /*}}}*/
    991991void     Tetra::ZeroLevelsetCoordinates(IssmDouble** pxyz_zero,IssmDouble* xyz_list,int levelsetenum){/*{{{*/
    992992        /*Compute portion of the element that is grounded*/
  • issm/trunk-jpl/src/c/classes/Elements/Tetra.h

    r18884 r18923  
    3939                Object *copy();
    4040                /*}}}*/
    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 #endif
    49                 void  InputUpdateFromIoModel(int index, IoModel* iomodel);
    50                 /*}}}*/
    5141                /*Element virtual functions definitions: {{{*/
    5242                void        AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented yet");};
    5343                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");};
    5446                IssmDouble  CharacteristicLength(void){_error_("not implemented yet");};
    5547                void        ComputeBasalStress(Vector<IssmDouble>* sigma_b){_error_("not implemented yet");};
     
    5749                void        ComputeStressTensor(){_error_("not implemented yet");};
    5850                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");};
    6351                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");};
    6654                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");};
    6757                void        ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz);
     58                void        FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3);
    6859                void        FaceOnFrontIndices(int* pindex1,int* pindex2,int* pindex3);
    69                 void        FaceOnBaseIndices(int* pindex1,int* pindex2,int* pindex3);
    7060                void        FaceOnSurfaceIndices(int* pindex1,int* pindex2,int* pindex3);
     61                int         FiniteElement(void);
    7162                void        FSContactMigration(Vector<IssmDouble>* vertexgrounded,Vector<IssmDouble>* vertexfloating){_error_("not implemented yet");};
    72                 int         FiniteElement(void);
    73                 Element*    GetUpperElement(void){_error_("not implemented yet");};
    7463                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");};
    7572                int         GetNodeIndex(Node* node);
    7673                int         GetNumberOfNodes(void);
    7774                int         GetNumberOfNodes(int enum_type){_error_("not implemented yet");};
    7875                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");};
    7979                void        GetVerticesCoordinatesBase(IssmDouble** pxyz_list);
    8080                void        GetVerticesCoordinatesTop(IssmDouble** pxyz_list);
     81                void        GradientIndexing(int* indexing,int control_index){_error_("not implemented yet");};
    8182                bool        HasFaceOnBase();
    8283                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");};
    8389                bool        IsOnBase();
    8490                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");};
    86100                void        JacobianDeterminant(IssmDouble*  Jdet, IssmDouble* xyz_list,Gauss* gauss);
     101                void        JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
    87102                void        JacobianDeterminantLine(IssmDouble* Jdet, IssmDouble* xyz_list,Gauss* gauss){_error_("not implemented yet");};
    88103                void        JacobianDeterminantSurface(IssmDouble*  pJdet, IssmDouble* xyz_list,Gauss* gauss);
    89                 void        JacobianDeterminantBase(IssmDouble* pJdet,IssmDouble* xyz_list_base,Gauss* gauss);
    90104                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");};
    91109                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");};
    122112                Gauss*      NewGauss(void);
    123113                Gauss*      NewGauss(int order);
     
    128118                Gauss*      NewGaussLine(int vertex1,int vertex2,int order){_error_("not implemented yet");};
    129119                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);
    130163                int         VertexConnectivity(int vertexindex){_error_("not implemented yet");};
    131164                void        VerticalSegmentIndices(int** pindices,int* pnumseg){_error_("not implemented yet");};
    132165                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");};
    136166                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");};
    165167
    166168#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");};
    168170#endif
    169171
    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
    180176                /*}}}*/
    181177};
Note: See TracChangeset for help on using the changeset viewer.