Changeset 19191
- Timestamp:
- 03/09/15 12:45:28 (10 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 2 added
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp ¶
r19138 r19191 54 54 char *outbinfilename = NULL; 55 55 char *petscfilename = NULL; 56 char *restartfilename = NULL; 56 57 char *rootpath = NULL; 57 58 … … 71 72 72 73 /*From command line arguments, retrieve different filenames needed to create the FemModel: */ 73 ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,&r ootpath,argc,argv);74 ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,&restartfilename,&rootpath,argc,argv); 74 75 75 76 /*Create femmodel from input files: */ 76 77 profiler->Tag(StartInit); 77 this->InitFromFiles(rootpath,binfilename,outbinfilename,petscfilename,lockfilename, solution_type,trace,NULL);78 this->InitFromFiles(rootpath,binfilename,outbinfilename,petscfilename,lockfilename,restartfilename, solution_type,trace,NULL); 78 79 profiler->Tag(FinishInit); 79 80 … … 87 88 } 88 89 /*}}}*/ 89 FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X){ /*{{{*/90 FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X){ /*{{{*/ 90 91 91 92 bool traceon=true; … … 98 99 99 100 /*Create femmodel from input files, with trace activated: */ 100 this->InitFromFiles(rootpath,inputfilename,outputfilename,toolkitsfilename,lockfilename, solution_type,traceon,X);101 this->InitFromFiles(rootpath,inputfilename,outputfilename,toolkitsfilename,lockfilename,restartfilename, solution_type,traceon,X); 101 102 102 103 } … … 142 143 } 143 144 /*}}}*/ 144 void FemModel::InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, c onst int in_solution_type,bool trace,IssmPDouble* X){/*{{{*/145 void FemModel::InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, const int in_solution_type,bool trace,IssmPDouble* X){/*{{{*/ 145 146 146 147 /*intermediary*/ … … 208 209 this->parameters->AddObject(new StringParam(OutputFileNameEnum,outputfilename)); 209 210 this->parameters->AddObject(new StringParam(LockFileNameEnum,lockfilename)); 211 this->parameters->AddObject(new StringParam(RestartFileNameEnum,restartfilename)); 210 212 211 213 /*Clean up*/ … … 603 605 else xDelete<int>(analyses); 604 606 }/*}}}*/ 607 void FemModel::CheckPoint(void){/*{{{*/ 608 609 FILE* restartfid=NULL; 610 char* restartfilename = NULL; 611 612 /*First, recover the name of the restart file: */ 613 parameters->FindParam(&restartfilename,RestartFileNameEnum); 614 615 /*Open file for writing: */ 616 restartfid=pfopen(restartfilename,"wb"); 617 618 /*Done, close file :*/ 619 pfclose(restartfid,restartfilename); 620 621 /*Free ressources: */ 622 xDelete<char>(restartfilename); 623 624 } 625 /*}}}*/ 626 void FemModel::Restart(void){/*{{{*/ 627 } 628 /*}}}*/ 605 629 606 630 /*Modules:*/ -
TabularUnified issm/trunk-jpl/src/c/classes/FemModel.h ¶
r19062 r19191 47 47 /*constructors, destructors: */ 48 48 FemModel(int argc,char** argv,ISSM_MPI_Comm comm_init,bool trace=false); 49 FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X);49 FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* toolkitsfilename, char* lockfilename, char* restartfilename, ISSM_MPI_Comm incomm, int solution_type,IssmPDouble* X); 50 50 ~FemModel(); 51 51 … … 53 53 void Echo(); 54 54 FemModel* copy(); 55 void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, c onst int solution_type,bool trace,IssmPDouble* X=NULL);55 void InitFromFiles(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, char* restartfilename, const int solution_type,bool trace,IssmPDouble* X=NULL); 56 56 void SolutionAnalysesList(int** panalyses,int* pnumanalyses,IoModel* iomodel,int solutiontype); 57 57 void CleanUp(void); … … 60 60 void SetCurrentConfiguration(int configuration_type); 61 61 void SetCurrentConfiguration(int configuration_type,int analysis_type); 62 void CheckPoint(void); 63 void Restart(void); 62 64 63 65 /*Modules*/ -
TabularUnified issm/trunk-jpl/src/c/cores/ProcessArguments.cpp ¶
r14917 r19191 8 8 #include "../shared/shared.h" 9 9 10 void ProcessArguments(int* solution_type,char** pbinfilename,char** poutbinfilename,char** ptoolkitsfilename,char** plockfilename,char** pr ootpath, int argc,char **argv){10 void ProcessArguments(int* solution_type,char** pbinfilename,char** poutbinfilename,char** ptoolkitsfilename,char** plockfilename,char** prestartfilename, char** prootpath, int argc,char **argv){ 11 11 12 12 char *modelname = NULL; … … 15 15 char *toolkitsfilename = NULL; 16 16 char *lockfilename = NULL; 17 char *restartfilename = NULL; 17 18 char *rootpath = NULL; 18 char *rootpatharg = NULL; 19 char *rootpatharg = NULL; 20 int my_rank, rank_length; 19 21 20 22 /*Check input arguments*/ … … 22 24 if(argc<3)_error_("Usage error: missing execution directory"); 23 25 if(argc<4)_error_("Usage error: missing model name"); 26 27 /*Recover myrank: */ 28 my_rank=IssmComm::GetRank(); 29 rank_length= (my_rank == 0 ? 1 : (int)(log10(my_rank)+1)); /*length of string "my_rank" */ 24 30 25 31 /*Get requested solution*/ … … 40 46 toolkitsfilename = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".toolkits") +1); sprintf(toolkitsfilename, "%s%s%s",rootpath,modelname,".toolkits"); 41 47 lockfilename = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".lock") +1); sprintf(lockfilename, "%s%s%s",rootpath,modelname,".lock"); 48 restartfilename = xNew<char>(strlen(rootpath)+strlen(modelname)+strlen(".rst.") +rank_length +1); sprintf(restartfilename, "%s%s%s%i",rootpath,modelname,".rst.",my_rank); 42 49 } 43 50 else{ … … 46 53 toolkitsfilename = xNew<char>(strlen(modelname)+strlen(".toolkits") +1); sprintf(toolkitsfilename, "%s%s",modelname,".toolkits"); 47 54 lockfilename = xNew<char>(strlen(modelname)+strlen(".lock") +1); sprintf(lockfilename, "%s%s",modelname,".lock"); 55 restartfilename = xNew<char>(strlen(modelname)+strlen(".rst.") +rank_length +1); sprintf(restartfilename, "%s%s%i",modelname,".rst.",my_rank); 48 56 } 49 57 … … 53 61 *ptoolkitsfilename=toolkitsfilename; 54 62 *plockfilename=lockfilename; 63 *prestartfilename=restartfilename; 55 64 *prootpath=rootpath; 56 65 -
TabularUnified issm/trunk-jpl/src/c/cores/cores.h ¶
r19087 r19191 53 53 54 54 //diverse 55 void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ptoolkitsname,char** plockname,char** pr ootpath,int argc,char **argv);55 void ProcessArguments(int* solution,char** pbinname,char** poutbinname,char** ptoolkitsname,char** plockname,char** prestartname, char** prootpath,int argc,char **argv); 56 56 void WriteLockFile(char* filename); 57 57 void ResetBoundaryConditions(FemModel* femmodel, int analysis_type); -
TabularUnified issm/trunk-jpl/src/c/cores/transient_core.cpp ¶
r19138 r19191 25 25 bool time_adapt; 26 26 int output_frequency; 27 int restart_frequency; 27 28 int domaintype,groundingline_migration,smb_model; 28 29 int numoutputs; … … 42 43 femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum); 43 44 femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum); 45 femmodel->parameters->FindParam(&restart_frequency,SettingsRestartFrequencyEnum); 44 46 femmodel->parameters->FindParam(&time_adapt,TimesteppingTimeAdaptEnum); 45 47 femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum); … … 179 181 OutputResultsx(femmodel); 180 182 } 183 if(step%restart_frequency==0 )femmodel->CheckPoint(); 181 184 } 182 185 -
TabularUnified issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp ¶
r19172 r19191 48 48 parameters->AddObject(iomodel->CopyConstantObject(DomainDimensionEnum)); 49 49 parameters->AddObject(iomodel->CopyConstantObject(SettingsOutputFrequencyEnum)); 50 parameters->AddObject(iomodel->CopyConstantObject(SettingsRestartFrequencyEnum)); 50 51 parameters->AddObject(iomodel->CopyConstantObject(ConstantsYtsEnum)); 51 52 parameters->AddObject(iomodel->CopyConstantObject(TimesteppingStartTimeEnum)); -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h ¶
r19172 r19191 290 290 SettingsLowmemEnum, 291 291 SettingsOutputFrequencyEnum, 292 SettingsRestartFrequencyEnum, 292 293 SettingsWaitonlockEnum, 293 294 DebugProfilingEnum, … … 869 870 InputFileNameEnum, 870 871 LockFileNameEnum, 872 RestartFileNameEnum, 871 873 ToolkitsOptionsAnalysesEnum, 872 874 ToolkitsOptionsStringsEnum, -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp ¶
r19172 r19191 298 298 case SettingsLowmemEnum : return "SettingsLowmem"; 299 299 case SettingsOutputFrequencyEnum : return "SettingsOutputFrequency"; 300 case SettingsRestartFrequencyEnum : return "SettingsRestartFrequency"; 300 301 case SettingsWaitonlockEnum : return "SettingsWaitonlock"; 301 302 case DebugProfilingEnum : return "DebugProfiling"; … … 842 843 case InputFileNameEnum : return "InputFileName"; 843 844 case LockFileNameEnum : return "LockFileName"; 845 case RestartFileNameEnum : return "RestartFileName"; 844 846 case ToolkitsOptionsAnalysesEnum : return "ToolkitsOptionsAnalyses"; 845 847 case ToolkitsOptionsStringsEnum : return "ToolkitsOptionsStrings"; -
TabularUnified issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp ¶
r19172 r19191 304 304 else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum; 305 305 else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum; 306 else if (strcmp(name,"SettingsRestartFrequency")==0) return SettingsRestartFrequencyEnum; 306 307 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum; 307 308 else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum; … … 382 383 else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum; 383 384 else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum; 384 else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SurfaceforcingsAccumulation")==0) return SurfaceforcingsAccumulationEnum; 388 if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum; 389 else if (strcmp(name,"SurfaceforcingsAccumulation")==0) return SurfaceforcingsAccumulationEnum; 389 390 else if (strcmp(name,"SurfaceforcingsEvaporation")==0) return SurfaceforcingsEvaporationEnum; 390 391 else if (strcmp(name,"SurfaceforcingsRunoff")==0) return SurfaceforcingsRunoffEnum; … … 505 506 else if (strcmp(name,"Pengrid")==0) return PengridEnum; 506 507 else if (strcmp(name,"Penpair")==0) return PenpairEnum; 507 else if (strcmp(name,"Profiler")==0) return ProfilerEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum; 511 if (strcmp(name,"Profiler")==0) return ProfilerEnum; 512 else if (strcmp(name,"MatrixParam")==0) return MatrixParamEnum; 512 513 else if (strcmp(name,"Masscon")==0) return MassconEnum; 513 514 else if (strcmp(name,"MassconName")==0) return MassconNameEnum; … … 628 629 else if (strcmp(name,"DeviatoricStress")==0) return DeviatoricStressEnum; 629 630 else if (strcmp(name,"DeviatoricStressxx")==0) return DeviatoricStressxxEnum; 630 else if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum; 634 if (strcmp(name,"DeviatoricStressxy")==0) return DeviatoricStressxyEnum; 635 else if (strcmp(name,"DeviatoricStressxz")==0) return DeviatoricStressxzEnum; 635 636 else if (strcmp(name,"DeviatoricStressyy")==0) return DeviatoricStressyyEnum; 636 637 else if (strcmp(name,"DeviatoricStressyz")==0) return DeviatoricStressyzEnum; … … 751 752 else if (strcmp(name,"Outputdefinition69")==0) return Outputdefinition69Enum; 752 753 else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum; 753 else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum; 757 if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum; 758 else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum; 758 759 else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum; 759 760 else if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum; … … 860 861 else if (strcmp(name,"InputFileName")==0) return InputFileNameEnum; 861 862 else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum; 863 else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum; 862 864 else if (strcmp(name,"ToolkitsOptionsAnalyses")==0) return ToolkitsOptionsAnalysesEnum; 863 865 else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum; … … 873 875 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 874 876 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 875 else if (strcmp(name,"XY")==0) return XYEnum;876 else if (strcmp(name,"XYZ")==0) return XYZEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Dense")==0) return DenseEnum; 880 if (strcmp(name,"XY")==0) return XYEnum; 881 else if (strcmp(name,"XYZ")==0) return XYZEnum; 882 else if (strcmp(name,"Dense")==0) return DenseEnum; 881 883 else if (strcmp(name,"MpiDense")==0) return MpiDenseEnum; 882 884 else if (strcmp(name,"MpiSparse")==0) return MpiSparseEnum; -
TabularUnified issm/trunk-jpl/src/m/classes/settings.m ¶
r19040 r19191 10 10 lowmem = 0; 11 11 output_frequency = 0; 12 restart_frequency = 0; 12 13 waitonlock = 0; 13 14 upload_server = ''; … … 58 59 self.output_frequency=1; 59 60 61 %checkpoints frequency, by default never: 62 self.restart_frequency=0; 63 60 64 %this option can be activated to load automatically the results 61 65 %onto the model after a parallel run by waiting for the lock file … … 74 78 md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0 1]); 75 79 md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1); 80 md = checkfield(md,'fieldname','settings.restart_frequency','numel',[1],'>=',0); 76 81 md = checkfield(md,'fieldname','settings.waitonlock','numel',[1]); 77 82 … … 84 89 fielddisplay(self,'lowmem','is the memory limited ? (0 or 1)'); 85 90 fielddisplay(self,'output_frequency','frequency at which results are saved in all solutions with multiple time_steps'); 91 fielddisplay(self,'restart_frequency','frequency at which the runs are being checkpointed, allowing for a restart'); 86 92 fielddisplay(self,'waitonlock','maximum number of minutes to wait for batch results (NaN to deactivate)'); 87 93 fielddisplay(self,'upload_server','server hostname where model should be uploaded'); … … 97 103 WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean'); 98 104 WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer'); 105 WriteData(fid,'object',self,'fieldname','restart_frequency','format','Integer'); 99 106 if self.waitonlock>0, 100 107 WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',true,'format','Boolean'); -
TabularUnified issm/trunk-jpl/src/m/classes/settings.py ¶
r17497 r19191 17 17 self.lowmem = 0 18 18 self.output_frequency = 0 19 self.restart_frequency = 0 19 20 self.waitonlock = 0 20 21 … … 30 31 string="%s\n%s"%(string,fielddisplay(self,"lowmem","is the memory limited ? (0 or 1)")) 31 32 string="%s\n%s"%(string,fielddisplay(self,"output_frequency","frequency at which results are saved in all solutions with multiple time_steps")) 33 string="%s\n%s"%(string,fielddisplay(self,"restart_frequency","frequency at which the runs are being checkpointed, allowing for a restart")) 32 34 string="%s\n%s"%(string,fielddisplay(self,"waitonlock","maximum number of minutes to wait for batch results, or return 0")) 33 35 return string … … 44 46 self.output_frequency=1 45 47 48 #checkpoints frequency, by default never: 49 self.restart_frequency=0 50 51 46 52 #this option can be activated to load automatically the results 47 53 #onto the model after a parallel run by waiting for the lock file … … 57 63 md = checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0,1]) 58 64 md = checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1) 65 md = checkfield(md,'fieldname','settings.restart_frequency','numel',[1],'>=',0) 59 66 md = checkfield(md,'fieldname','settings.waitonlock','numel',[1]) 60 67 … … 66 73 WriteData(fid,'object',self,'fieldname','lowmem','format','Boolean') 67 74 WriteData(fid,'object',self,'fieldname','output_frequency','format','Integer') 75 WriteData(fid,'object',self,'fieldname','restart_frequency','format','Integer') 68 76 if self.waitonlock>0: 69 77 WriteData(fid,'enum',SettingsWaitonlockEnum(),'data',True,'format','Boolean'); -
TabularUnified issm/trunk-jpl/src/m/enum/EnumDefinitions.py ¶
r19172 r19191 290 290 def SettingsLowmemEnum(): return StringToEnum("SettingsLowmem")[0] 291 291 def SettingsOutputFrequencyEnum(): return StringToEnum("SettingsOutputFrequency")[0] 292 def SettingsRestartFrequencyEnum(): return StringToEnum("SettingsRestartFrequency")[0] 292 293 def SettingsWaitonlockEnum(): return StringToEnum("SettingsWaitonlock")[0] 293 294 def DebugProfilingEnum(): return StringToEnum("DebugProfiling")[0] … … 834 835 def InputFileNameEnum(): return StringToEnum("InputFileName")[0] 835 836 def LockFileNameEnum(): return StringToEnum("LockFileName")[0] 837 def RestartFileNameEnum(): return StringToEnum("RestartFileName")[0] 836 838 def ToolkitsOptionsAnalysesEnum(): return StringToEnum("ToolkitsOptionsAnalyses")[0] 837 839 def ToolkitsOptionsStringsEnum(): return StringToEnum("ToolkitsOptionsStrings")[0]
Note:
See TracChangeset
for help on using the changeset viewer.