Changeset 21908


Ignore:
Timestamp:
08/01/17 16:22:36 (8 years ago)
Author:
adhikari
Message:

CHG: extract components of moment of intertia tensor

Location:
issm/trunk-jpl/src/c
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/EsaAnalysis.cpp

    r21272 r21908  
    8080                U_elastic_local[i-lower_row]= (love_h[nl-1])/2.0/sin(alpha/2.0);
    8181                H_elastic_local[i-lower_row]= 0;
    82                 IssmDouble Pn,Pn1,Pn2;
    83                 IssmDouble Pn_p,Pn_p1,Pn_p2;
     82                //IssmDouble Pn,Pn1,Pn2;
     83                //IssmDouble Pn_p,Pn_p1,Pn_p2;
     84                IssmDouble Pn = 0.;
     85                IssmDouble Pn1 = 0.;
     86                IssmDouble Pn2 = 0.;
     87                IssmDouble Pn_p = 0.;
     88                IssmDouble Pn_p1 = 0.;
     89                IssmDouble Pn_p2 = 0.;
     90
    8491                for (int n=0;n<nl;n++) {
    8592                        IssmDouble deltalove_U;
  • issm/trunk-jpl/src/c/analyses/SealevelriseAnalysis.cpp

    r21752 r21908  
    127127                        U_elastic_local[i-lower_row]= (love_h[nl-1])/2.0/sin(alpha/2.0);
    128128                        H_elastic_local[i-lower_row]= 0;
    129                         IssmDouble Pn,Pn1,Pn2;
    130                         IssmDouble Pn_p,Pn_p1,Pn_p2;
     129                        IssmDouble Pn = 0.;
     130                        IssmDouble Pn1 = 0.;
     131                        IssmDouble Pn2 = 0.;
     132                        IssmDouble Pn_p = 0.;
     133                        IssmDouble Pn_p1 = 0.;
     134                        IssmDouble Pn_p2 = 0.;
     135
    131136                        for (int n=0;n<nl;n++) {
    132137                                IssmDouble deltalove_G;
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r21861 r21908  
    39203920}
    39213921/*}}}*/
    3922 void FemModel::SealevelriseRotationalFeedback(Vector<IssmDouble>* pSgo_rot, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius){/*{{{*/
     3922void FemModel::SealevelriseRotationalFeedback(Vector<IssmDouble>* pSgo_rot, Vector<IssmDouble>* pSg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius){/*{{{*/
    39233923
    39243924        /*serialized vectors:*/
     
    39963996        pSgo_rot->Assemble();
    39973997       
     3998        /*Assign output pointers:*/
     3999        *pIxz=moi_list[0];
     4000        *pIyz=moi_list[1];
     4001        *pIzz=moi_list[2];
     4002
    39984003        /*Free ressources:*/
    39994004        xDelete<IssmDouble>(Sg_old);
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r21861 r21908  
    137137                void SealevelriseEustatic(Vector<IssmDouble>* pSgi, IssmDouble* peustatic, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);
    138138                void SealevelriseNonEustatic(Vector<IssmDouble>* pSgo, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius,bool verboseconvolution);
    139                 void SealevelriseRotationalFeedback(Vector<IssmDouble>* pSgo_rot, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);
     139                void SealevelriseRotationalFeedback(Vector<IssmDouble>* pSgo_rot, Vector<IssmDouble>* pSg_old, IssmDouble* pIxz, IssmDouble* pIyz, IssmDouble* pIzz, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius);
    140140                void SealevelriseGeodetic(Vector<IssmDouble>* pUp, Vector<IssmDouble>* pNorth, Vector<IssmDouble>* pEast, Vector<IssmDouble>* pSg_old, IssmDouble* latitude, IssmDouble* longitude, IssmDouble* radius, IssmDouble* xx, IssmDouble* yy, IssmDouble* zz);
    141141                IssmDouble SealevelriseOceanAverage(Vector<IssmDouble>* Sg);
  • issm/trunk-jpl/src/c/cores/sealevelrise_core.cpp

    r21760 r21908  
    8383                Sg=sealevelrise_core_noneustatic(femmodel,Sg_eustatic); //ocean loading tems  (2nd and 5th terms on the RHS of Farrel and Clark)
    8484
    85                                
    86        
    8785                /*compute other geodetic signatures, such as absolute sea level chagne, components of 3-D crustal motion: */
    8886                /*Initialize:*/
  • issm/trunk-jpl/src/c/cores/sealevelrise_core_noneustatic.cpp

    r21344 r21908  
    3737        IssmDouble          *radius    = NULL;
    3838        IssmDouble           eustatic;
     39        IssmDouble                              Ixz;
     40        IssmDouble                              Iyz;
     41        IssmDouble                              Izz;
    3942
    4043        /*Recover some parameters: */
     
    8386                        /*call rotational feedback  module: */
    8487                        Sgo_rot = new Vector<IssmDouble>(gsize); Sgo_rot->Assemble();
    85                         femmodel->SealevelriseRotationalFeedback(Sgo_rot,Sg_old,latitude,longitude,radius);
     88                        femmodel->SealevelriseRotationalFeedback(Sgo_rot,Sg_old,&Ixz,&Iyz,&Izz,latitude,longitude,radius);
    8689                        Sgo_rot->Assemble();
    8790
     91                        /*save changes in inertia tensor as results: */
     92                        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelInertiaTensorXZEnum,Ixz));
     93                        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelInertiaTensorYZEnum,Iyz));
     94                        femmodel->results->AddResult(new GenericExternalResult<IssmDouble>(femmodel->results->Size()+1,SealevelInertiaTensorZZEnum,Izz));
     95               
    8896                        Sgo->AXPY(Sgo_rot,1);
     97                        delete Sgo_rot;
    8998                }
    9099               
     
    93102       
    94103                /*Sg is the sum of the eustatic term, and the ocean terms: */
    95                 Sg_eustatic->Copy(Sg); Sg->AXPY(Sgo,1);
     104                Sg_eustatic->Copy(Sg); Sg->AXPY(Sgo,1); delete Sgo;
    96105                Sg->Shift(-Sgo_oceanaverage);
    97106
     
    112121                /*some minor verbosing adjustment:*/
    113122                if(count>1)verboseconvolution=false;
    114                
    115123        }
    116124        if(VerboseConvergence()) _printf0_("\n   total number of iterations: " << count-1 << "\n");
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r21852 r21908  
    795795        SealevelAbsoluteEnum,
    796796        SealevelEustaticEnum,
     797        SealevelInertiaTensorXZEnum,
     798        SealevelInertiaTensorYZEnum,
     799        SealevelInertiaTensorZZEnum,
    797800        SealevelObsEnum,
    798801        SealevelWeightsEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r21852 r21908  
    775775                case SealevelAbsoluteEnum : return "SealevelAbsolute";
    776776                case SealevelEustaticEnum : return "SealevelEustatic";
     777                case SealevelInertiaTensorXZEnum : return "SealevelInertiaTensorXZ";
     778                case SealevelInertiaTensorYZEnum : return "SealevelInertiaTensorYZ";
     779                case SealevelInertiaTensorZZEnum : return "SealevelInertiaTensorZZ";
    777780                case SealevelObsEnum : return "SealevelObs";
    778781                case SealevelWeightsEnum : return "SealevelWeights";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r21852 r21908  
    793793              else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
    794794              else if (strcmp(name,"SealevelEustatic")==0) return SealevelEustaticEnum;
     795              else if (strcmp(name,"SealevelInertiaTensorXZ")==0) return SealevelInertiaTensorXZEnum;
     796              else if (strcmp(name,"SealevelInertiaTensorYZ")==0) return SealevelInertiaTensorYZEnum;
     797              else if (strcmp(name,"SealevelInertiaTensorZZ")==0) return SealevelInertiaTensorZZEnum;
    795798              else if (strcmp(name,"SealevelObs")==0) return SealevelObsEnum;
    796799              else if (strcmp(name,"SealevelWeights")==0) return SealevelWeightsEnum;
     
    872875              else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum;
    873876              else if (strcmp(name,"Matestar")==0) return MatestarEnum;
    874               else if (strcmp(name,"Matpar")==0) return MatparEnum;
    875               else if (strcmp(name,"Node")==0) return NodeEnum;
    876               else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Neumannflux")==0) return NeumannfluxEnum;
     880              if (strcmp(name,"Matpar")==0) return MatparEnum;
     881              else if (strcmp(name,"Node")==0) return NodeEnum;
     882              else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
     883              else if (strcmp(name,"Neumannflux")==0) return NeumannfluxEnum;
    881884              else if (strcmp(name,"Param")==0) return ParamEnum;
    882885              else if (strcmp(name,"Moulin")==0) return MoulinEnum;
     
    995998              else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;
    996999              else if (strcmp(name,"FloatingArea")==0) return FloatingAreaEnum;
    997               else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
    998               else if (strcmp(name,"IceMass")==0) return IceMassEnum;
    999               else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;
     1003              if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
     1004              else if (strcmp(name,"IceMass")==0) return IceMassEnum;
     1005              else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
     1006              else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;
    10041007              else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
    10051008              else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
Note: See TracChangeset for help on using the changeset viewer.