Changeset 22974
- Timestamp:
- 07/19/18 14:22:19 (7 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.cpp
r22911 r22974 57 57 /* Check if ice in element */ 58 58 if(!element->IsIceInElement()) return NULL; 59 //if(!element->IsFloating()) return NULL; 59 60 60 61 /*Intermediaries */ 61 62 int domaintype,dim; 62 IssmDouble Jdet,D_scalar ,dt,h;63 IssmDouble Jdet,D_scalar; 63 64 IssmDouble vel,vx,vy,dvxdx,dvydy; 64 65 IssmDouble dvx[2],dvy[2]; … … 81 82 IssmDouble* B = xNew<IssmDouble>(dim*numnodes); 82 83 IssmDouble* Bprime = xNew<IssmDouble>(dim*numnodes); 83 IssmDouble * D = xNewZeroInit<IssmDouble>(dim*dim);84 IssmDouble D[2][2] = {0.}; 84 85 85 86 /*Retrieve all inputs and parameters*/ 86 87 element->GetVerticesCoordinates(&xyz_list); 87 element->FindParam(&dt,TimesteppingTimeStepEnum); 88 element->FindParam(&domaintype,DomainTypeEnum); 89 _error_("Change speed"); 90 Input* vxaverage_input=element->GetInput(VxAverageEnum); _assert_(vxaverage_input); 91 Input* vyaverage_input=element->GetInput(VyAverageEnum); _assert_(vyaverage_input); 92 93 h = element->CharacteristicLength(); 88 Input* vx_input=element->GetInput(BaseSlopeXEnum); _assert_(vx_input); 89 Input* vy_input=element->GetInput(BaseSlopeYEnum); _assert_(vy_input); 90 91 IssmDouble h = element->CharacteristicLength(); 94 92 95 93 /* Start looping on the number of gaussian points: */ … … 99 97 100 98 element->JacobianDeterminant(&Jdet,xyz_list,gauss); 101 element->NodalFunctions(basis,gauss);102 103 vxaverage_input->GetInputValue(&vx,gauss);104 vxaverage_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss);105 vyaverage_input->GetInputValue(&vy,gauss);106 vyaverage_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss);107 108 D_scalar=gauss->weight*Jdet;109 TripleMultiply(basis,1,numnodes,1,110 &D_scalar,1,1,0,111 basis,1,numnodes,0,112 &Ke->values[0],1);113 114 99 GetB(B,element,dim,xyz_list,gauss); 115 100 GetBprime(Bprime,element,dim,xyz_list,gauss); 116 101 102 vx_input->GetInputValue(&vx,gauss); 103 vy_input->GetInputValue(&vy,gauss); 104 vx_input->GetInputDerivativeValue(&dvx[0],xyz_list,gauss); 105 vy_input->GetInputDerivativeValue(&dvy[0],xyz_list,gauss); 117 106 dvxdx=dvx[0]; 118 107 dvydy=dvy[1]; 119 D_scalar=dt*gauss->weight*Jdet; 120 121 D[0*dim+0]=D_scalar*dvxdx; 122 D[1*dim+1]=D_scalar*dvydy; 123 124 TripleMultiply(B,dim,numnodes,1, 125 D,dim,dim,0, 126 B,dim,numnodes,0, 127 &Ke->values[0],1); 128 129 D[0*dim+0]=D_scalar*vx; 130 D[1*dim+1]=D_scalar*vy; 131 132 TripleMultiply(B,dim,numnodes,1, 133 D,dim,dim,0, 134 Bprime,dim,numnodes,0, 135 &Ke->values[0],1); 136 137 /*SSA Stabilization*/ 138 vxaverage_input->GetInputAverage(&vx); 139 vyaverage_input->GetInputAverage(&vy); 140 D[0*dim+0]=h/2.0*fabs(vx); 141 D[1*dim+1]=h/2.0*fabs(vy); 142 D[0*dim+0]=D_scalar*D[0*dim+0]; 143 D[1*dim+0]=D_scalar*D[1*dim+0]; 144 D[0*dim+1]=D_scalar*D[0*dim+1]; 145 D[1*dim+1]=D_scalar*D[1*dim+1]; 146 147 TripleMultiply(Bprime,dim,numnodes,1, 148 D,dim,dim,0, 149 Bprime,dim,numnodes,0, 108 D_scalar=gauss->weight*Jdet; 109 110 /*Advection*/ 111 //D[0][0]=D_scalar*dvxdx; 112 //D[0][1]=0.; 113 //D[1][0]=0.; 114 //D[1][1]=D_scalar*dvydy; 115 //TripleMultiply(B,2,numnodes,1, 116 // &D[0][0],2,2,0, 117 // B,2,numnodes,0, 118 // &Ke->values[0],1); 119 120 //vx = 0.; 121 //vy = -.1; 122 if(sqrt(vx*vx+vy*vy)>0.28){ 123 /*Advection*/ 124 D[0][0]=D_scalar*vx; 125 D[1][1]=D_scalar*vy; 126 TripleMultiply(B,2,numnodes,1, 127 &D[0][0],2,2,0, 128 Bprime,2,numnodes,0, 129 &Ke->values[0],1); 130 } 131 else{ 132 /*Diffusion*/ 133 D[0][0]=1e5*h/2.0; 134 D[1][1]=1e5*h/2.0; 135 TripleMultiply(Bprime,2,numnodes,1, 136 &D[0][0],2,2,0, 137 Bprime,2,numnodes,0, 138 &Ke->values[0],1); 139 } 140 141 /*Stabilization*/ 142 D[0][0]=h/2.0*fabs(vx); 143 D[0][1]=0.; 144 D[1][0]=0.; 145 D[1][1]=h/2.0*fabs(vy); 146 TripleMultiply(Bprime,2,numnodes,1, 147 &D[0][0],2,2,0, 148 Bprime,2,numnodes,0, 150 149 &Ke->values[0],1); 151 150 } … … 153 152 /*Clean up and return*/ 154 153 xDelete<IssmDouble>(xyz_list); 155 xDelete<IssmDouble>(basis);156 154 xDelete<IssmDouble>(B); 157 155 xDelete<IssmDouble>(Bprime); 158 xDelete<IssmDouble>(D);159 156 delete gauss; 160 157 return Ke; … … 186 183 }/*}}}*/ 187 184 void GLheightadvectionAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/ 188 _error_("To be implemented"); 185 186 /*Deal with ocean constraint*/ 187 SetActiveNodesLSMx(femmodel); 188 189 /*Constrain all nodes that are grounded and unconstrain the ones that float*/ 190 for(int i=0;i<femmodel->elements->Size();i++){ 191 Element *element = xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i)); 192 193 if(!element->IsIceInElement()) continue; 194 int numnodes = element->GetNumberOfNodes(); 195 IssmDouble *mask = xNew<IssmDouble>(numnodes); 196 IssmDouble *bed = xNew<IssmDouble>(numnodes); 197 IssmDouble *lset = xNew<IssmDouble>(numnodes); 198 199 element->GetInputListOnNodes(&mask[0],MaskGroundediceLevelsetEnum); 200 element->GetInputListOnNodes(&bed[0],BaseEnum); 201 element->GetInputListOnNodes(&lset[0],MaskIceLevelsetEnum); 202 203 for(int in=0;in<numnodes;in++){ 204 Node* node=element->GetNode(in); 205 if(mask[in]<0.){ 206 node->Activate(); 207 } 208 else{ 209 node->Deactivate(); 210 node->ApplyConstraint(0,bed[in]); 211 } 212 } 213 xDelete<IssmDouble>(mask); 214 xDelete<IssmDouble>(bed); 215 xDelete<IssmDouble>(lset); 216 } 217 218 219 189 220 return; 190 221 }/*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r22955 r22974 284 284 virtual void PicoUpdateBoxid(int* pmax_boxid_basin)=0; 285 285 virtual void PicoUpdateBox(int loopboxid)=0; 286 virtual void PicoComputeBaseSlope(void)=0;287 virtual void PicoComputeGroundingLineDepth(void)=0;288 286 virtual void PicoComputeBasalMelt(void)=0; 289 287 virtual void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r22955 r22974 143 143 void PicoUpdateBoxid(int* pmax_boxid_basin){_error_("not implemented yet");}; 144 144 void PicoUpdateBox(int loopboxid){_error_("not implemented yet");}; 145 void PicoComputeBaseSlope(void){_error_("not implemented yet");};146 void PicoComputeGroundingLineDepth(void){_error_("not implemented yet");};147 145 void PicoComputeBasalMelt(void){_error_("not implemented yet");}; 148 146 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r22955 r22974 132 132 void PicoUpdateBoxid(int* pmax_boxid_basin){_error_("not implemented yet");}; 133 133 void PicoUpdateBox(int loopboxid){_error_("not implemented yet");}; 134 void PicoComputeBaseSlope(void){_error_("not implemented yet");};135 void PicoComputeGroundingLineDepth(void){_error_("not implemented yet");};136 134 void PicoComputeBasalMelt(void){_error_("not implemented yet");}; 137 135 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r22955 r22974 140 140 void PicoUpdateBoxid(int* pmax_boxid_basin){_error_("not implemented yet");}; 141 141 void PicoUpdateBox(int loopboxid){_error_("not implemented yet");}; 142 void PicoComputeBaseSlope(void){_error_("not implemented yet");};143 void PicoComputeGroundingLineDepth(void){_error_("not implemented yet");};144 142 void PicoComputeBasalMelt(void){_error_("not implemented yet");}; 145 143 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r22964 r22974 2923 2923 } 2924 2924 } 2925 if(boxid==-1) {_error_("No boxid found for element " << this->Sid() << "!");}2925 if(boxid==-1) _error_("No boxid found for element " << this->Sid() << "!"); 2926 2926 2927 2927 this->inputs->AddInput(new IntInput(BasalforcingsPicoBoxIdEnum, boxid)); … … 2997 2997 2998 2998 /* To avoid negatives under the square root */ 2999 if((0.25*pow(p_coeff,2)-q_coeff)<0){ 3000 q_coeff = 0.25*p_coeff*p_coeff; 3001 } 2999 if((0.25*pow(p_coeff,2)-q_coeff)<0) q_coeff = 0.25*p_coeff*p_coeff; 3002 3000 3003 3001 Tocs[i] = toc_farocean-(-0.5*p_coeff+sqrt(0.25*pow(p_coeff,2)-q_coeff)); 3004 3002 Socs[i] = soc_farocean-(soc_farocean/(nu*lambda))*(toc_farocean-Tocs[i]); 3005 3003 potential_pressure_melting_point[i] = a*Socs[i]+b-c*pressure; 3006 if(!isplume) {basalmeltrates_shelf[i] = (-gamma_T/(nu*lambda))*(potential_pressure_melting_point[i]-Tocs[i]);}3004 if(!isplume) basalmeltrates_shelf[i] = (-gamma_T/(nu*lambda))*(potential_pressure_melting_point[i]-Tocs[i]); 3007 3005 overturnings[i] = overturning_coeff*rho_star*(Beta*(soc_farocean-Socs[i])-alpha*(toc_farocean-Tocs[i])); 3008 3006 } 3009 3007 3010 if(!isplume) {this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,basalmeltrates_shelf,P1Enum);}3008 if(!isplume) this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,basalmeltrates_shelf,P1Enum); 3011 3009 this->AddInput(BasalforcingsPicoSubShelfOceanTempEnum,Tocs,P1Enum); 3012 3010 this->AddInput(BasalforcingsPicoSubShelfOceanSalinityEnum,Socs,P1Enum); … … 3041 3039 Socs[i] = mean_soc-mean_soc*((mean_toc-Tocs[i])/(nu*lambda)); 3042 3040 potential_pressure_melting_point[i] = a*Socs[i]+b-c*pressure; 3043 if(!isplume) {basalmeltrates_shelf[i] = (-gamma_T/(nu*lambda))*(potential_pressure_melting_point[i]-Tocs[i]);}3044 } 3045 3046 if(!isplume) {this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,basalmeltrates_shelf,P1Enum);}3041 if(!isplume) basalmeltrates_shelf[i] = (-gamma_T/(nu*lambda))*(potential_pressure_melting_point[i]-Tocs[i]); 3042 } 3043 3044 if(!isplume) this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,basalmeltrates_shelf,P1Enum); 3047 3045 this->AddInput(BasalforcingsPicoSubShelfOceanTempEnum,Tocs,P1Enum); 3048 3046 this->AddInput(BasalforcingsPicoSubShelfOceanSalinityEnum,Socs,P1Enum); … … 3059 3057 } 3060 3058 /*}}}*/ 3061 void Tria::PicoComputeBaseSlope(void){/*{{{*/3062 3063 //if(!this->IsIceInElement() || !this->IsFloating()) return;3064 3065 /*Define variables and get inputs */3066 IssmDouble slopex,slopey;3067 IssmDouble slope[NUMVERTICES];3068 Input* baseslopex_input = this->GetInput(BaseSlopeXEnum); _assert_(baseslopex_input);3069 Input* baseslopey_input = this->GetInput(BaseSlopeYEnum); _assert_(baseslopey_input);3070 3071 Gauss* gauss=this->NewGauss();3072 for(int i=0;i<NUMVERTICES;i++){3073 gauss->GaussVertex(i);3074 baseslopex_input->GetInputValue(&slopex,gauss);3075 baseslopey_input->GetInputValue(&slopey,gauss);3076 slope[i] = sqrt(slopex*slopex + slopey*slopey);3077 }3078 3079 this->AddInput(BasalforcingsPicoShelfSlopeEnum,slope,P1Enum);3080 3081 /*Cleanup and return*/3082 delete gauss;3083 }/*}}}*/3084 void Tria::PicoComputeGroundingLineDepth(void){/*{{{*/3085 3086 if(!this->IsIceInElement() || !this->IsFloating()) return;3087 3088 /*Define variables and get inputs */3089 IssmDouble bed;3090 IssmDouble zgl[NUMVERTICES];3091 Input* bed_input = this->GetInput(BedEnum); _assert_(bed_input);3092 3093 Gauss* gauss=this->NewGauss();3094 for(int i=0;i<NUMVERTICES;i++){3095 gauss->GaussVertex(i);3096 bed_input->GetInputValue(&bed,gauss);3097 zgl[i] = bed -50.;3098 }3099 3100 this->AddInput(BasalforcingsPicoGroundingLineDepthEnum,zgl,P1Enum);3101 3102 /*Cleanup and return*/3103 delete gauss;3104 }/*}}}*/3105 3059 void Tria::PicoComputeBasalMelt(void){/*{{{*/ 3106 3060 … … 3109 3063 IssmDouble E0, Cd, CdT, YT, lam1, lam2, lam3, M0, CdTS0, y1, y2, x0; 3110 3064 IssmDouble Tf_gl, YTS, CdTS, G1, G2, G3, g_alpha, M, l, X_hat, M_hat; 3111 IssmDouble alpha, zgl, Toc, Soc, z_base, yts ;3065 IssmDouble alpha, zgl, Toc, Soc, z_base, yts, slopex, slopey; 3112 3066 3113 3067 /*Get variables*/ … … 3127 3081 /*Define arrays*/ 3128 3082 IssmDouble basalmeltrates_shelf[NUMVERTICES]; //Basal melt-rate 3083 //IssmDouble slope[NUMVERTICES]; //Basal slope 3129 3084 3130 3085 /*Polynomial coefficients*/ … … 3144 3099 3145 3100 /*Get inputs*/ 3146 Input* alpha_input=this->GetInput(BasalforcingsPicoShelfSlopeEnum); _assert_(alpha_input); 3147 Input* zgl_input=this->GetInput(BasalforcingsPicoGroundingLineDepthEnum); _assert_(zgl_input); 3148 Input* toc_input=this->GetInput(BasalforcingsPicoSubShelfOceanTempEnum); _assert_(toc_input); 3149 Input* soc_input=this->GetInput(BasalforcingsPicoSubShelfOceanSalinityEnum); _assert_(soc_input); 3150 Input* base_input=this->GetInput(BaseEnum); _assert_(base_input); 3101 Input* zgl_input = this->GetInput(GroundinglineHeightEnum); _assert_(zgl_input); 3102 Input* toc_input = this->GetInput(BasalforcingsPicoSubShelfOceanTempEnum); _assert_(toc_input); 3103 Input* soc_input = this->GetInput(BasalforcingsPicoSubShelfOceanSalinityEnum); _assert_(soc_input); 3104 Input* base_input = this->GetInput(BaseEnum); _assert_(base_input); 3105 Input* baseslopex_input = this->GetInput(BaseSlopeXEnum); _assert_(baseslopex_input); 3106 Input* baseslopey_input = this->GetInput(BaseSlopeYEnum); _assert_(baseslopey_input); 3151 3107 this->FindParam(&yts, ConstantsYtsEnum); 3152 3108 … … 3157 3113 3158 3114 /*Get inputs*/ 3159 alpha_input->GetInputValue(&alpha,gauss);3160 3115 zgl_input->GetInputValue(&zgl,gauss); 3161 3116 toc_input->GetInputValue(&Toc,gauss); //(K) 3162 3117 soc_input->GetInputValue(&Soc,gauss); 3163 3118 base_input->GetInputValue(&z_base,gauss); 3119 baseslopex_input->GetInputValue(&slopex,gauss); 3120 baseslopey_input->GetInputValue(&slopey,gauss); 3121 3122 /*Compute ice shelf base slope*/ 3123 alpha = sqrt(slopex*slopex + slopey*slopey); 3164 3124 3165 3125 /*Make necessary conversions*/ 3166 Toc = Toc-273.15; // (Degrees C) 3167 alpha = atan(alpha); // (Degrees) 3126 Toc = Toc-273.15; 3127 alpha = atan(alpha); 3128 if(zgl>z_base) zgl=z_base-10; 3168 3129 3169 3130 /*Low bound for Toc to ensure X_hat is between 0 and 1*/ 3170 if(Toc<lam1*Soc+lam2) {Toc=lam1*Soc+lam2;}3131 if(Toc<lam1*Soc+lam2) Toc=lam1*Soc+lam2; 3171 3132 3172 3133 /*Compute parameters needed for melt-rate calculation*/ … … 3186 3147 for(int ii=0;ii<12;ii++) { 3187 3148 M_hat += p[ii]*pow(X_hat,ii); //Polynomial fit 3188 3149 } 3189 3150 3190 3151 /*Compute melt-rate*/ -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r22955 r22974 114 114 void PicoUpdateBoxid(int* pmax_boxid_basin); 115 115 void PicoUpdateBox(int loopboxid); 116 void PicoComputeBaseSlope(void);117 void PicoComputeGroundingLineDepth(void);118 116 void PicoComputeBasalMelt(void); 119 117 void PotentialUngrounding(Vector<IssmDouble>* potential_sheet_ungrounding); -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r22957 r22974 660 660 analyses_temp[numanalyses++]=MasstransportAnalysisEnum; 661 661 analyses_temp[numanalyses++]=ExtrudeFromBaseAnalysisEnum; 662 662 663 break; 663 664 … … 753 754 if(ismasstransport || isgroundingline){ 754 755 analyses_temp[numanalyses++]=MasstransportAnalysisEnum; 756 int basalforcing_model; 757 iomodel->FindConstant(&basalforcing_model,"md.basalforcings.model"); 758 if(basalforcing_model==BasalforcingsPicoEnum){ 759 bool isplume; 760 iomodel->FindConstant(&isplume,"md.basalforcings.isplume"); 761 if(isplume){ 762 analyses_temp[numanalyses++]=GLheightadvectionAnalysisEnum; 763 } 764 } 755 765 } 756 766 if(issmb) analyses_temp[numanalyses++]=SmbAnalysisEnum; … … 1033 1043 segmentlist[(numseg_offset+i)*4 + 3] = segment->y[1]; 1034 1044 } 1045 1035 1046 ISSM_MPI_Allreduce((void*)segmentlist,(void*)allsegmentlist,4*numseg,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm()); 1036 1047 delete segments; … … 1044 1055 element->CreateDistanceInputFromSegmentlist(allsegmentlist,numseg,distanceenum); 1045 1056 } 1046 1047 1057 1048 1058 /*Extrude if necessary*/ -
issm/trunk-jpl/src/c/cores/bmb_core.cpp
r22918 r22974 27 27 femmodel->parameters->SetParam(BaseSlopeYEnum,InputToL2ProjectEnum); 28 28 solutionsequence_linear(femmodel); 29 femmodel->SetCurrentConfiguration(GLheightadvectionAnalysisEnum); 30 solutionsequence_linear(femmodel); 29 31 } 30 32 } -
issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp
r22918 r22974 21 21 } 22 22 23 /*PICO nelt rate parameterization (Reese et al., 2018)*/23 /*PICO melt rate parameterization (Reese et al., 2018)*/ 24 24 femmodel->parameters->FindParam(&maxbox,BasalforcingsPicoMaxboxcountEnum); 25 25 UpdateBoxIdsPico(femmodel); … … 32 32 /*Optional buoyant plume melt rate parameterization (Lazeroms et al., 2018) */ 33 33 femmodel->parameters->FindParam(&isplume,BasalforcingsPicoIsplumeEnum); 34 if(isplume){ 35 ComputeSubshelfSlopePlume(femmodel); 36 ComputeGroundingLineDepthPlume(femmodel); 37 ComputeBasalMeltPlume(femmodel); 38 } 34 if(isplume) ComputeBasalMeltPlume(femmodel); 39 35 }/*}}}*/ 40 36 … … 52 48 femmodel->elements->InputDuplicate(MaskGroundediceLevelsetEnum,DistanceToGroundinglineEnum); 53 49 femmodel->DistanceToFieldValue(MaskGroundediceLevelsetEnum,0.,DistanceToGroundinglineEnum); 54 50 55 51 femmodel->elements->InputDuplicate(MaskIceLevelsetEnum,DistanceToCalvingfrontEnum); 56 52 femmodel->DistanceToFieldValue(MaskIceLevelsetEnum,0.,DistanceToCalvingfrontEnum); … … 125 121 IssmDouble* sumareas =xNew<IssmDouble>(num_basins*maxbox); 126 122 ISSM_MPI_Allreduce(boxareas,sumareas,num_basins*maxbox,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,IssmComm::GetComm()); 127 if(sumareas[0]==0){_error_("No elements in box 0, basal meltrates will be 0. Consider decreasing md.basalforcings.maxboxcount or refining your mesh!");}123 //if(sumareas[0]==0){_error_("No elements in box 0, basal meltrates will be 0. Consider decreasing md.basalforcings.maxboxcount or refining your mesh!");} 128 124 129 125 /*Update parameters to keep track of the new areas in future calculations*/ … … 232 228 xDelete<IssmDouble>(boxareas); 233 229 }/*}}}*/ 234 void ComputeSubshelfSlopePlume(FemModel* femmodel){/*{{{*/235 for(int i=0;i<femmodel->elements->Size();i++){236 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));237 element->PicoComputeBaseSlope();238 }239 }/*}}}*/240 void ComputeGroundingLineDepthPlume(FemModel* femmodel){/*{{{*/241 for(int i=0;i<femmodel->elements->Size();i++){242 Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));243 element->PicoComputeGroundingLineDepth();244 }245 }/*}}}*/246 230 void ComputeBasalMeltPlume(FemModel* femmodel){/*{{{*/ 247 231 for(int i=0;i<femmodel->elements->Size();i++){ -
issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.h
r22918 r22974 15 15 void UpdateBoxPico(FemModel* femmodel, int loopboxid); 16 16 void ComputeAverageOceanvarsPico(FemModel* femmodel, int boxid); 17 void ComputeSubshelfSlopePlume(FemModel* femmodel);18 void ComputeGroundingLineDepthPlume(FemModel* femmodel);19 17 void ComputeBasalMeltPlume(FemModel* femmodel); 20 18 -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r22951 r22974 397 397 BasalforcingsPicoBasinIdEnum, 398 398 BasalforcingsPicoBoxIdEnum, 399 BasalforcingsPicoGroundingLineDepthEnum,400 BasalforcingsPicoShelfSlopeEnum,401 399 BasalforcingsPicoSubShelfOceanOverturningEnum, 402 400 BasalforcingsPicoSubShelfOceanSalinityEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r22951 r22974 403 403 case BasalforcingsPicoBasinIdEnum : return "BasalforcingsPicoBasinId"; 404 404 case BasalforcingsPicoBoxIdEnum : return "BasalforcingsPicoBoxId"; 405 case BasalforcingsPicoGroundingLineDepthEnum : return "BasalforcingsPicoGroundingLineDepth";406 case BasalforcingsPicoShelfSlopeEnum : return "BasalforcingsPicoShelfSlope";407 405 case BasalforcingsPicoSubShelfOceanOverturningEnum : return "BasalforcingsPicoSubShelfOceanOverturning"; 408 406 case BasalforcingsPicoSubShelfOceanSalinityEnum : return "BasalforcingsPicoSubShelfOceanSalinity"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r22951 r22974 412 412 else if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum; 413 413 else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum; 414 else if (strcmp(name,"BasalforcingsPicoGroundingLineDepth")==0) return BasalforcingsPicoGroundingLineDepthEnum;415 else if (strcmp(name,"BasalforcingsPicoShelfSlope")==0) return BasalforcingsPicoShelfSlopeEnum;416 414 else if (strcmp(name,"BasalforcingsPicoSubShelfOceanOverturning")==0) return BasalforcingsPicoSubShelfOceanOverturningEnum; 417 415 else if (strcmp(name,"BasalforcingsPicoSubShelfOceanSalinity")==0) return BasalforcingsPicoSubShelfOceanSalinityEnum; … … 506 504 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 507 505 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; 506 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 507 else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum; 508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 512 else if (strcmp(name,"LevelsetfunctionSlopeX")==0) return LevelsetfunctionSlopeXEnum; 513 else if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; 511 if (strcmp(name,"LevelsetfunctionSlopeY")==0) return LevelsetfunctionSlopeYEnum; 514 512 else if (strcmp(name,"LoadingforceX")==0) return LoadingforceXEnum; 515 513 else if (strcmp(name,"LoadingforceY")==0) return LoadingforceYEnum; … … 629 627 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 630 628 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 629 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 630 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 635 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 636 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 634 if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 637 635 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; 638 636 else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum; … … 752 750 else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum; 753 751 else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum; 752 else if (strcmp(name,"EplHeadStacked")==0) return EplHeadStackedEnum; 753 else if (strcmp(name,"EplHead")==0) return EplHeadEnum; 754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"EplHeadStacked")==0) return EplHeadStackedEnum; 758 else if (strcmp(name,"EplHead")==0) return EplHeadEnum; 759 else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum; 757 if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum; 760 758 else if (strcmp(name,"EsaEmotion")==0) return EsaEmotionEnum; 761 759 else if (strcmp(name,"EsaNmotion")==0) return EsaNmotionEnum; … … 875 873 else if (strcmp(name,"Masscon")==0) return MassconEnum; 876 874 else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum; 875 else if (strcmp(name,"MassFlux")==0) return MassFluxEnum; 876 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum; 877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"MassFlux")==0) return MassFluxEnum; 881 else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum; 882 else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 880 if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 883 881 else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum; 884 882 else if (strcmp(name,"Matenhancedice")==0) return MatenhancediceEnum; … … 998 996 else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum; 999 997 else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum; 998 else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum; 999 else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum; 1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum; 1004 else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum; 1005 else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum; 1003 if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum; 1006 1004 else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum; 1007 1005 else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum; … … 1121 1119 else if (strcmp(name,"SSAFSApproximation")==0) return SSAFSApproximationEnum; 1122 1120 else if (strcmp(name,"SSAHOApproximation")==0) return SSAHOApproximationEnum; 1121 else if (strcmp(name,"Sset")==0) return SsetEnum; 1122 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; 1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"Sset")==0) return SsetEnum; 1127 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; 1128 else if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 1126 if (strcmp(name,"StressbalanceAnalysis")==0) return StressbalanceAnalysisEnum; 1129 1127 else if (strcmp(name,"StressbalanceConvergenceNumSteps")==0) return StressbalanceConvergenceNumStepsEnum; 1130 1128 else if (strcmp(name,"StressbalanceSIAAnalysis")==0) return StressbalanceSIAAnalysisEnum;
Note:
See TracChangeset
for help on using the changeset viewer.