Changeset 15161
- Timestamp:
- 05/30/13 10:08:07 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/hydrology_core.cpp
r15104 r15161 81 81 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SedimentHeadEnum,SedimentHeadOldEnum); 82 82 femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 83 84 if(VerboseSolution()) _printf0_(" computing water transfer\n"); 83 if (isefficientlayer){ 84 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,EplHeadEnum,EplHeadOldEnum); 85 } 85 86 86 87 if(VerboseSolution()) _printf0_(" computing water head\n"); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15151 r15161 2135 2135 name==SedimentHeadOldEnum || 2136 2136 name==SedimentHeadEnum || 2137 name==EplHeadOldEnum || 2138 name==EplHeadEnum || 2137 2139 name==WaterTransferEnum || 2138 2140 name==BasisIntegralEnum || … … 6218 6220 6219 6221 if(reCast<bool,IssmDouble>(dt)){ 6220 old_wh_input=inputs->GetInput(EplHead Enum); _assert_(old_wh_input);6222 old_wh_input=inputs->GetInput(EplHeadOldEnum); _assert_(old_wh_input); 6221 6223 } 6222 6224 … … 6407 6409 this->parameters->FindParam(&penalty_factor,HydrologydcPenaltyFactorEnum); 6408 6410 kappa=kmax*pow(10.,penalty_factor); 6409 6411 6410 6412 for(int i=0;i<NUMVERTICES;i++){ 6411 6413 this->GetHydrologyDCInefficientHmax(&h_max,nodes[i]); … … 6417 6419 residual[i]=0.0; 6418 6420 } 6421 if(this->id==1)printf("residual, %g \n", residual[1]); 6422 if(this->id==1)printf("hSed, %g \n", values[1]); 6419 6423 } 6420 6424 /*Add input to the element: */ … … 6422 6426 this->inputs->AddInput(new TriaP1Input(SedimentHeadEnum,values)); 6423 6427 this->inputs->AddInput(new TriaP1Input(SedimentHeadResidualEnum,residual)); 6424 if(converged)this->inputs->AddInput(new TriaP1Input(SedimentHeadOldEnum,values));6425 6428 6426 6429 /*Free ressources:*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp
r15006 r15161 43 43 iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum); 44 44 iomodel->FetchDataToInput(elements,SedimentHeadEnum); 45 /* iomodel->FetchDataToInput(elements,SedimentHeadOldEnum);*/46 45 47 46 /*Free data: */ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r15150 r15161 90 90 SedimentHeadResidualEnum, 91 91 EplHeadEnum, 92 EplHeadOldEnum, 92 93 HydrologydcRelTolEnum, 93 94 HydrologydcSpcsedimentHeadEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r15150 r15161 98 98 case SedimentHeadResidualEnum : return "SedimentHeadResidual"; 99 99 case EplHeadEnum : return "EplHead"; 100 case EplHeadOldEnum : return "EplHeadOld"; 100 101 case HydrologydcRelTolEnum : return "HydrologydcRelTol"; 101 102 case HydrologydcSpcsedimentHeadEnum : return "HydrologydcSpcsedimentHead"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r15150 r15161 98 98 else if (strcmp(name,"SedimentHeadResidual")==0) return SedimentHeadResidualEnum; 99 99 else if (strcmp(name,"EplHead")==0) return EplHeadEnum; 100 else if (strcmp(name,"EplHeadOld")==0) return EplHeadOldEnum; 100 101 else if (strcmp(name,"HydrologydcRelTol")==0) return HydrologydcRelTolEnum; 101 102 else if (strcmp(name,"HydrologydcSpcsedimentHead")==0) return HydrologydcSpcsedimentHeadEnum; … … 136 137 else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum; 137 138 else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum; 138 else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;139 139 else stage=2; 140 140 } 141 141 if(stage==2){ 142 if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum; 142 if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum; 143 else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum; 143 144 else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum; 144 145 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum; … … 259 260 else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum; 260 261 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; 261 else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; 265 if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum; 266 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; 266 267 else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum; 267 268 else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum; … … 382 383 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; 383 384 else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum; 384 else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum; 388 if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum; 389 else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum; 389 390 else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum; 390 391 else if (strcmp(name,"StringParam")==0) return StringParamEnum; … … 505 506 else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum; 506 507 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 507 else if (strcmp(name,"Step")==0) return StepEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"Time")==0) return TimeEnum; 511 if (strcmp(name,"Step")==0) return StepEnum; 512 else if (strcmp(name,"Time")==0) return TimeEnum; 512 513 else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum; 513 514 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
r15106 r15161 154 154 duf->AYPX(uf_sed,-1.0); 155 155 ndu_sed=duf->Norm(NORM_TWO); nu_sed=aged_uf_sed->Norm(NORM_TWO); 156 if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("convergence criterion is NaN!"); 157 if(isefficientlayer){ 158 duf=aged_uf_epl->Duplicate(); aged_uf_epl->Copy(duf); duf->AYPX(uf_epl,-1.0); 159 ndu_epl=duf->Norm(NORM_TWO); nu_epl=aged_uf_epl->Norm(NORM_TWO); 160 if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("convergence criterion is NaN!"); 161 } 162 //print 156 if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("Sed convergence criterion is NaN!"); 163 157 if (!xIsNan<IssmDouble>(eps_hyd)){ 164 if((ndu_sed/nu_sed)<eps_hyd){ 165 if(VerboseConvergence()) _printf0_(setw(50) << left << " Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << " < " << eps_hyd*100 << " %\n"); 166 hydroconverged=true; 167 } 168 else{ 169 if(VerboseConvergence()) _printf0_(setw(50) << left << " Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << " > " << eps_hyd*100 << " %\n"); 170 hydroconverged=false; 171 } 172 if(isefficientlayer){ 173 if((ndu_epl/nu_epl)<eps_hyd){ 174 if(VerboseConvergence()) _printf0_(setw(50) << left << " EPL Convergence criterion:" << ndu_epl/nu_epl*100 << " < " << eps_hyd*100 << " %\n"); 158 if (!isefficientlayer){ 159 if ((ndu_sed/nu_sed)<eps_hyd){ 160 if(VerboseConvergence()) _printf0_(setw(50) << left << " Converged"); 161 hydroconverged=true; 175 162 } 176 163 else{ 177 if(VerboseConvergence()) _printf0_(setw(50) << left << " EPL Convergence criterion:" << ndu_epl/nu_epl*100 << " > " << eps_hyd*100 << " %\n"); 164 if(VerboseConvergence()) _printf0_(setw(50) << left << " Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << " > " << eps_hyd*100 << " %\n"); 165 hydroconverged=false; 166 } 167 } 168 else{ 169 duf=aged_uf_epl->Duplicate(); aged_uf_epl->Copy(duf); duf->AYPX(uf_epl,-1.0); 170 ndu_epl=duf->Norm(NORM_TWO); nu_epl=aged_uf_epl->Norm(NORM_TWO); 171 if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("EPL convergence criterion is NaN!"); 172 if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/ 173 if ((ndu_epl/nu_epl)<eps_hyd && (ndu_sed/nu_sed)<eps_hyd){ 174 if (VerboseConvergence()) _printf0_(setw(50) << left << " Converged"); 175 hydroconverged=true; 176 } 177 else{ 178 if(VerboseConvergence()) _printf0_(setw(50) << left << " Sediment Convergence criterion:" << ndu_sed/nu_sed*100 << " aiming lower than " << eps_hyd*100 << " % ;"<<ndu_sed <<";"<<nu_sed <<"\n"); 179 if(VerboseConvergence()) _printf0_(setw(50) << left << " EPL Convergence criterion:" << ndu_epl/nu_epl*100 << " aiming lower than " << eps_hyd*100 << ";"<<ndu_epl <<";"<<nu_epl <<" %\n"); 178 180 hydroconverged=false; 179 181 } … … 186 188 } 187 189 hydrocount++; 188 189 190 if(hydroconverged)break; 190 191 } 191 192 192 193 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); 193 194 194 195 /*Free ressources: */ 195 196 delete ug;
Note:
See TracChangeset
for help on using the changeset viewer.