mirror of
https://github.com/ParticulateFlow/CFDEMcoupling-PFM.git
synced 2025-12-08 06:37:44 +00:00
if the OF end time gets modified at runtime, we need to update the time setting for invoking the write_restart command if we only want to write at the end of the simulation; otherwise we will either write the file too soon or - probably even worse - not at all
162 lines
4.5 KiB
C
162 lines
4.5 KiB
C
/*---------------------------------------------------------------------------*\
|
|
CFDEMcoupling - Open Source CFD-DEM coupling
|
|
|
|
CFDEMcoupling is part of the CFDEMproject
|
|
www.cfdem.com
|
|
Christoph Goniva, christoph.goniva@cfdem.com
|
|
Copyright 2009-2012 JKU Linz
|
|
Copyright 2012- DCS Computing GmbH, Linz
|
|
-------------------------------------------------------------------------------
|
|
License
|
|
This file is part of CFDEMcoupling.
|
|
|
|
CFDEMcoupling is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU General Public License as published by the
|
|
Free Software Foundation; either version 3 of the License, or (at your
|
|
option) any later version.
|
|
|
|
CFDEMcoupling is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with CFDEMcoupling; if not, write to the Free Software Foundation,
|
|
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
|
|
Description
|
|
This code is designed to realize coupled CFD-DEM simulations using LIGGGHTS
|
|
and OpenFOAM(R). Note: this code is not part of OpenFOAM(R) (see DISCLAIMER).
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
#include "error.H"
|
|
|
|
#include "writeLiggghts.H"
|
|
#include "addToRunTimeSelectionTable.H"
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
|
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
|
|
|
defineTypeNameAndDebug(writeLiggghts, 0);
|
|
|
|
addToRunTimeSelectionTable
|
|
(
|
|
liggghtsCommandModel,
|
|
writeLiggghts,
|
|
dictionary
|
|
);
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
|
|
|
// Construct from components
|
|
writeLiggghts::writeLiggghts
|
|
(
|
|
const dictionary& dict,
|
|
cfdemCloud& sm,
|
|
int i
|
|
)
|
|
:
|
|
liggghtsCommandModel(dict,sm,i),
|
|
propsDict_(dict.subOrEmptyDict(typeName + "Props")),
|
|
command_("write_restart"),
|
|
path_(word("..")/word("DEM")),
|
|
writeName_("liggghts.restartCFDEM"),
|
|
writeLast_(propsDict_.lookupOrDefault<Switch>("writeLast" ,true)),
|
|
overwrite_(false)
|
|
{
|
|
// check if verbose
|
|
verbose_ = propsDict_.found("verbose");
|
|
|
|
if (propsDict_.found("path"))
|
|
{
|
|
path_ = fileName(propsDict_.lookup("path"));
|
|
if (!checkPath(path_))
|
|
{
|
|
FatalError << "The path you provided in writeLiggghtsProps is incorrect: " << path_ << "\n" << abort(FatalError);
|
|
}
|
|
else
|
|
{
|
|
Info << "Using user defined path to write LIGGGHTS restart file: " << path_ << endl;
|
|
}
|
|
}
|
|
|
|
if (propsDict_.found("writeName"))
|
|
{
|
|
propsDict_.lookup("writeName") >> writeName_;
|
|
}
|
|
|
|
if (!writeLast_ && propsDict_.found("overwrite"))
|
|
{
|
|
overwrite_ = Switch(propsDict_.lookup("overwrite"));
|
|
}
|
|
|
|
if (writeLast_)
|
|
{
|
|
runLast_ = true;
|
|
}
|
|
else
|
|
{
|
|
//Warning << "Using invalid options of writeLiggghts, please use 'writeLast' option." << endl;
|
|
runEveryWriteStep_ = true;
|
|
}
|
|
|
|
|
|
command_ += " " + path_ + "/" + writeName_;
|
|
if (overwrite_)
|
|
{
|
|
strCommand_ = command_;
|
|
}
|
|
else
|
|
{
|
|
command_ += "_";
|
|
}
|
|
|
|
Info << "writeLiggghts: A restart file writeName_" << command_ << " is written." << endl;
|
|
|
|
checkTimeSettings(dict_);
|
|
}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
|
|
|
writeLiggghts::~writeLiggghts()
|
|
{}
|
|
|
|
|
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
|
|
|
const char* writeLiggghts::command(int commandLine)
|
|
{
|
|
return strCommand_.c_str();
|
|
}
|
|
|
|
bool writeLiggghts::runCommand(int couplingStep)
|
|
{
|
|
if (!overwrite_) strCommand_ = addTimeStamp(command_);
|
|
|
|
// update time settings if restart file is only written at last step and
|
|
// end time has changed
|
|
if
|
|
(
|
|
runLast_
|
|
&& particleCloud_.mesh().time().runTimeModifiable()
|
|
&& particleCloud_.mesh().time().endTime().value() != endTime_
|
|
)
|
|
{
|
|
checkTimeSettings(dict_);
|
|
}
|
|
|
|
return runThisCommand(couplingStep);
|
|
}
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
} // End namespace Foam
|
|
|
|
// ************************************************************************* //
|