Changeset 23758


Ignore:
Timestamp:
02/26/19 12:51:34 (6 years ago)
Author:
schlegel
Message:

CHG: change results on nodes to be a list of strings instead of a bool

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r23644 r23758  
    51515151void           StressbalanceAnalysis::InputUpdateFromSolutionFS(IssmDouble* solution,Element* element){/*{{{*/
    51525152
    5153         bool         results_on_nodes;
    51545153        int          i,dim;
    51555154        int*         vdoflist=NULL;
     
    51595158        element->FindParam(&dim,DomainDimensionEnum);
    51605159        element->FindParam(&FSreconditioning,StressbalanceFSreconditioningEnum);
    5161         element->FindParam(&results_on_nodes,SettingsResultsOnNodesEnum);
    51625160
    51635161        /*Fetch number of nodes and dof for this finite element*/
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r23672 r23758  
    21342134        /*Intermediaries*/
    21352135        bool        isvec,results_on_nodes;
    2136         int         step,output_enum;
     2136        int         step,output_enum,numonnodes;
    21372137        IssmDouble  time;
    21382138        IssmDouble  double_result;
    21392139        const char *output_string = NULL;
     2140        char**      resultsonnodes = NULL;
    21402141
    21412142        /*recover results*/
     
    21462147        parameters->FindParam(&step,StepEnum);
    21472148        parameters->FindParam(&time,TimeEnum);
    2148         parameters->FindParam(&results_on_nodes,SettingsResultsOnNodesEnum);
     2149        parameters->FindParam(&numonnodes,SettingsNumResultsOnNodesEnum);
     2150        if(numonnodes) parameters->FindParam(&resultsonnodes,&numonnodes,SettingsResultsOnNodesEnum);
    21492151
    21502152        /*Go through all requested output*/
     
    22492251                                                ISSM_MPI_Bcast(&nodesperelement,1,ISSM_MPI_INT,0,IssmComm::GetComm());
    22502252                                                ISSM_MPI_Bcast(&array_size,1,ISSM_MPI_INT,0,IssmComm::GetComm());
     2253
     2254                                                results_on_nodes=false;
     2255                                                /*Loop to see if this output was requested on nodes*/
     2256                                                for(int j=0;j<numonnodes & results_on_nodes==false;j++){
     2257                                                        if(strcmp(resultsonnodes[j],output_string) == 0 || strcmp(resultsonnodes[j],"all") == 0) results_on_nodes=true;
     2258                                                }
    22512259
    22522260                                                if(results_on_nodes){
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r23697 r23758  
    2121        int         numoutputs,basalforcing_model,timestepping_type;
    2222        char**      requestedoutputs = NULL;
     23        char**      outputonnodes = NULL;
    2324        char*       fieldname = NULL;
    2425        IssmDouble  time;
     
    5455        parameters->AddObject(iomodel->CopyConstantObject("md.settings.waitonlock",SettingsWaitonlockEnum));
    5556        parameters->AddObject(iomodel->CopyConstantObject("md.mesh.numberofvertices",MeshNumberofverticesEnum));
    56         parameters->AddObject(iomodel->CopyConstantObject("md.settings.results_on_nodes",SettingsResultsOnNodesEnum));
    5757        parameters->AddObject(iomodel->CopyConstantObject("md.settings.io_gather",SettingsIoGatherEnum));
    5858        parameters->AddObject(iomodel->CopyConstantObject("md.settings.solver_residue_threshold",SettingsSolverResidueThresholdEnum));
     
    261261        /*By default, save all results*/
    262262        parameters->AddObject(new BoolParam(SaveResultsEnum,true));
     263
     264        /*Should we output results on nodes?*/
     265        iomodel->FindConstant(&outputonnodes,&numoutputs,"md.settings.results_on_nodes");
     266        parameters->AddObject(new IntParam(SettingsNumResultsOnNodesEnum,numoutputs));
     267        if(numoutputs)parameters->AddObject(new StringArrayParam(SettingsResultsOnNodesEnum,outputonnodes,numoutputs));
     268        iomodel->DeleteData(&outputonnodes,numoutputs,"md.settings.results_on_nodes");
    263269
    264270        /*Requested outputs */
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r23697 r23758  
    306306        SettingsRecordingFrequencyEnum,
    307307        SettingsResultsOnNodesEnum,
     308        SettingsNumResultsOnNodesEnum,
    308309        SettingsSolverResidueThresholdEnum,
    309310        SettingsWaitonlockEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r23697 r23758  
    314314                case SettingsRecordingFrequencyEnum : return "SettingsRecordingFrequency";
    315315                case SettingsResultsOnNodesEnum : return "SettingsResultsOnNodes";
     316                case SettingsNumResultsOnNodesEnum : return "SettingsNumResultsOnNodes";
    316317                case SettingsSolverResidueThresholdEnum : return "SettingsSolverResidueThreshold";
    317318                case SettingsWaitonlockEnum : return "SettingsWaitonlock";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r23697 r23758  
    320320              else if (strcmp(name,"SettingsRecordingFrequency")==0) return SettingsRecordingFrequencyEnum;
    321321              else if (strcmp(name,"SettingsResultsOnNodes")==0) return SettingsResultsOnNodesEnum;
     322              else if (strcmp(name,"SettingsNumResultsOnNodes")==0) return SettingsNumResultsOnNodesEnum;
    322323              else if (strcmp(name,"SettingsSolverResidueThreshold")==0) return SettingsSolverResidueThresholdEnum;
    323324              else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
     
    382383              else if (strcmp(name,"StressbalanceIsnewton")==0) return StressbalanceIsnewtonEnum;
    383384              else if (strcmp(name,"StressbalanceMaxiter")==0) return StressbalanceMaxiterEnum;
    384               else if (strcmp(name,"StressbalanceNumRequestedOutputs")==0) return StressbalanceNumRequestedOutputsEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"StressbalancePenaltyFactor")==0) return StressbalancePenaltyFactorEnum;
     388              if (strcmp(name,"StressbalanceNumRequestedOutputs")==0) return StressbalanceNumRequestedOutputsEnum;
     389              else if (strcmp(name,"StressbalancePenaltyFactor")==0) return StressbalancePenaltyFactorEnum;
    389390              else if (strcmp(name,"StressbalanceReltol")==0) return StressbalanceReltolEnum;
    390391              else if (strcmp(name,"StressbalanceRequestedOutputs")==0) return StressbalanceRequestedOutputsEnum;
     
    505506              else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
    506507              else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
    507               else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
     511              if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
     512              else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
    512513              else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
    513514              else if (strcmp(name,"FrictionEffectivePressure")==0) return FrictionEffectivePressureEnum;
     
    628629              else if (strcmp(name,"SmbDailytemperature")==0) return SmbDailytemperatureEnum;
    629630              else if (strcmp(name,"SmbD")==0) return SmbDEnum;
    630               else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
     634              if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
     635              else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
    635636              else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
    636637              else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
     
    751752              else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
    752753              else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
    753               else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
     757              if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
     758              else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
    758759              else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum;
    759760              else if (strcmp(name,"AmrBamg")==0) return AmrBamgEnum;
     
    874875              else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
    875876              else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
    876               else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum;
     880              if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
     881              else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum;
    881882              else if (strcmp(name,"Gset")==0) return GsetEnum;
    882883              else if (strcmp(name,"Gsl")==0) return GslEnum;
     
    997998              else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
    998999              else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum;
    999               else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum;
     1003              if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
     1004              else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum;
    10041005              else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
    10051006              else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
     
    11201121              else if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum;
    11211122              else if (strcmp(name,"Regular")==0) return RegularEnum;
    1122               else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"Scaled")==0) return ScaledEnum;
     1126              if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
     1127              else if (strcmp(name,"Scaled")==0) return ScaledEnum;
    11271128              else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
    11281129              else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum;
  • issm/trunk-jpl/src/m/classes/issmsettings.m

    r23474 r23758  
    66classdef issmsettings
    77        properties (SetAccess=public)
    8                 results_on_nodes    = 0;
     8                results_on_nodes    = {};
    99                io_gather           = 0;
    1010                lowmem              = 0;
     
    6161                function md = checkconsistency(self,md,solution,analyses) % {{{
    6262
    63                         md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0 1]);
     63                        md = checkfield(md,'fieldname','settings.results_on_nodes','stringrow',1);
    6464                        md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0 1]);
    6565                        md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0 1]);
     
    7474                        disp(sprintf('   general issmsettings parameters:'));
    7575
    76                         fielddisplay(self,'results_on_nodes','results are output for all the nodes of each element');
     76                        fielddisplay(self,'results_on_nodes','list of output for which results will be output for all the nodes of each element, Use ''all'' for all output on nodes.');
    7777                        fielddisplay(self,'io_gather','I/O gathering strategy for result outputs (default 1)');
    7878                        fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)');
     
    9090                end % }}}
    9191                function marshall(self,prefix,md,fid) % {{{
    92                         WriteData(fid,prefix,'object',self,'class','settings','fieldname','results_on_nodes','format','Boolean');
     92                        WriteData(fid,prefix,'data',self.results_on_nodes,'name','md.settings.results_on_nodes','format','StringArray');
    9393                        WriteData(fid,prefix,'object',self,'class','settings','fieldname','io_gather','format','Boolean');
    9494                        WriteData(fid,prefix,'object',self,'class','settings','fieldname','lowmem','format','Boolean');
     
    101101                function savemodeljs(self,fid,modelname) % {{{
    102102               
    103                         writejsdouble(fid,[modelname '.settings.results_on_nodes'],self.results_on_nodes);
     103                        writejscellstring(fid,[modelname '.settings.results_on_nodes'],self.results_on_nodes);
    104104                        writejsdouble(fid,[modelname '.settings.io_gather'],self.io_gather);
    105105                        writejsdouble(fid,[modelname '.settings.lowmem'],self.lowmem);
  • issm/trunk-jpl/src/m/classes/issmsettings.py

    r23474 r23758  
    1212
    1313        def __init__(self): # {{{
    14                 self.results_on_nodes    = 0
     14                self.results_on_nodes    = []
    1515                self.io_gather           = 0
    1616                self.lowmem              = 0
     
    2828                string="   general issmsettings parameters:"
    2929
    30                 string="%s\n%s"%(string,fielddisplay(self,"results_on_nodes","results are output for all the nodes of each element"))
     30                string="%s\n%s"%(string,fielddisplay(self,"results_on_nodes","list of output for which results will be output for all the nodes of each element, Use 'all' for all output on nodes."))
    3131                string="%s\n%s"%(string,fielddisplay(self,"io_gather","I/O gathering strategy for result outputs (default 1)"))
    3232                string="%s\n%s"%(string,fielddisplay(self,"lowmem","is the memory limited ? (0 or 1)"))
     
    6868        #}}}
    6969        def checkconsistency(self,md,solution,analyses):    # {{{
    70                 md = checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0,1])
     70                md = checkfield(md,'fieldname','settings.results_on_nodes','stringrow',1)
    7171                md = checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0,1])
    7272                md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1])
     
    8080        # }}}
    8181        def marshall(self,prefix,md,fid):    # {{{
    82                 WriteData(fid,prefix,'object',self,'class','settings','fieldname','results_on_nodes','format','Boolean')
     82                WriteData(fid,prefix,'data',self.results_on_nodes,'name','md.settings.results_on_nodes','format','StringArray')
    8383                WriteData(fid,prefix,'object',self,'class','settings','fieldname','io_gather','format','Boolean')
    8484                WriteData(fid,prefix,'object',self,'class','settings','fieldname','lowmem','format','Boolean')
  • issm/trunk-jpl/src/m/classes/model.m

    r23652 r23758  
    160160                                end
    161161                                md.frontalforcings=frontalforcings(md.calving);
     162                        end
     163                        %2019 Feb 26
     164                        if isa(md.settings.results_on_nodes,'double')
     165                                if md.settings.results_on_nodes == 0
     166                                        md.settings.results_on_nodes = {};
     167                                else
     168                                        md.settings.results_on_nodes = {'all'};
     169                                end
    162170                        end
    163171                end% }}}
Note: See TracChangeset for help on using the changeset viewer.