Changeset 11813


Ignore:
Timestamp:
03/29/12 14:28:46 (13 years ago)
Author:
seroussi
Message:

added option to use thermal and/or diagnostic in steady-state solution

Location:
issm/trunk-jpl/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r11810 r11813  
    172172        TransientIsprognosticEnum,
    173173        TransientIsthermalEnum,
     174        SteadystateIsdiagnosticEnum,
     175        SteadystateIsthermalEnum,
    174176        TransientNumRequestedOutputsEnum,
    175177        TransientRequestedOutputsEnum,
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r11810 r11813  
    176176                case TransientIsprognosticEnum : return "TransientIsprognostic";
    177177                case TransientIsthermalEnum : return "TransientIsthermal";
     178                case SteadystateIsdiagnosticEnum : return "SteadystateIsdiagnostic";
     179                case SteadystateIsthermalEnum : return "SteadystateIsthermal";
    178180                case TransientNumRequestedOutputsEnum : return "TransientNumRequestedOutputs";
    179181                case TransientRequestedOutputsEnum : return "TransientRequestedOutputs";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r11810 r11813  
    8181        parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum));
    8282        parameters->AddObject(iomodel->CopyConstantObject(ThermalIsenthalpyEnum));
     83        parameters->AddObject(iomodel->CopyConstantObject(SteadystateIsdiagnosticEnum));
     84        parameters->AddObject(iomodel->CopyConstantObject(SteadystateIsthermalEnum));
    8385        parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
    8486        parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum));
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp

    r11603 r11813  
    2121        int   i,analysis_type,dim,verbose;
    2222        bool  isthermal,isprognostic,isdiagnostic,isgroundingline,isenthalpy;
     23        bool  steadystateisthermal,steadystateisdiagnostic;
    2324       
    2425        /*output: */
     
    4344        iomodel->Constant(&isdiagnostic,TransientIsdiagnosticEnum);
    4445        iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
     46        iomodel->Constant(&steadystateisthermal,SteadystateIsthermalEnum);
     47        iomodel->Constant(&steadystateisdiagnostic,SteadystateIsdiagnosticEnum);
    4548       
    4649        SetVerbosityLevel(verbose);
     
    6770                if(solution_type==SteadystateSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;
    6871                if(solution_type==SteadystateSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;
     72                if(solution_type==SteadystateSolutionEnum && analysis_type==EnthalpyAnalysisEnum && steadystateisthermal==false) continue;
     73                if(solution_type==SteadystateSolutionEnum && analysis_type==ThermalAnalysisEnum && steadystateisthermal==false) continue;
     74                if(solution_type==SteadystateSolutionEnum && analysis_type==DiagnosticHorizAnalysisEnum && steadystateisdiagnostic==false) continue;
     75                if(solution_type==SteadystateSolutionEnum && analysis_type==DiagnosticVertAnalysisEnum && steadystateisdiagnostic==false) continue;
     76                if(solution_type==SteadystateSolutionEnum && analysis_type==DiagnosticHutterAnalysisEnum && steadystateisdiagnostic==false) continue;
    6977       
    7078                _printf_(VerboseMProcessor(),"   creating datasets for analysis %s\n",EnumToStringx(analysis_type));
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r11810 r11813  
    180180              else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;
    181181              else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;
     182              else if (strcmp(name,"SteadystateIsdiagnostic")==0) return SteadystateIsdiagnosticEnum;
     183              else if (strcmp(name,"SteadystateIsthermal")==0) return SteadystateIsthermalEnum;
    182184              else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;
    183185              else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;
     
    258260              else if (strcmp(name,"Matpar")==0) return MatparEnum;
    259261              else if (strcmp(name,"Node")==0) return NodeEnum;
    260               else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
    261               else if (strcmp(name,"Param")==0) return ParamEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
     265              if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;
     266              else if (strcmp(name,"Param")==0) return ParamEnum;
     267              else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;
    266268              else if (strcmp(name,"Pengrid")==0) return PengridEnum;
    267269              else if (strcmp(name,"Penpair")==0) return PenpairEnum;
     
    381383              else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;
    382384              else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;
    383               else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
    384               else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
     388              if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
     389              else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
     390              else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;
    389391              else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
    390392              else if (strcmp(name,"J")==0) return JEnum;
  • issm/trunk-jpl/src/c/solutions/steadystate_core.cpp

    r11603 r11813  
    2626        /*parameters: */
    2727        bool control_analysis,isenthalpy;
     28        bool isthermal,isdiagnostic;
    2829        int  dim;
    2930        int  solution_type;
     
    3940        femmodel->parameters->FindParam(&numoutputs,SteadystateNumRequestedOutputsEnum);
    4041        femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
     42        femmodel->parameters->FindParam(&isthermal,SteadystateIsthermalEnum);
     43        femmodel->parameters->FindParam(&isdiagnostic,SteadystateIsdiagnosticEnum);
    4144        if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SteadystateRequestedOutputsEnum);
    4245
     
    4649        for(;;){
    4750       
    48                 _printf_(VerboseSolution(),"%s%i\n","   computing temperature and velocity for step: ",step);
    4951                #ifdef _HAVE_THERMAL_
    50                 if(isenthalpy==0){
    51                         thermal_core(femmodel);
    52                 }
    53                 else{
    54                         enthalpy_core(femmodel);
     52                if(isthermal){
     53                        _printf_(VerboseSolution(),"%s%i\n","   computing temperature and velocity for step: ",step);
     54                        if(isenthalpy==0){
     55                                thermal_core(femmodel);
     56                        }
     57                        else{
     58                                enthalpy_core(femmodel);
     59                        }
    5560                }
    5661                #else
     
    5863                #endif
    5964
    60                 _printf_(VerboseSolution(),"%s\n","   computing new velocity");
    61                 diagnostic_core(femmodel);
     65                if(isdiagnostic){
     66                        _printf_(VerboseSolution(),"%s\n","   computing new velocity");
     67                        diagnostic_core(femmodel);
     68                }
    6269
    6370                if (step>1){
  • issm/trunk-jpl/src/m/classes/steadystate.m

    r10969 r11813  
    88                reltol            = 0;
    99                maxiter           = 0;
     10                isdiagnostic      = 0;
     11                isthermal         = 0;
    1012                requested_outputs = NaN;
    1113        end
     
    3234                        %Relative tolerance for the steadystate convertgence
    3335                        obj.reltol=0.01;
     36                         
     37                        %Default is diagnostic and thermal
     38                        obj.isdiagnostic=1;
     39                        obj.isthermal=1;
    3440                end % }}}
    3541                function checkconsistency(obj,md,solution,analyses) % {{{
     
    4551                                checkmessage(['model not consistent: for a steadystate computation, diagnostic.reltol (relative convergence criterion) must be defined!']);
    4652                        end
     53
     54                        checkfield(md,'transient.isdiagnostic','numel',1,'values',[0 1]);
     55                        checkfield(md,'transient.isthermal','numel',1,'values',[0 1]);
    4756                end % }}}
    4857                function disp(obj) % {{{
     
    5160                        fielddisplay(obj,'reltol','relative tolerance criterion');
    5261                        fielddisplay(obj,'maxiter','maximum number of iterations');
     62                        fielddisplay(obj,'isthermal','indicates if a thermal solution is used in the steady-state');
     63                        fielddisplay(obj,'isdiagnostic','indicates if a diagnostic solution is used in the steady-state');
    5364                        fielddisplay(obj,'requested_outputs','additional requested outputs');
    5465
     
    5768                        WriteData(fid,'object',obj,'fieldname','reltol','format','Double');
    5869                        WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer');
     70                        WriteData(fid,'object',obj,'fieldname','isdiagnostic','format','Boolean');
     71                        WriteData(fid,'object',obj,'fieldname','isthermal','format','Boolean');
    5972                        WriteData(fid,'object',obj,'fieldname','requested_outputs','format','DoubleMat','mattype',3);
    6073                end % }}}
  • issm/trunk-jpl/src/m/solutions/steadystate_core.m

    r11607 r11813  
    1111        solution_type=femmodel.parameters.SolutionType;
    1212        isenthalpy=femmodel.parameters.ThermalIsenthalpy;
     13        isdiagnostic=femmodel.parameters.SteadystateIsdiagnostic;
     14        isthermal=femmodel.parameters.SteadystateIsthermal;
    1315
    1416        %Initialize counter
     
    1719        while true,
    1820
    19                 issmprintf(VerboseSolution,'\n%s%i\n','   computing velocities and temperatures for step: ',step);
    20                 if (isenthalpy==0),
    21                         femmodel=thermal_core(femmodel);
    22                 else
    23                         femmodel=enthalpy_core(femmodel);
     21                if(isthermal),
     22                        issmprintf(VerboseSolution,'\n%s%i\n','   computing velocities and temperatures for step: ',step);
     23                        if (isenthalpy==0),
     24                                femmodel=thermal_core(femmodel);
     25                        else
     26                                femmodel=enthalpy_core(femmodel);
     27                        end
    2428                end
    2529
    26                 issmprintf(VerboseSolution,'\n%s',['   computing new velocity']);
    27                 femmodel=diagnostic_core(femmodel);
     30                if(isdiagnostic),
     31                        issmprintf(VerboseSolution,'\n%s',['   computing new velocity']);
     32                        femmodel=diagnostic_core(femmodel);
     33                end
    2834
    2935                if step>1,
Note: See TracChangeset for help on using the changeset viewer.