Ignore:
Timestamp:
12/22/21 10:39:44 (3 years ago)
Author:
Mathieu Morlighem
Message:

merged trunk-jpl and trunk for revision 26742

Location:
issm/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk

  • issm/trunk/src

  • issm/trunk/src/c

    • Property svn:ignore
      •  

        old new  
        2020issm
        2121kriging
         22issm_slc
        2223issm_slr
        2324issm_ocean
  • issm/trunk/src/c/classes/Elements/Element.h

    r25836 r26744  
    2323class Materials;
    2424class Material;
     25class Matlitho;
    2526class Inputs;
    2627class Inputs;
     
    3031class DatasetInput;
    3132class IoModel;
    32 class SealevelMasks;
     33class SealevelGeometry;
    3334class Gauss;
     35class GrdLoads;
    3436class ElementVector;
    3537template <class doublematrix> class Matrix;
     
    3739class ElementMatrix;
    3840class ElementVector;
     41class BarystaticContributions;
    3942/*}}}*/
    4043
     
    6568                /*bool               AnyActive(void);*/
    6669                bool               AnyFSet(void);
     70                void                                     AutoregressionInit(int numbasins,int arorder,int nspin,IssmDouble starttime,IssmDouble tstep_ar,IssmDouble tinit_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi,int enum_type);
     71      void               Autoregression(bool isstepforar,int arorder,IssmDouble telapsed_ar,IssmDouble* beta0,IssmDouble* beta1,IssmDouble* phi,bool isfieldstochastic,int enum_type);
    6772                void               ComputeLambdaS(void);
    6873                void               ComputeNewDamage();
     
    7883                void               dViscositydBHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    7984                void               dViscositydBSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
     85                void               dViscositydBMLHO(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vxbase_input,Input* vybase_input, Input* vxshear_input ,Input* vyshear_input,Input* thickness_input,Input* n_input, IssmDouble zeta);
    8086                void               dViscositydDSSA(IssmDouble* pdmudB,int dim,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    8187                void               Echo();
     
    129135                int                Id();
    130136                void               InputCreate(IssmDouble* vector,Inputs* inputs,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code);
     137                void               InputCreateP1FromConstant(Inputs* inputs,IoModel* iomodel,IssmDouble value,int vector_enum);
    131138                void               ControlInputCreate(IssmDouble* doublearray,IssmDouble* independents_min,IssmDouble* independents_max,Inputs*inputs,IoModel* iomodel,int M,int N,IssmDouble scale,int input_enum,int id);
    132139                void                                     DatasetInputAdd(int enum_type,IssmDouble* vector,Inputs* inputs,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code,int input_enum);
     
    134141                void               InputUpdateFromConstant(int constant, int name);
    135142                void               InputUpdateFromConstant(bool constant, int name);
    136 
    137                 bool               IsFloating();
     143                void               InputUpdateFromConstant(IssmDouble constant, int name, int type);
     144
     145                bool               IsAllFloating();
    138146                bool               IsGrounded();
    139147                bool               IsOnBase();
     
    142150                bool               IsIceOnlyInElement();
    143151                bool               IsOceanInElement();
     152                bool               IsOceanOnlyInElement();
    144153                bool               IsLandInElement();
    145154                void               Ismip6FloatingiceMeltingRate();
     
    160169                void               PositiveDegreeDay(IssmDouble* pdds,IssmDouble* pds,IssmDouble signorm,bool ismungsm,bool issetpddfac);
    161170                void               PositiveDegreeDaySicopolis(bool isfirnwarming);
     171                void               RignotMeltParameterization();
    162172                void               ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum);
    163173                void               ResultToPatch(IssmDouble* values,int nodesperelement,int output_enum);
     
    175185                void               StrainRateHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    176186                void               StrainRateHO2dvertical(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
     187                void               StrainRateMLHO(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input,Input* vxshear_input,Input* vyshear_input,Input* thickness_input,Input* n_input,IssmDouble zeta);
    177188                void               StrainRateSSA(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input,Input* vy_input);
    178189                void               StrainRateSSA1d(IssmDouble* epsilon,IssmDouble* xyz_list,Gauss* gauss,Input* vx_input);
     
    209220                IssmDouble         PureIceEnthalpy(IssmDouble pressure);
    210221
    211 
    212222                /*Virtual functions*/
    213223                virtual void       AddBasalInput(int input_enum, IssmDouble* values, int interpolation_enum){_error_("not implemented");};
     
    235245                virtual void       ElementResponse(IssmDouble* presponse,int response_enum)=0;
    236246                virtual void       ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0;
     247                virtual void       ElementCoordinates(Vector<IssmDouble>* vxe,Vector<IssmDouble>* vye,Vector<IssmDouble>* vze, Vector<IssmDouble>* vareae, bool spherical=false)=0;
     248                virtual void       ElementCoordinates(Vector<IssmDouble>* vlonge,Vector<IssmDouble>* vlate,Vector<IssmDouble>* vareae)=0;
    237249                virtual int        FiniteElement(void)=0;
    238250                virtual IssmDouble FloatingArea(bool scaled)=0;
     
    243255                virtual void       GetGroundedPart(int* point1,IssmDouble* fraction1,IssmDouble* fraction2, bool* mainlyfloating)=0;
    244256                virtual IssmDouble GetGroundedPortion(IssmDouble* xyz_list)=0;
     257                virtual void        GetFractionGeometry(IssmDouble* weights, IssmDouble* pphi, int* ppoint1,IssmDouble* pfraction1,IssmDouble* pfraction2, bool* ptrapezeisnegative, IssmDouble* gl)=0;
     258                virtual void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area,  int levelsetenum)=0;
     259                virtual void       GetNodalWeightsAndAreaAndCentroidsFromLeveset(IssmDouble* loadweights, IssmDouble* ploadarea, IssmDouble* platbar, IssmDouble* plongbar, IssmDouble late, IssmDouble longe, IssmDouble area, int levelset1enum, int levelset2enum)=0;
     260                virtual void        GetBarycenterFromLevelset(IssmDouble* platbar, IssmDouble* plongbar,IssmDouble phi,IssmDouble fraction1,IssmDouble fraction2,IssmDouble late, IssmDouble longe, int point1,int istrapeze1, IssmDouble planetradius)=0;
     261
    245262                virtual IssmDouble GetIcefrontArea(){_error_("not implemented");};
    246263                virtual void       GetIcefrontCoordinates(IssmDouble** pxyz_front,IssmDouble* xyz_list,int levelsetenum)=0;
     
    297314                virtual IssmDouble Misfit(int modelenum,int observationenum,int weightsenum)=0;
    298315                virtual IssmDouble MisfitArea(int weightsenum)=0;
     316                virtual void       MovingFrontalVelocity(void){_error_("not implemented yet");};
    299317                virtual Gauss*     NewGauss(void)=0;
    300318                virtual Gauss*     NewGauss(int order)=0;
     
    325343                virtual void       PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0;
    326344                virtual int        PressureInterpolation()=0;
     345      virtual void       Recover3DMLHOInput(int targetVel_enum, int numnodes, IssmDouble* vb,  IssmDouble* vsh, IssmDouble* n, IssmDouble* H, IssmDouble* s){_error_("not implemented yet");};
    327346                virtual void       ReduceMatrices(ElementMatrix* Ke,ElementVector* pe)=0;
    328347                virtual void       ResetFSBasalBoundaryCondition()=0;
    329348                virtual void       ResetHooks()=0;
    330                 virtual void       RignotMeltParameterization(void){_error_("not implemented yet");};
    331                 virtual void       SetElementInput(int enum_in,IssmDouble values){_error_("not implemented yet");};
     349                virtual void       SetElementInput(int enum_in,IssmDouble value){_error_("not implemented yet");};
     350                virtual void       SetElementInput(int enum_in,IssmDouble value, int type)=0;
    332351                virtual void       SetElementInput(Inputs* inputs,int enum_in,IssmDouble values){_error_("not implemented yet");};
    333352                virtual void       SetElementInput(Inputs* inputs,int numindices,int* indices,IssmDouble* values,int enum_in){_error_("not implemented yet");};
     
    337356           virtual Element*   SpawnBasalElement(bool depthaverage_materials=false)=0;
    338357                virtual Element*   SpawnTopElement(void)=0;
     358                virtual bool       IsSpawnedElement(void)=0;
    339359                virtual IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)=0;
    340360                virtual void       StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)=0;
     
    364384                virtual void       WriteFieldIsovalueSegment(DataSet* segments,int fieldenum,IssmDouble fieldvalue){_error_("not implemented yet");};
    365385
    366                 #ifdef _HAVE_GIA_
    367                 virtual void       GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y)=0;
    368                 #endif
    369386                #ifdef _HAVE_ESA_
    370387                virtual void          EsaGeodetic2D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast, Vector<IssmDouble>* pX, Vector<IssmDouble>* pY,IssmDouble* xx,IssmDouble* yy)=0;
    371388                virtual void          EsaGeodetic3D(Vector<IssmDouble>* pUp,Vector<IssmDouble>* pNorth,Vector<IssmDouble>* pEast,IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx,IssmDouble* yy,IssmDouble* zz)=0;
    372389                #endif
    373                 #ifdef _HAVE_SEALEVELRISE_
    374                 virtual void          SetSealevelMasks(SealevelMasks* masks)=0;
     390                #ifdef _HAVE_SEALEVELCHANGE_
    375391                virtual IssmDouble    GetArea3D(void)=0;
    376392                virtual IssmDouble    GetAreaSpherical(void)=0;
    377                 virtual IssmDouble    OceanAverage(IssmDouble* Sg, SealevelMasks* masks)=0;
    378                 virtual void          SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old, SealevelMasks* masks)=0;
    379                 virtual IssmDouble    SealevelriseEustaticIce(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution,IssmDouble* partition,IssmDouble oceanarea)=0;
    380                 virtual IssmDouble    SealevelriseEustaticHydro(IssmDouble* Sgi, SealevelMasks* masks,Vector<IssmDouble>* barystatic_contribution, IssmDouble* partition, IssmDouble oceanarea)=0;
    381                 virtual void          SealevelriseEustaticBottomPressure(IssmDouble* Sgi, SealevelMasks* masks)=0;
    382                 virtual void          SealevelriseGeometry(IssmDouble* latitude,IssmDouble* longitude,IssmDouble* radius,IssmDouble* xx, IssmDouble* yy, IssmDouble* zz)=0;
    383                 virtual void          SealevelriseNonEustatic(IssmDouble* Sgo, IssmDouble* Sg_old,SealevelMasks* mask)=0;
    384                 virtual void          SealevelriseGeodetic(IssmDouble* Up, IssmDouble* North, IssmDouble* East, IssmDouble* Sg,SealevelMasks* masks)=0;
     393                virtual IssmDouble    GetTriangleAreaSpherical(IssmDouble xyz_list[3][3])=0;
     394                virtual void          GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,Matlitho* litho, IssmDouble* x,IssmDouble* y)=0;
     395
     396                virtual void       SealevelchangeGeometrySubElementKernel(SealevelGeometry* slgeom)=0;
     397                virtual void       SealevelchangeMomentOfInertiaCentroid(IssmDouble* dI_list, GrdLoads* loads, SealevelGeometry* slgeom)=0;
     398                virtual void       SealevelchangeShift(GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom)=0;
     399                virtual void       SealevelchangeGeometryInitial(IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae)=0;
     400                virtual void       SealevelchangeGeometryCentroidLoads(SealevelGeometry* slgeom, IssmDouble* xxe, IssmDouble* yye, IssmDouble* zze, IssmDouble* areae)=0;
     401                virtual void       SealevelchangeGeometrySubElementLoads(SealevelGeometry* slgeom, IssmDouble* areae)=0;
     402                virtual void       SealevelchangeBarystaticLoads(GrdLoads* loads, BarystaticContributions* barycontrib, SealevelGeometry* slgeom)=0;
     403                virtual void       SealevelchangeConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom)=0;
     404                virtual void       SealevelchangeOceanAverage(GrdLoads* loads, Vector<IssmDouble>* oceanareas, Vector<IssmDouble>* subelementoceanareas, IssmDouble* sealevelpercpu, SealevelGeometry* slgeom)=0;
     405                virtual void       SealevelchangeDeformationConvolution(IssmDouble* sealevelpercpu, GrdLoads* loads, IssmDouble* rotationvector,SealevelGeometry* slgeom)=0;
     406                virtual void       SealevelchangeMomentOfInertiaSubElement(IssmDouble* dI_list, GrdLoads* loads, SealevelGeometry* slgeom)=0;
     407                virtual void       SealevelchangeUpdateViscousFields()=0;
    385408                #endif
    386409
Note: See TracChangeset for help on using the changeset viewer.