Changeset 11810
- Timestamp:
- 03/29/12 11:32:29 (13 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 1 added
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h
r11695 r11810 163 163 ThermalIsenthalpyEnum, 164 164 ThicknessEnum, 165 TimesteppingStartTimeEnum, 166 TimesteppingFinalTimeEnum, 165 167 TimesteppingCflCoefficientEnum, 166 TimesteppingFinalTimeEnum,167 168 TimesteppingTimeAdaptEnum, 168 169 TimesteppingTimeStepEnum, -
issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp
r11695 r11810 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"; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r11347 r11810 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)); -
issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp
r11695 r11810 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; … … 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; … … 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; -
issm/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp
r11509 r11810 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 -
issm/trunk-jpl/src/c/solutions/enthalpy_core.cpp
r11299 r11810 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); … … 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: */ … … 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: */ -
issm/trunk-jpl/src/c/solutions/hydrology_core.cpp
r10989 r11810 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); … … 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: */ … … 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 -
issm/trunk-jpl/src/c/solutions/thermal_core.cpp
r10989 r11810 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); … … 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){ … … 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: */ … … 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 -
issm/trunk-jpl/src/c/solutions/transient_core.cpp
r11347 r11810 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; … … 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); … … 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.*/ -
issm/trunk-jpl/src/m/classes/timestepping.m
r10969 r11810 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; … … 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'); … … 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'); -
issm/trunk-jpl/src/m/solutions/transient_core.m
r11347 r11810 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; … … 23 24 24 25 %Initialize 25 time= 0;26 time=starttime; 26 27 step=0; 27 28 … … 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 … … 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) … … 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);
Note:
See TracChangeset
for help on using the changeset viewer.