plasmaReactingFoam reads pulseTimeStep dictionary from controlDict

and changes timestep repetitively
This commit is contained in:
ignis 2016-03-14 02:33:42 +09:00
parent aac13971fb
commit bd6cdd5bf5
2 changed files with 63 additions and 1 deletions

View file

@ -38,4 +38,33 @@ scalar maxCo =
scalar maxDeltaT =
runTime.controlDict().lookupOrDefault<scalar>("maxDeltaT", GREAT);
const dictionary pulseTimeStepDict = runTime.controlDict().subOrEmptyDict("pulseTimeStep");
const bool pulseTimeStep = !pulseTimeStepDict.empty();
const scalar pulseFrequency = // default 20 kHz
pulseTimeStepDict.lookupOrDefault<scalar>("pulseFrequency", 20e3);
const scalar pulseDuration = // default 12 ns
pulseTimeStepDict.lookupOrDefault<scalar>("pulseDuration", 12e-9);
const label nStepPulse = // default 1
ceil(pulseTimeStepDict.lookupOrDefault<scalar>("nStepPulse", 1));
const label nStepIdle = // default 1
ceil(pulseTimeStepDict.lookupOrDefault<scalar>("nStepIdle", 1));
const scalar pulsePeriod = 1 / pulseFrequency;
const scalar pulseTime = 2*pulseDuration;
const scalar idleTime = pulsePeriod - pulseTime;
const scalar deltaTpulse = pulseTime / nStepPulse;
const scalar deltaTidle = idleTime / nStepIdle;
{
}
// ************************************************************************* //

View file

@ -31,7 +31,40 @@ Description
\*---------------------------------------------------------------------------*/
if (adjustTimeStep)
if (pulseTimeStep)
{
const scalar t = runTime.timeOutputValue();
const scalar T = pulsePeriod;
const scalar neg_saw_t = (t - floor(t/T+1.)*T);
const bool inPulse = neg_saw_t >= -pulseTime;
if (inPulse)
{
runTime.setDeltaT (deltaTpulse);
Info<< "deltaT to proceed the pulse time " << endl;
}
else
{
const scalar eta = - pulseTime - neg_saw_t;
if (eta >= deltaTidle)
{
runTime.setDeltaT (deltaTidle);
Info<< "deltaT to proceed the idle time " << endl;
}
else
{
runTime.setDeltaT (deltaTpulse);
Info<< "deltaT to the start of the pulse " << endl;
}
}
Info<< "deltaT = " << runTime.deltaTValue() << endl;
}
else if (adjustTimeStep)
{
scalar maxDeltaTFact = maxCo/(CoNum + SMALL);
scalar deltaTFact = min(min(maxDeltaTFact, 1.0 + 0.1*maxDeltaTFact), 1.2);