return errStr;
}
+std::string remove_extension(const std::string& filename) {
+ size_t lastdot = filename.find_last_of(".");
+ if (lastdot == std::string::npos) return filename;
+ return filename.substr(0, lastdot);
+}
namespace
{
struct GET_DEFAULT // struct used to get default value from GetOptionValue()
}
void MgAdapt::setMedFileIn(std::string fileName)
{
- medFileIn = fileName;
+ medFileIn = fileName;
+ if (medFileOut == "") // default MED file Out
+ medFileOut = remove_extension( fileName )+ ".adapt.med";
}
std::string MgAdapt::getMedFileIn()
}
void MgAdapt::setTimeStepRankLast()
{
- med_int aRank, tmst;
- std::string fieldFile = useBackgroundMap ? sizeMapFile : medFileIn;
- getTimeStepInfos(fieldFile, tmst, aRank);
- setRankTimeStep((int) tmst, (int) aRank);
+ myUseLastTimeStep = true;
+ myUseChosenTimeStep = false;
+ myUseNoTimeStep = false;
+ //~med_int aRank, tmst;
+ //~std::string fieldFile = useBackgroundMap ? sizeMapFile : medFileIn;
+ //~getTimeStepInfos(fieldFile, tmst, aRank);
+ //~setRankTimeStep((int) tmst, (int) aRank);
}
void MgAdapt::setNoTimeStep()
-{
- int aRank = (int)MED_NO_IT;
- int tmst = (int)MED_NO_DT ;
- setRankTimeStep(tmst, aRank);
+{
+ myUseLastTimeStep = false;
+ myUseChosenTimeStep = false;
+ myUseNoTimeStep = true;
+ //~int aRank = (int)MED_NO_IT;
+ //~int tmst = (int)MED_NO_DT ;
+ //~setRankTimeStep(tmst, aRank);
+}
+void MgAdapt::setChosenTimeStepRank()
+{
+ myUseLastTimeStep = false;
+ myUseChosenTimeStep = true;
+ myUseNoTimeStep = false;
+ //~int aRank = (int)MED_NO_IT;
+ //~int tmst = (int)MED_NO_DT ;
+ //~setRankTimeStep(tmst, aRank);
}
void MgAdapt::setUseLocalMap(bool myLocal)
{
}
setSizeMapFile(mapfile);
- med_int rank;
- med_int tmst;
if (data->myUseNoTimeStep)
- {
- rank = MED_NO_IT;
- tmst = MED_NO_DT ;
- }
+ setNoTimeStep();
else if (data->myUseLastTimeStep)
- {
- std::string fieldFile = useBackgroundMap ? sizeMapFile : medFileIn;
- getTimeStepInfos(fieldFile, tmst, rank);
- }
+ setTimeStepRankLast();
else
- {
- rank = data->myRank;
- tmst = data->myTimeStep;
- }
- setRankTimeStep((int)tmst, (int)rank);
-
+ {
+ setChosenTimeStepRank();
+ setRankTimeStep(data->myTimeStep, data->myRank);
+ }
/* Advanced options */
setWorkingDir(data->myWorkingDir);
checkDirPath(data->myWorkingDir);
{
convertMeshFile(meshFormatOutputMesh, solFormatOutput);
}
- //~if (!err) cleanUp();
+ if (!err) cleanUp();
return err;
}
}
err = 0;
}
-
+/*
+ * to delete tmp files .mesh, .sol and if needed
+ * the log file
+ *
+ */
void MgAdapt::cleanUp()
{
int notOk;
std::string errStr;
- if(removeOnSuccess) tmpFilesToBeDeleted.push_back(logFile);
+ if(toKeepWorkingFiles)
+ return;
+ if(removeOnSuccess && printLogInFile)
+ tmpFilesToBeDeleted.push_back(logFile);
std::vector< std::string>::iterator it = tmpFilesToBeDeleted.begin();
for (; it!=tmpFilesToBeDeleted.end(); ++it)
std::string errStr;
std::string cmd = getExeName();
std::string meshIn(""), sizeMapIn(""), solFileIn("");
+ updateTimeStepRank();
convertMedFile(meshIn, solFileIn, sizeMapIn);
if (!isFileExist(meshIn) || !isFileExist(solFileIn))
{
cmd+= " --in "+ meshIn;
meshFormatOutputMesh = getFileName()+".mesh";
+ tmpFilesToBeDeleted.push_back(meshFormatOutputMesh);
cmd+= " --out "+ meshFormatOutputMesh;
if (useLocalMap || useConstantValue) cmd+= " --sizemap "+ solFileIn;
else // (useBackgroundMap)
std::string solFileOut = getFileName()+".sol";
cmd+= " --write_sizemap "+ solFileOut;
solFormatOutput.push_back(solFileOut);
+ tmpFilesToBeDeleted.push_back(solFileOut);
}
if (verbosityLevel != defaultVerboseLevel())
{
cmd+= " --verbose "+ ToComment(verbosityLevel);
}
-
+
std::string option, value;
bool isDefault;
const TOptionValues* options[] = { &_option2value, &_customOption2value };
}
-bool MgAdapt::isFileExist(std::string& fName) const
+bool MgAdapt::isFileExist(const std::string& fName)
{
if ( fName.empty() )
MEDCoupling::MCAuto<MEDCoupling::MEDFileData> mfd = MEDCoupling::MEDFileData::New(medFileIn);
MEDCoupling::MEDFileMeshes* meshes = mfd->getMeshes();
MEDCoupling::MEDFileMesh* fileMesh = meshes->getMeshAtPos(0); // ok only one mesh in file!
+ if (meshNameOut =="")
+ meshNameOut = fileMesh->getName();
storeGroupsAndFams(fileMesh);
MEDCoupling::MCAuto<MEDCoupling::MEDFileFields> fields = MEDCoupling::MEDFileFields::New();
for (; fIt!=famVec.end(); ++fIt)
{
- try // safety : FAMILY could be lost P2-->P1
+ try //
{
std::string givenFamNameFromMeshGemConverter = fileMesh->getFamilyNameGivenId( std::abs(fIt->_famId) );
fileMesh->changeFamilyId(std::abs(fIt->_famId), fIt->_famId);
}
-
-
+void MgAdapt::updateTimeStepRank()
+{
+
+ med_int arank;
+ med_int tmst;
+ if (myUseNoTimeStep)
+ {
+ arank = MED_NO_IT;
+ tmst = MED_NO_DT ;
+ setRankTimeStep((int)tmst, (int)arank);
+ }
+ else if (myUseLastTimeStep)
+ {
+ std::string fieldFile = useBackgroundMap ? sizeMapFile : medFileIn;
+ getTimeStepInfos(fieldFile, tmst, arank);
+ setRankTimeStep((int)tmst, (int)arank);
+ }
+}