source:
issm/oecreview/Archive/11801-11820/ISSM-11809-11810.diff@
11991
Last change on this file since 11991 was 11991, checked in by , 13 years ago | |
---|---|
File size: 19.9 KB |
-
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/thermal_core.cpp
19 19 /*intermediary*/ 20 20 double time; 21 21 int nsteps; 22 double final_time;22 double starttime,final_time; 23 23 double dt; 24 24 double melting_offset; 25 bool control_analysis;26 int solution_type;27 bool dakota_analysis 25 bool control_analysis; 26 int solution_type; 27 bool dakota_analysis = false; 28 28 29 29 //first recover parameters common to all solutions 30 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 30 31 femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum); 31 32 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 32 33 femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum); … … 38 39 dt=0; 39 40 nsteps=1; 40 41 } 41 else nsteps=(int)(final_time/dt); 42 else nsteps=(int)((final_time-starttime)/dt); 43 time=starttime; 42 44 43 45 if(dakota_analysis){ 44 46 femmodel->SetCurrentConfiguration(ThermalAnalysisEnum); 45 47 ResetConstraintsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 46 48 } 49 printf("start = %g final = %g n=%i\n",starttime,final_time,nsteps); 47 50 48 51 /*Loop through time: */ 49 52 for(i=0;i<nsteps;i++){ 50 53 51 54 if(nsteps)_printf_(VerboseSolution(),"time step: %i/%i\n",i+1,nsteps); 52 time =(i+1)*dt;55 time+=dt; 53 56 femmodel->parameters->SetParam(time,TimeEnum); 54 57 55 58 /*call thermal_core_step: */ -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/transient_core.cpp
22 22 void transient_core(FemModel* femmodel){ 23 23 24 24 /*parameters: */ 25 double finaltime,dt,yts;25 double starttime,finaltime,dt,yts; 26 26 bool control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy; 27 27 bool dakota_analysis=false; 28 28 bool time_adapt=false; … … 38 38 39 39 //first recover parameters common to all solutions 40 40 femmodel->parameters->FindParam(&dim,MeshDimensionEnum); 41 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 41 42 femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum); 42 43 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 43 44 femmodel->parameters->FindParam(&yts,ConstantsYtsEnum); … … 57 58 58 59 /*initialize: */ 59 60 step=0; 60 time= 0;61 time=starttime; 61 62 62 63 /*for qmu analysis, reinitialize velocity so that fake sensitivities do not show up as a result of a different restart of the convergence at each trial.*/ 63 64 if(dakota_analysis){ -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/hydrology_core.cpp
18 18 /*intermediary*/ 19 19 double time; 20 20 int nsteps; 21 double final_time;21 double starttime,final_time; 22 22 double dt; 23 bool control_analysis;24 int solution_type;25 int output_frequency;23 bool control_analysis; 24 int solution_type; 25 int output_frequency; 26 26 27 27 //first recover parameters common to all solutions 28 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 28 29 femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum); 29 30 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 30 31 femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum); … … 39 40 dt=0; 40 41 nsteps=1; 41 42 } 42 else nsteps=(int)(final_time/dt); 43 else nsteps=(int)((final_time-starttime)/dt); 44 time=starttime; 43 45 44 46 /*Loop through time: */ 45 47 for(i=0;i<nsteps;i++){ 46 48 47 49 if(nsteps)_printf_(VerboseSolution(),"time step:%i/%i\n",i+1,nsteps); 48 time =(i+1)*dt;50 time+=dt; 49 51 femmodel->parameters->SetParam(time,TimeEnum); 50 52 51 53 /*call hydrology_core step: */ -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/enthalpy_core.cpp
19 19 /*intermediary*/ 20 20 double time; 21 21 int nsteps; 22 double final_time;22 double starttime,final_time; 23 23 double dt; 24 24 double melting_offset; 25 bool control_analysis;26 int solution_type;25 bool control_analysis; 26 int solution_type; 27 27 28 28 //first recover parameters common to all solutions 29 femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum); 29 30 femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum); 30 31 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 31 32 femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum); … … 36 37 dt=0; 37 38 nsteps=1; 38 39 } 39 else nsteps=(int)(final_time/dt); 40 else nsteps=(int)((final_time-starttime)/dt); 41 time=starttime; 40 42 41 43 /*Loop through time: */ 42 44 for(i=0;i<nsteps;i++){ 43 45 44 46 if(nsteps)_printf_(VerboseSolution(),"time step: %i/%i\n",i+1,nsteps); 45 time =(i+1)*dt;47 time+=dt; 46 48 47 49 /*call enthalpy_core_step: */ 48 50 enthalpy_core_step(femmodel,i,time); -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
162 162 ThermalStabilizationEnum, 163 163 ThermalIsenthalpyEnum, 164 164 ThicknessEnum, 165 TimesteppingStartTimeEnum, 166 TimesteppingFinalTimeEnum, 165 167 TimesteppingCflCoefficientEnum, 166 TimesteppingFinalTimeEnum,167 168 TimesteppingTimeAdaptEnum, 168 169 TimesteppingTimeStepEnum, 169 170 TransientIsdiagnosticEnum, -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp
46 46 47 47 double scale; 48 48 switch(type_enum){ 49 case TimesteppingTimeStepEnum: scale=1.0/yts;break; //yr 50 case TimesteppingFinalTimeEnum: scale=1.0/yts;break; //yr 51 case TimeEnum: scale=1.0/yts;break; //yr 52 case HydrologyWaterVxEnum: scale=yts;break; //m/yr 53 case HydrologyWaterVyEnum: scale=yts;break; //m/yr 54 case VxEnum: scale=yts;break; //m/yr 55 case InversionVxObsEnum: scale=yts;break; //m/yr 56 case VyEnum: scale=yts;break; //m/yr 57 case InversionVyObsEnum: scale=yts;break; //m/yr 58 case VzEnum: scale=yts;break; //m/yr 59 case InversionVzObsEnum: scale=yts;break; //m/yr 60 case VelEnum: scale=yts;break; //m/yr 61 case InversionVelObsEnum: scale=yts;break; //m/yr 62 case BalancethicknessThickeningRateEnum: scale=yts;break; //m/yr 63 case BasalforcingsMeltingRateEnum: scale=yts;break; //m/yr 49 case TimesteppingStartTimeEnum: scale=1.0/yts;break; //yr 50 case TimesteppingFinalTimeEnum: scale=1.0/yts;break; //yr 51 case TimesteppingTimeStepEnum: scale=1.0/yts;break; //yr 52 case TimeEnum: scale=1.0/yts;break; //yr 53 case HydrologyWaterVxEnum: scale=yts;break; //m/yr 54 case HydrologyWaterVyEnum: scale=yts;break; //m/yr 55 case VxEnum: scale=yts;break; //m/yr 56 case InversionVxObsEnum: scale=yts;break; //m/yr 57 case VyEnum: scale=yts;break; //m/yr 58 case InversionVyObsEnum: scale=yts;break; //m/yr 59 case VzEnum: scale=yts;break; //m/yr 60 case InversionVzObsEnum: scale=yts;break; //m/yr 61 case VelEnum: scale=yts;break; //m/yr 62 case InversionVelObsEnum: scale=yts;break; //m/yr 63 case BalancethicknessThickeningRateEnum: scale=yts;break; //m/yr 64 case BasalforcingsMeltingRateEnum: scale=yts;break; //m/yr 64 65 case BasalforcingsMeltingRateCorrectionEnum: scale=yts;break; //m/yr 65 case SurfaceforcingsPrecipitationEnum: scale=yts;break; //m/yr66 case SurfaceforcingsMassBalanceEnum: scale=yts;break; //m/yr67 case MisfitEnum: scale=pow(yts,2);break; //(m/yr)^268 case MassFluxEnum: scale=pow((double)10,-12)*yts;break; // (GigaTon/year)66 case SurfaceforcingsPrecipitationEnum: scale=yts;break; //m/yr 67 case SurfaceforcingsMassBalanceEnum: scale=yts;break; //m/yr 68 case MisfitEnum: scale=pow(yts,2);break; //(m/yr)^2 69 case MassFluxEnum: scale=pow((double)10,-12)*yts;break; // (GigaTon/year) 69 70 default: scale=1.0; break; 70 71 } 71 72 return scale; 72 73 } 73 74 75 -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
170 170 else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum; 171 171 else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum; 172 172 else if (strcmp(name,"Thickness")==0) return ThicknessEnum; 173 else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum; 174 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; 173 175 else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum; 174 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;175 176 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; 176 177 else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum; 177 178 else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum; … … 258 259 else if (strcmp(name,"Node")==0) return NodeEnum; 259 260 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 260 261 else if (strcmp(name,"Param")==0) return ParamEnum; 261 else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"Pengrid")==0) return PengridEnum; 265 if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum; 266 else if (strcmp(name,"Pengrid")==0) return PengridEnum; 266 267 else if (strcmp(name,"Penpair")==0) return PenpairEnum; 267 268 else if (strcmp(name,"Penta")==0) return PentaEnum; 268 269 else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum; … … 381 382 else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum; 382 383 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 383 384 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 384 else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 388 if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum; 389 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 389 390 else if (strcmp(name,"J")==0) return JEnum; 390 391 else if (strcmp(name,"Patch")==0) return PatchEnum; 391 392 else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum; -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
166 166 case ThermalStabilizationEnum : return "ThermalStabilization"; 167 167 case ThermalIsenthalpyEnum : return "ThermalIsenthalpy"; 168 168 case ThicknessEnum : return "Thickness"; 169 case TimesteppingStartTimeEnum : return "TimesteppingStartTime"; 170 case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime"; 169 171 case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient"; 170 case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";171 172 case TimesteppingTimeAdaptEnum : return "TimesteppingTimeAdapt"; 172 173 case TimesteppingTimeStepEnum : return "TimesteppingTimeStep"; 173 174 case TransientIsdiagnosticEnum : return "TransientIsdiagnostic"; -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
44 44 parameters->AddObject(iomodel->CopyConstantObject(SteadystateReltolEnum)); 45 45 parameters->AddObject(iomodel->CopyConstantObject(SteadystateMaxiterEnum)); 46 46 parameters->AddObject(iomodel->CopyConstantObject(ConstantsYtsEnum)); 47 parameters->AddObject(iomodel->CopyConstantObject(Timestepping TimeStepEnum));47 parameters->AddObject(iomodel->CopyConstantObject(TimesteppingStartTimeEnum)); 48 48 parameters->AddObject(iomodel->CopyConstantObject(TimesteppingFinalTimeEnum)); 49 49 parameters->AddObject(iomodel->CopyConstantObject(TimesteppingTimeAdaptEnum)); 50 parameters->AddObject(iomodel->CopyConstantObject(TimesteppingTimeStepEnum)); 50 51 parameters->AddObject(iomodel->CopyConstantObject(TimesteppingCflCoefficientEnum)); 51 52 parameters->AddObject(iomodel->CopyConstantObject(PrognosticHydrostaticAdjustmentEnum)); 52 53 parameters->AddObject(iomodel->CopyConstantObject(PrognosticStabilizationEnum)); -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/solutions/transient_core.m
6 6 7 7 %recover parameters common to all solutions 8 8 dim=femmodel.parameters.MeshDimension; 9 ndt=femmodel.parameters.TimesteppingFinalTime; 9 starttime=femmodel.parameters.TimesteppingStartTime; 10 finaltime=femmodel.parameters.TimesteppingFinalTime; 10 11 dt=femmodel.parameters.TimesteppingTimeStep; 11 12 yts=femmodel.parameters.ConstantsYts; 12 13 control_analysis=femmodel.parameters.InversionIscontrol; … … 22 23 groundinglinemigration=femmodel.parameters.GroundinglineMigration; 23 24 24 25 %Initialize 25 time= 0;26 time=starttime; 26 27 step=0; 27 28 28 29 %for qmu analysis, be sure the velocity input we are starting from is the one in the parameters: … … 41 42 end 42 43 43 44 %Loop through time 44 while (time < ndt - (yts*eps)),45 while (time < finaltime+eps), 45 46 46 47 %Increment 47 48 if(time_adapt), 48 49 dt=TimeAdapt(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 49 if(time+dt> ndt), dt=ndt-time; end50 if(time+dt>finaltime), dt=finaltime-time; end 50 51 femmodel.parameters.TimesteppingTimeStep=dt; 51 52 end 52 53 step=step+1; 53 54 time=time+dt; 54 55 femmodel.parameters.Time=time; 55 56 56 issmprintf(VerboseSolution,'\n%s%g%s%i%s%g\n','time [yr] ',time/yts,' iteration number: ',step,'/',floor( ndt/dt));57 issmprintf(VerboseSolution,'\n%s%g%s%i%s%g\n','time [yr] ',time/yts,' iteration number: ',step,'/',floor((finaltime-starttime)/dt)); 57 58 58 59 if (isthermal & dim==3) 59 60 issmprintf(VerboseSolution,'\n%s',[' computing temperature']); … … 83 84 GroundinglineMigration(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters); 84 85 end 85 86 86 if (solution_type==TransientSolutionEnum & ~control_analysis & (mod(step,output_frequency)==0 | time== ndt)),87 if (solution_type==TransientSolutionEnum & ~control_analysis & (mod(step,output_frequency)==0 | time==finaltime)), 87 88 issmprintf(VerboseSolution,'\n%s',[' saving results']); 88 89 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VxEnum,step,time); 89 90 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VyEnum,step,time); -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/enum/TimesteppingStartTimeEnum.m
1 function macro=TimesteppingStartTimeEnum() 2 %TIMESTEPPINGSTARTTIMEENUM - Enum of TimesteppingStartTime 3 % 4 % WARNING: DO NOT MODIFY THIS FILE 5 % this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh 6 % Please read src/c/EnumDefinitions/README for more information 7 % 8 % Usage: 9 % macro=TimesteppingStartTimeEnum() 10 11 macro=StringToEnum('TimesteppingStartTime'); -
proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/classes/timestepping.m
5 5 6 6 classdef timestepping 7 7 properties (SetAccess=public) 8 start_time = 0; 9 final_time = 0; 8 10 time_step = 0; 9 final_time = 0;10 11 time_adapt = 0; 11 12 cfl_coefficient = 0; 12 13 end … … 40 41 end % }}} 41 42 function checkconsistency(obj,md,solution,analyses) % {{{ 42 43 44 checkfield(md,'timestepping.start_time','numel',1,'NaN',1); 45 checkfield(md,'timestepping.final_time','numel',1,'NaN',1); 46 checkfield(md,'timestepping.time_step','numel',1,'>=',0,'NaN',1); 43 47 checkfield(md,'timestepping.time_adapt','numel',1,'values',[0 1]); 44 48 checkfield(md,'timestepping.cfl_coefficient','numel',1,'>',0,'<=',1); 49 if obj.final_time-obj.start_time<0, 50 checkmessage('timestepping.final_time should be larger than timestepping.start_time'); 51 end 45 52 end % }}} 46 53 function disp(obj) % {{{ 47 54 disp(sprintf(' timestepping parameters:')); 48 55 56 fielddisplay(obj,'start_time','simulation starting time [yrs]'); 57 fielddisplay(obj,'final_time','final time to stop the simulation [yrs]'); 49 58 fielddisplay(obj,'time_step','length of time steps [yrs]'); 50 fielddisplay(obj,'final_time','final time to stop the simulation [yrs]');51 59 fielddisplay(obj,'time_adapt','use cfl condition to define time step ? (0 or 1) '); 52 60 fielddisplay(obj,'cfl_coefficient','coefficient applied to cfl condition'); 53 61 54 62 end % }}} 55 63 function marshall(obj,fid) % {{{ 64 WriteData(fid,'object',obj,'fieldname','start_time','format','Double'); 65 WriteData(fid,'object',obj,'fieldname','final_time','format','Double'); 56 66 WriteData(fid,'object',obj,'fieldname','time_step','format','Double'); 57 WriteData(fid,'object',obj,'fieldname','final_time','format','Double');58 67 WriteData(fid,'object',obj,'fieldname','time_adapt','format','Boolean'); 59 68 WriteData(fid,'object',obj,'fieldname','cfl_coefficient','format','Double'); 60 69 end % }}}
Note:
See TracBrowser
for help on using the repository browser.