source: issm/oecreview/Archive/11801-11820/ISSM-11809-11810.diff@ 11991

Last change on this file since 11991 was 11991, checked in by Eric.Larour, 13 years ago

oecreview from 11518 to present

File size: 19.9 KB
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/thermal_core.cpp

     
    1919        /*intermediary*/
    2020        double time;
    2121        int    nsteps;
    22         double final_time;
     22        double starttime,final_time;
    2323        double dt;
    2424        double melting_offset;
    25         bool control_analysis;
    26         int solution_type;
    27         bool   dakota_analysis         = false;
     25        bool   control_analysis;
     26        int    solution_type;
     27        bool   dakota_analysis  = false;
    2828
    2929        //first recover parameters common to all solutions
     30        femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
    3031        femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
    3132        femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    3233        femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
     
    3839                dt=0;
    3940                nsteps=1;
    4041        }
    41         else nsteps=(int)(final_time/dt);
     42        else nsteps=(int)((final_time-starttime)/dt);
     43        time=starttime;
    4244
    4345        if(dakota_analysis){
    4446                femmodel->SetCurrentConfiguration(ThermalAnalysisEnum);
    4547                ResetConstraintsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    4648        }
     49        printf("start = %g final = %g n=%i\n",starttime,final_time,nsteps);
    4750
    4851        /*Loop through time: */
    4952        for(i=0;i<nsteps;i++){
    5053               
    5154                if(nsteps)_printf_(VerboseSolution(),"time step: %i/%i\n",i+1,nsteps);
    52                 time=(i+1)*dt;
     55                time+=dt;
    5356                femmodel->parameters->SetParam(time,TimeEnum);
    5457
    5558                /*call thermal_core_step: */
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/transient_core.cpp

     
    2222void transient_core(FemModel* femmodel){
    2323
    2424        /*parameters: */
    25         double finaltime,dt,yts;
     25        double starttime,finaltime,dt,yts;
    2626        bool   control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy;
    2727        bool   dakota_analysis=false;
    2828        bool   time_adapt=false;
     
    3838
    3939        //first recover parameters common to all solutions
    4040        femmodel->parameters->FindParam(&dim,MeshDimensionEnum);
     41        femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
    4142        femmodel->parameters->FindParam(&finaltime,TimesteppingFinalTimeEnum);
    4243        femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    4344        femmodel->parameters->FindParam(&yts,ConstantsYtsEnum);
     
    5758
    5859        /*initialize: */
    5960        step=0;
    60         time=0;
     61        time=starttime;
    6162
    6263        /*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.*/
    6364        if(dakota_analysis){
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/hydrology_core.cpp

     
    1818        /*intermediary*/
    1919        double time;
    2020        int    nsteps;
    21         double final_time;
     21        double starttime,final_time;
    2222        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;
    2626
    2727        //first recover parameters common to all solutions
     28        femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
    2829        femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
    2930        femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    3031        femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
     
    3940                dt=0;
    4041                nsteps=1;
    4142        }
    42         else nsteps=(int)(final_time/dt);
     43        else nsteps=(int)((final_time-starttime)/dt);
     44        time=starttime;
    4345
    4446        /*Loop through time: */
    4547        for(i=0;i<nsteps;i++){
    4648               
    4749                if(nsteps)_printf_(VerboseSolution(),"time step:%i/%i\n",i+1,nsteps);
    48                 time=(i+1)*dt;
     50                time+=dt;
    4951                femmodel->parameters->SetParam(time,TimeEnum);
    5052
    5153                /*call hydrology_core step: */
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/solutions/enthalpy_core.cpp

     
    1919        /*intermediary*/
    2020        double time;
    2121        int    nsteps;
    22         double final_time;
     22        double starttime,final_time;
    2323        double dt;
    2424        double melting_offset;
    25         bool control_analysis;
    26         int solution_type;
     25        bool   control_analysis;
     26        int    solution_type;
    2727
    2828        //first recover parameters common to all solutions
     29        femmodel->parameters->FindParam(&starttime,TimesteppingStartTimeEnum);
    2930        femmodel->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
    3031        femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum);
    3132        femmodel->parameters->FindParam(&control_analysis,InversionIscontrolEnum);
     
    3637                dt=0;
    3738                nsteps=1;
    3839        }
    39         else nsteps=(int)(final_time/dt);
     40        else nsteps=(int)((final_time-starttime)/dt);
     41        time=starttime;
    4042
    4143        /*Loop through time: */
    4244        for(i=0;i<nsteps;i++){
    4345               
    4446                if(nsteps)_printf_(VerboseSolution(),"time step: %i/%i\n",i+1,nsteps);
    45                 time=(i+1)*dt;
     47                time+=dt;
    4648
    4749                /*call enthalpy_core_step: */
    4850                enthalpy_core_step(femmodel,i,time);
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

     
    162162        ThermalStabilizationEnum,
    163163        ThermalIsenthalpyEnum,
    164164        ThicknessEnum,
     165        TimesteppingStartTimeEnum,
     166        TimesteppingFinalTimeEnum,
    165167        TimesteppingCflCoefficientEnum,
    166         TimesteppingFinalTimeEnum,
    167168        TimesteppingTimeAdaptEnum,
    168169        TimesteppingTimeStepEnum,
    169170        TransientIsdiagnosticEnum,
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/shared/Numerics/UnitConversion.cpp

     
    4646       
    4747        double scale;
    4848        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
    6465                case BasalforcingsMeltingRateCorrectionEnum: scale=yts;break; //m/yr
    65                 case SurfaceforcingsPrecipitationEnum:     scale=yts;break; //m/yr
    66                 case SurfaceforcingsMassBalanceEnum:      scale=yts;break; //m/yr
    67                 case MisfitEnum:      scale=pow(yts,2);break; //(m/yr)^2
    68                 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)
    6970                default: scale=1.0; break;
    7071        }
    7172        return scale;
    7273}
    73 
    74 
    75 
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

     
    170170              else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;
    171171              else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;
    172172              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;
    173175              else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;
    174               else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;
    175176              else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;
    176177              else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
    177178              else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;
     
    258259              else if (strcmp(name,"Node")==0) return NodeEnum;
    259260              else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    260261              else if (strcmp(name,"Param")==0) return ParamEnum;
    261               else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
    262262         else stage=3;
    263263   }
    264264   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;
    266267              else if (strcmp(name,"Penpair")==0) return PenpairEnum;
    267268              else if (strcmp(name,"Penta")==0) return PentaEnum;
    268269              else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum;
     
    381382              else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
    382383              else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
    383384              else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
    384               else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
    385385         else stage=4;
    386386   }
    387387   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;
    389390              else if (strcmp(name,"J")==0) return JEnum;
    390391              else if (strcmp(name,"Patch")==0) return PatchEnum;
    391392              else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum;
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

     
    166166                case ThermalStabilizationEnum : return "ThermalStabilization";
    167167                case ThermalIsenthalpyEnum : return "ThermalIsenthalpy";
    168168                case ThicknessEnum : return "Thickness";
     169                case TimesteppingStartTimeEnum : return "TimesteppingStartTime";
     170                case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";
    169171                case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient";
    170                 case TimesteppingFinalTimeEnum : return "TimesteppingFinalTime";
    171172                case TimesteppingTimeAdaptEnum : return "TimesteppingTimeAdapt";
    172173                case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
    173174                case TransientIsdiagnosticEnum : return "TransientIsdiagnostic";
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

     
    4444        parameters->AddObject(iomodel->CopyConstantObject(SteadystateReltolEnum));
    4545        parameters->AddObject(iomodel->CopyConstantObject(SteadystateMaxiterEnum));
    4646        parameters->AddObject(iomodel->CopyConstantObject(ConstantsYtsEnum));
    47         parameters->AddObject(iomodel->CopyConstantObject(TimesteppingTimeStepEnum));
     47        parameters->AddObject(iomodel->CopyConstantObject(TimesteppingStartTimeEnum));
    4848        parameters->AddObject(iomodel->CopyConstantObject(TimesteppingFinalTimeEnum));
    4949        parameters->AddObject(iomodel->CopyConstantObject(TimesteppingTimeAdaptEnum));
     50        parameters->AddObject(iomodel->CopyConstantObject(TimesteppingTimeStepEnum));
    5051        parameters->AddObject(iomodel->CopyConstantObject(TimesteppingCflCoefficientEnum));
    5152        parameters->AddObject(iomodel->CopyConstantObject(PrognosticHydrostaticAdjustmentEnum));
    5253        parameters->AddObject(iomodel->CopyConstantObject(PrognosticStabilizationEnum));
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/solutions/transient_core.m

     
    66
    77        %recover parameters common to all solutions
    88        dim=femmodel.parameters.MeshDimension;
    9         ndt=femmodel.parameters.TimesteppingFinalTime;
     9        starttime=femmodel.parameters.TimesteppingStartTime;
     10        finaltime=femmodel.parameters.TimesteppingFinalTime;
    1011        dt=femmodel.parameters.TimesteppingTimeStep;
    1112        yts=femmodel.parameters.ConstantsYts;
    1213        control_analysis=femmodel.parameters.InversionIscontrol;
     
    2223        groundinglinemigration=femmodel.parameters.GroundinglineMigration;
    2324
    2425        %Initialize
    25         time=0;
     26        time=starttime;
    2627        step=0;
    2728
    2829        %for qmu analysis, be sure the velocity input we are starting from  is the one in the parameters:
     
    4142        end
    4243
    4344        %Loop through time
    44         while (time < ndt - (yts*eps)),
     45        while (time < finaltime+eps),
    4546
    4647                %Increment
    4748                if(time_adapt),
    4849                        dt=TimeAdapt(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
    49                         if(time+dt>ndt), dt=ndt-time; end
     50                        if(time+dt>finaltime), dt=finaltime-time; end
    5051                        femmodel.parameters.TimesteppingTimeStep=dt;
    5152                end
    5253                step=step+1;
    5354                time=time+dt;
    5455                femmodel.parameters.Time=time;
    5556
    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));
    5758
    5859                if (isthermal & dim==3)
    5960                        issmprintf(VerboseSolution,'\n%s',['   computing temperature']);
     
    8384                                GroundinglineMigration(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters);
    8485                end
    8586
    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)),
    8788                        issmprintf(VerboseSolution,'\n%s',['   saving results']);
    8889                        femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,VxEnum,step,time);
    8990                        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

     
     1function 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
     11macro=StringToEnum('TimesteppingStartTime');
  • proj/ice/larour/issm-uci-clean/trunk-jpl/src/m/classes/timestepping.m

     
    55
    66classdef timestepping
    77        properties (SetAccess=public)
     8                start_time      = 0;
     9                final_time      = 0;
    810                time_step       = 0;
    9                 final_time      = 0;
    1011                time_adapt      = 0;
    1112                cfl_coefficient = 0;
    1213        end
     
    4041                end % }}}
    4142                function checkconsistency(obj,md,solution,analyses) % {{{
    4243
     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);
    4347                        checkfield(md,'timestepping.time_adapt','numel',1,'values',[0 1]);
    4448                        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
    4552                end % }}}
    4653                function disp(obj) % {{{
    4754                        disp(sprintf('   timestepping parameters:'));
    4855
     56                        fielddisplay(obj,'start_time','simulation starting time [yrs]');
     57                        fielddisplay(obj,'final_time','final time to stop the simulation [yrs]');
    4958                        fielddisplay(obj,'time_step','length of time steps [yrs]');
    50                         fielddisplay(obj,'final_time','final time to stop the simulation [yrs]');
    5159                        fielddisplay(obj,'time_adapt','use cfl condition to define time step ? (0 or 1) ');
    5260                        fielddisplay(obj,'cfl_coefficient','coefficient applied to cfl condition');
    5361
    5462                end % }}}
    5563                function marshall(obj,fid) % {{{
     64                        WriteData(fid,'object',obj,'fieldname','start_time','format','Double');
     65                        WriteData(fid,'object',obj,'fieldname','final_time','format','Double');
    5666                        WriteData(fid,'object',obj,'fieldname','time_step','format','Double');
    57                         WriteData(fid,'object',obj,'fieldname','final_time','format','Double');
    5867                        WriteData(fid,'object',obj,'fieldname','time_adapt','format','Boolean');
    5968                        WriteData(fid,'object',obj,'fieldname','cfl_coefficient','format','Double');
    6069                end % }}}
Note: See TracBrowser for help on using the repository browser.