Changeset 13549


Ignore:
Timestamp:
10/04/12 22:13:12 (12 years ago)
Author:
Eric.Larour
Message:

CHG: FemModel constructors and destructors now take care of writing the lock file,
and closing the output file descriptor.

Location:
issm/trunk-jpl/src
Files:
1 added
11 edited
1 moved

Legend:

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

    r13534 r13549  
    512512        OldGradientEnum,
    513513        OutputFilePointerEnum,
     514        OutputFileNameEnum,
     515        LockFileNameEnum,
    514516        PetscOptionsAnalysesEnum,
    515517        PetscOptionsStringsEnum,
  • issm/trunk-jpl/src/c/Makefile.am

    r13540 r13549  
    236236                                        ./io/Disk/pfopen.cpp\
    237237                                        ./io/Disk/pfclose.cpp\
     238                                        ./io/Disk/WriteLockFile.cpp\
    238239                                        ./io/PrintfFunction.cpp\
    239240                                        ./EnumDefinitions/EnumDefinitions.h\
     
    344345                                        ./solutions/convergence.cpp\
    345346                                        ./solutions/ProcessArguments.cpp\
    346                                         ./solutions/WriteLockFile.cpp\
    347347                                        ./solutions/ResetBoundaryConditions.cpp\
    348348                                        ./solutions/AnalysisConfiguration.cpp\
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r13413 r13549  
    2020/*Object constructors and destructor*/
    2121/*FUNCTION FemModel::constructor {{{*/
    22 FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, const int in_solution_type,const int* analyses,const int nummodels){
     22FemModel::FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, const int in_solution_type,const int* analyses,const int nummodels){
    2323
    2424        /*intermediary*/
     
    2626        int         analysis_type;
    2727        FILE       *IOMODEL = NULL;
     28        FILE       *petscoptionsfid = NULL;
     29        FILE       *output_fid = NULL;
    2830        extern int  my_rank;
    2931
     
    7173        if(my_rank==0) pfclose(IOMODEL,inputfilename);
    7274
    73         /*Add output file name to parameters: */
    74         this->parameters->AddObject(new StringParam(OutputfilenameEnum,outputfilename));
     75        /*Open output file once for all and add output file name and file descriptor to parameters*/
     76        output_fid=pfopen(outputfilename,"wb");
     77        this->parameters->AddObject(new StringParam(OutputFileNameEnum,outputfilename));
     78        this->parameters->SetParam(output_fid,OutputFilePointerEnum);
     79       
     80        /*Save lock file name for later: */
     81        this->parameters->AddObject(new StringParam(LockFileNameEnum,lockfilename));
     82
     83        /*Now, deal with petsc options, which need to be put into the parameters dataset: */
     84        petscoptionsfid=pfopen(petscfilename,"r");
     85        ParsePetscOptionsx(this->parameters,petscoptionsfid);
     86        pfclose(petscoptionsfid,petscfilename);
    7587}
    7688/*}}}*/
     
    8092        /*Intermediary*/
    8193        int i;
     94        FILE* output_fid;
     95        char* outbinfilename=NULL;
     96        char* lockfilename=NULL;
     97        bool   waitonlock=false;
     98
     99        /*Close output file: */
     100        this->parameters->FindParam(&output_fid,OutputFilePointerEnum);
     101        this->parameters->FindParam(&outbinfilename,OutputFileNameEnum);
     102        pfclose(output_fid,outbinfilename);
     103       
     104        /*Write lock file if requested: */
     105        this->parameters->FindParam(&waitonlock,SettingsWaitonlockEnum);
     106        this->parameters->FindParam(&lockfilename,LockFileNameEnum);
     107        if (waitonlock>0){
     108                _pprintLine_("write lock file:");
     109                WriteLockFile(lockfilename);
     110        }
    82111
    83112        /*Delete all the datasets: */
    84113        xDelete<int>(analysis_type_list);
     114        xDelete<char>(outbinfilename);
     115        xDelete<char>(lockfilename);
    85116        delete elements;
    86117        delete nodes;
  • issm/trunk-jpl/src/c/classes/FemModel.h

    r13413 r13549  
    4343
    4444                /*constructors, destructors: */
    45                 FemModel(char* rootpath, char* inputfilename, char* outputfilename, const int solution_type,const int* analyses,const int nummodels);
     45                FemModel(char* rootpath, char* inputfilename, char* outputfilename, char* petscfilename, char* lockfilename, const int solution_type,const int* analyses,const int nummodels);
    4646                ~FemModel();
    4747
  • issm/trunk-jpl/src/c/io/Disk/WriteLockFile.cpp

    r13532 r13549  
    33 */
    44#include <stdio.h>
    5 #include "../shared/shared.h"
    6 #include "../include/include.h"
     5#include "../../shared/shared.h"
     6#include "../../include/include.h"
    77
    88void WriteLockFile(char* filename){
  • issm/trunk-jpl/src/c/io/Disk/diskio.h

    r13216 r13549  
    1010FILE* pfopen(char* filename,const char* format);
    1111void  pfclose(FILE* fid,char* filename);
     12void WriteLockFile(char* filename);
    1213
    1314#endif  /* _IO_H_ */
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r13534 r13549  
    489489                case OldGradientEnum : return "OldGradient";
    490490                case OutputFilePointerEnum : return "OutputFilePointer";
     491                case OutputFileNameEnum : return "OutputFileName";
     492                case LockFileNameEnum : return "LockFileName";
    491493                case PetscOptionsAnalysesEnum : return "PetscOptionsAnalyses";
    492494                case PetscOptionsStringsEnum : return "PetscOptionsStrings";
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r13534 r13549  
    499499              else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
    500500              else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
     501              else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum;
     502              else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum;
    501503              else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
    502504              else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;
     
    505507              else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;
    506508              else if (strcmp(name,"Regular")==0) return RegularEnum;
    507               else if (strcmp(name,"Scaled")==0) return ScaledEnum;
    508               else if (strcmp(name,"Separate")==0) return SeparateEnum;
    509509         else stage=5;
    510510   }
    511511   if(stage==5){
    512               if (strcmp(name,"Sset")==0) return SsetEnum;
     512              if (strcmp(name,"Scaled")==0) return ScaledEnum;
     513              else if (strcmp(name,"Separate")==0) return SeparateEnum;
     514              else if (strcmp(name,"Sset")==0) return SsetEnum;
    513515              else if (strcmp(name,"Verbose")==0) return VerboseEnum;
    514516              else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
  • issm/trunk-jpl/src/c/solutions/issm.cpp

    r13545 r13549  
    1010
    1111int main(int argc,char **argv){
    12 
    13         /*I/O: */
    14         FILE *output_fid       = NULL;
    15         FILE *petscoptionsfid  = NULL;
    16         bool  waitonlock       = false;
    1712
    1813        /*FemModel: */
     
    5045        _pprintLine_("(website: " << PACKAGE_URL << " contact: " << PACKAGE_BUGREPORT << ")");
    5146        _pprintLine_("");
     47
    5248        ProcessArguments(&solution_type,&binfilename,&outbinfilename,&petscfilename,&lockfilename,&rootpath,argc,argv);
    5349
     
    5551        AnalysisConfiguration(&analyses,&numanalyses,solution_type);
    5652
    57         /*Create femmodel, using input file: */
     53        /*Create femmodel from input files: */
    5854        profiler->Tag(StartInit);
    59         femmodel=new FemModel(rootpath,binfilename,outbinfilename,solution_type,analyses,numanalyses);
    60        
    61         /*get type of solution we are going to run: */
    62         CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
    63 
    64         /*Open output file once for all*/
    65         output_fid=pfopen(outbinfilename,"wb");
    66         femmodel->parameters->SetParam(output_fid,OutputFilePointerEnum);
    67 
    68         /*add petsc options to parameters: */
    69         petscoptionsfid=pfopen(petscfilename,"r");
    70         ParsePetscOptionsx(femmodel->parameters,petscoptionsfid);
    71         pfclose(petscoptionsfid,petscfilename);
    72 
     55        femmodel=new FemModel(rootpath,binfilename,outbinfilename,petscfilename,lockfilename,solution_type,analyses,numanalyses);
    7356        profiler->Tag(FinishInit);
    7457       
    7558        /*call cores: */
    7659        _pprintLine_("call computational core:");
     60        CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);
    7761        profiler->Tag(StartCore);   solutioncore(femmodel); profiler->Tag(FinishCore);
    7862        profiler->Tag(StartAdCore); ad_core(femmodel);      profiler->Tag(FinishAdCore);
     
    8266        OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
    8367       
    84         /*Close output and petsc options file and write lock file if requested*/
    85         pfclose(output_fid,lockfilename);
    86         femmodel->parameters->FindParam(&waitonlock,SettingsWaitonlockEnum);
    87         if (waitonlock>0){
    88                 _pprintLine_("write lock file:");
    89                 WriteLockFile(lockfilename);
    90         }
    91 
     68        /*Profiling at the end: */
     69        profiler->Tag(Finish);
     70        ProfilerEcho(profiler);
     71       
    9272        /*Free resources */
    9373        xDelete<int>(analyses);
     
    9878        xDelete<char>(rootpath);
    9979        delete femmodel;
    100 
    101         /*Profiling at the end: */
    102         profiler->Tag(Finish);
    103         ProfilerEcho(profiler);
    10480
    10581        /*Finalize environment:*/
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r13534 r13549  
    47294729        return StringToEnum('OutputFilePointer')[0]
    47304730
     4731def OutputFileNameEnum():
     4732        """
     4733        OUTPUTFILENAMEENUM - Enum of OutputFileName
     4734
     4735           Usage:
     4736              macro=OutputFileNameEnum()
     4737        """
     4738
     4739        return StringToEnum('OutputFileName')[0]
     4740
     4741def LockFileNameEnum():
     4742        """
     4743        LOCKFILENAMEENUM - Enum of LockFileName
     4744
     4745           Usage:
     4746              macro=LockFileNameEnum()
     4747        """
     4748
     4749        return StringToEnum('LockFileName')[0]
     4750
    47314751def PetscOptionsAnalysesEnum():
    47324752        """
     
    49774997        """
    49784998
    4979         return 496
    4980 
     4999        return 498
     5000
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r13534 r13549  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=496;
     11macro=498;
  • issm/trunk-jpl/src/m/enum/OutputfilenameEnum.m

    r8926 r13549  
    1 function macro=OutputfilenameEnum()
    2 %OUTPUTFILENAMEENUM - Enum of Outputfilename
     1function macro=OutputFileNameEnum()
     2%OUTPUTFILENAMEENUM - Enum of OutputFileName
    33%
    44%   WARNING: DO NOT MODIFY THIS FILE
     
    77%
    88%   Usage:
    9 %      macro=OutputfilenameEnum()
     9%      macro=OutputFileNameEnum()
    1010
    11 macro=StringToEnum('Outputfilename');
     11macro=StringToEnum('OutputFileName');
Note: See TracChangeset for help on using the changeset viewer.