X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDLoader%2FMEDFileParameter.cxx;h=ceb98f8efa2202159feffffe8ce71c0e0e8281b2;hb=662a2a2393a25baef77e42f74204b11b70a9646c;hp=4186eea5b10c7176d743cb491adeae04252a1844;hpb=b853dbf1fad83d74b3f9b511e06c02dc57198392;p=tools%2Fmedcoupling.git diff --git a/src/MEDLoader/MEDFileParameter.cxx b/src/MEDLoader/MEDFileParameter.cxx index 4186eea5b..ceb98f8ef 100644 --- a/src/MEDLoader/MEDFileParameter.cxx +++ b/src/MEDLoader/MEDFileParameter.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D +// Copyright (C) 2007-2023 CEA, EDF // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -19,9 +19,9 @@ // Author : Anthony Geay (CEA/DEN) #include "MEDFileParameter.hxx" -#include "MEDFileUtilities.hxx" #include "MEDFileSafeCaller.txx" #include "MEDLoaderBase.hxx" +#include "MEDFileBasis.hxx" #include "InterpKernelAutoPtr.hxx" @@ -111,12 +111,12 @@ void MEDFileParameterDouble1TSWTI::finishLoading(med_idt fid, const std::string& std::ostringstream oss; oss << "MEDFileParameterDouble1TS::finishLoading : no specified time step (" << dt << "," << it << ") ! Time steps available : "; for(int i=0;i(locDt); _order=FromMedInt(locIt); _time=tim; MEDFILESAFECALLERRD0(MEDparameterValueRd,(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr))); return ; } @@ -137,10 +137,10 @@ void MEDFileParameterDouble1TSWTI::readValue(med_idt fid, const std::string& nam void MEDFileParameterDouble1TSWTI::finishLoading(med_idt fid, const std::string& name, int timeStepId) { - int locDt,locIt; + med_int locDt,locIt; double dt; MEDFILESAFECALLERRD0(MEDparameterComputationStepInfo,(fid,name.c_str(),timeStepId+1,&locDt,&locIt,&dt)); - _iteration=locDt; _order=locIt; _time=dt; + _iteration=FromMedInt(locDt); _order=FromMedInt(locIt); _time=dt; MEDFILESAFECALLERRD0(MEDparameterValueRd,(fid,name.c_str(),_iteration,_order,reinterpret_cast(&_arr))); } @@ -213,7 +213,7 @@ MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const std::string& fileName { MEDFileUtilities::CheckFileForRead(fileName); MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); - int nbPar=MEDnParameter(fid); + med_int nbPar=MEDnParameter(fid); std::ostringstream oss; oss << "MEDFileParameterDouble1TS : no double param name \"" << paramName << "\" ! Double Parameters available are : "; INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); INTERP_KERNEL::AutoPtr descName=MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE); @@ -221,7 +221,7 @@ MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const std::string& fileName med_parameter_type paramType; for(int i=0;i(nbOfSteps)); return ; } else @@ -245,7 +245,7 @@ MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const std::string& fileName { MEDFileUtilities::CheckFileForRead(fileName); MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); - int nbPar=MEDnParameter(fid); + med_int nbPar=MEDnParameter(fid); std::ostringstream oss; oss << "MEDFileParameterDouble1TS : no double param name \"" << paramName << "\" ! Double Parameters available are : "; INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); INTERP_KERNEL::AutoPtr descName=MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE); @@ -253,7 +253,7 @@ MEDFileParameterDouble1TS::MEDFileParameterDouble1TS(const std::string& fileName med_parameter_type paramType; for(int i=0;i descName=MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE); INTERP_KERNEL::AutoPtr unitName=MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE); med_parameter_type paramType; - int nbOfSteps; + med_int nbOfSteps; MEDFILESAFECALLERRD0(MEDparameterInfo,(fid,1,pName,¶mType,descName,unitName,&nbOfSteps)); std::string paramNameCpp=MEDLoaderBase::buildStringFromFortran(pName,MED_NAME_SIZE); if(paramType==MED_FLOAT64) @@ -371,12 +371,24 @@ MEDFileParameterMultiTS *MEDFileParameterMultiTS::New() MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(const std::string& fileName) { - return new MEDFileParameterMultiTS(fileName); + MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName)); + return New(fid); +} + +MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(med_idt fid) +{ + return new MEDFileParameterMultiTS(fid); } MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(const std::string& fileName, const std::string& paramName) { - return new MEDFileParameterMultiTS(fileName,paramName); + MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName)); + return New(fid,paramName); +} + +MEDFileParameterMultiTS *MEDFileParameterMultiTS::New(med_idt fid, const std::string& paramName) +{ + return new MEDFileParameterMultiTS(fid,paramName); } MEDFileParameterMultiTS::MEDFileParameterMultiTS() @@ -394,44 +406,40 @@ MEDFileParameterMultiTS::MEDFileParameterMultiTS(const MEDFileParameterMultiTS& } } -MEDFileParameterMultiTS::MEDFileParameterMultiTS(const std::string& fileName) +MEDFileParameterMultiTS::MEDFileParameterMultiTS(med_idt fid) { - MEDFileUtilities::CheckFileForRead(fileName); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); - int nbPar=MEDnParameter(fid); + med_int nbPar(MEDnParameter(fid)); if(nbPar<1) { - std::ostringstream oss; oss << "MEDFileParameterMultiTS : no parameter in file \"" << fileName << "\" !" ; + std::ostringstream oss; oss << "MEDFileParameterMultiTS : no parameter in file \"" << FileNameFromFID(fid) << "\" !" ; throw INTERP_KERNEL::Exception(oss.str().c_str()); } - INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); - INTERP_KERNEL::AutoPtr descName=MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE); - INTERP_KERNEL::AutoPtr unitName=MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE); + INTERP_KERNEL::AutoPtr pName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE)); + INTERP_KERNEL::AutoPtr descName(MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE)); + INTERP_KERNEL::AutoPtr unitName(MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE)); med_parameter_type paramType; - int nbOfSteps; + med_int nbOfSteps; MEDFILESAFECALLERRD0(MEDparameterInfo,(fid,1,pName,¶mType,descName,unitName,&nbOfSteps)); - std::string paramNameCpp=MEDLoaderBase::buildStringFromFortran(pName,MED_NAME_SIZE); + std::string paramNameCpp(MEDLoaderBase::buildStringFromFortran(pName,MED_NAME_SIZE)); _dt_unit=MEDLoaderBase::buildStringFromFortran(unitName,MED_SNAME_SIZE); _name=paramNameCpp; _desc_name=MEDLoaderBase::buildStringFromFortran(descName,MED_COMMENT_SIZE); - finishLoading(fid,paramType,nbOfSteps); + finishLoading(fid,paramType,FromMedInt(nbOfSteps)); } -MEDFileParameterMultiTS::MEDFileParameterMultiTS(const std::string& fileName, const std::string& paramName) +MEDFileParameterMultiTS::MEDFileParameterMultiTS(med_idt fid, const std::string& paramName) { - MEDFileUtilities::CheckFileForRead(fileName); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); - int nbPar=MEDnParameter(fid); + med_int nbPar(MEDnParameter(fid)); std::ostringstream oss; oss << "MEDFileParameterDouble1TS : no double param name \"" << paramName << "\" ! Double Parameters available are : "; - INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); - INTERP_KERNEL::AutoPtr descName=MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE); - INTERP_KERNEL::AutoPtr unitName=MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE); + INTERP_KERNEL::AutoPtr pName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE)); + INTERP_KERNEL::AutoPtr descName(MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE)); + INTERP_KERNEL::AutoPtr unitName(MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE)); med_parameter_type paramType; for(int i=0;i0) @@ -439,7 +447,7 @@ MEDFileParameterMultiTS::MEDFileParameterMultiTS(const std::string& fileName, co _dt_unit=MEDLoaderBase::buildStringFromFortran(unitName,MED_SNAME_SIZE); _name=paramNameCpp; _desc_name=MEDLoaderBase::buildStringFromFortran(descName,MED_COMMENT_SIZE); - finishLoading(fid,paramType,nbOfSteps); + finishLoading(fid,paramType,FromMedInt(nbOfSteps)); return ; } else @@ -462,13 +470,13 @@ void MEDFileParameterMultiTS::finishLoading(med_idt fid, med_parameter_type typ, _param_per_ts.resize(nbOfSteps); for(int i=0;i(dt),FromMedInt(it),tim); _param_per_ts[i]->readValue(fid,_name.c_str()); break; /*case MED_INT32; @@ -539,7 +547,7 @@ void MEDFileParameterMultiTS::writeAdvanced(med_idt fid, const MEDFileWritable& throw INTERP_KERNEL::Exception("MEDFileParameterMultiTS::writeAdvanced : impossible to mix type of data in parameters in MED file ! Only float64 or only int32 ..."); if(diffType.empty()) return; - med_parameter_type typ=*diffType.begin(); + med_parameter_type typ(*diffType.begin()); MEDFileParameterTinyInfo::writeLLHeader(fid,typ); for(std::vector< MCAuto >::const_iterator it=_param_per_ts.begin();it!=_param_per_ts.end();it++) { @@ -681,7 +689,7 @@ std::vector< std::pair > MEDFileParameterMultiTS::getIterations() const } /*! - * \param [out] ret1 + * \param [out] ret1 - list of available timesteps */ std::vector< std::pair > MEDFileParameterMultiTS::getTimeSteps(std::vector& ret1) const { @@ -706,25 +714,29 @@ MEDFileParameters *MEDFileParameters::New() MEDFileParameters *MEDFileParameters::New(const std::string& fileName) { - return new MEDFileParameters(fileName); + MEDFileUtilities::AutoFid fid(OpenMEDFileForRead(fileName)); + return New(fid); } -MEDFileParameters::MEDFileParameters(const std::string& fileName) +MEDFileParameters *MEDFileParameters::New(med_idt fid) { - MEDFileUtilities::CheckFileForRead(fileName); - MEDFileUtilities::AutoFid fid=MEDfileOpen(fileName.c_str(),MED_ACC_RDONLY); - int nbPar=MEDnParameter(fid); + return new MEDFileParameters(fid); +} + +MEDFileParameters::MEDFileParameters(med_idt fid) +{ + med_int nbPar=MEDnParameter(fid); _params.resize(nbPar); - INTERP_KERNEL::AutoPtr pName=MEDLoaderBase::buildEmptyString(MED_NAME_SIZE); - INTERP_KERNEL::AutoPtr descName=MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE); - INTERP_KERNEL::AutoPtr unitName=MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE); + INTERP_KERNEL::AutoPtr pName(MEDLoaderBase::buildEmptyString(MED_NAME_SIZE)); + INTERP_KERNEL::AutoPtr descName(MEDLoaderBase::buildEmptyString(MED_COMMENT_SIZE)); + INTERP_KERNEL::AutoPtr unitName(MEDLoaderBase::buildEmptyString(MED_SNAME_SIZE)); med_parameter_type paramType; for(int i=0;i