plasmaReactingFoam reads pulseTimeStep dictionary from controlDict
and changes timestep repetitively
This commit is contained in:
parent
aac13971fb
commit
bd6cdd5bf5
2 changed files with 63 additions and 1 deletions
|
|
@ -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;
|
||||
|
||||
{
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue