Difference between revisions of "PeriodicXPIC Custom Task"
Line 3: | Line 3: | ||
== Introduction == | == Introduction == | ||
The [[XPIC Features|XPIC(k) and FMPM(k) methods]] are advanced methods that filter out unwanted noise (in the null space) without damping out useful information. Their drawback is that they add calculation time as order <tt>k</tt> increases. Many simulations (especially those with stability issues) will run better by using XPIC(k) or FMPM(k). The XPIC(k) and FMPM(k) methods can be done every time step or only on periodic time steps. This custom tasks adds XPIC(k) or FMPM(k) to any simulation and lets you select the frequency of those calculations. | The [[XPIC Features|XPIC(k) and FMPM(k) methods]] are advanced methods that filter out unwanted noise (in the null space) without damping out useful information. Their drawback is that they add calculation time as order <tt>k</tt> increases. Many simulations (especially those with stability issues) will run better by using XPIC(k) or FMPM(k). The XPIC(k) and FMPM(k) methods can be done every time step or only on periodic time steps. This custom tasks adds XPIC(k) or FMPM(k) to any simulation and lets you select the frequency of those calculations. | ||
The XPIC(k) method was developed first and is described in Hammerquist and Nairn<ref name="XPIC"/>. They latter realized the the XPIC methods are equivalent approximation the inverse of the full mass matrix. That insight lead to a few changes to XPIC(k) methods to develop FMPM(k) where "F" indicates use of an approximate full mass matrix with oreder k indicate the number of terms used in that approxiation. The FMPM(k) method is described in Nairn and Hammerquist.<ref name="FMPM"/>. | |||
== Using FMPM(k) or XPIC(k) For Mechanics == | == Using FMPM(k) or XPIC(k) For Mechanics == |
Revision as of 10:08, 1 January 2021
A custom task to use XPIC(k) and FMPM(k) methods on all or selected time steps
Introduction
The XPIC(k) and FMPM(k) methods are advanced methods that filter out unwanted noise (in the null space) without damping out useful information. Their drawback is that they add calculation time as order k increases. Many simulations (especially those with stability issues) will run better by using XPIC(k) or FMPM(k). The XPIC(k) and FMPM(k) methods can be done every time step or only on periodic time steps. This custom tasks adds XPIC(k) or FMPM(k) to any simulation and lets you select the frequency of those calculations.
The XPIC(k) method was developed first and is described in Hammerquist and Nairn[1]. They latter realized the the XPIC methods are equivalent approximation the inverse of the full mass matrix. That insight lead to a few changes to XPIC(k) methods to develop FMPM(k) where "F" indicates use of an approximate full mass matrix with oreder k indicate the number of terms used in that approxiation. The FMPM(k) method is described in Nairn and Hammerquist.[2].
Using FMPM(k) or XPIC(k) For Mechanics
MPM simulations will use these standard FLIP method be default. To switch to FMPM(k) or XPIC(k) for all time steps (or just for some), schedule this task and specify all needed parameters. In scripted files, a PeriodicXPIC custom task is scheduled with
CustomTask PeriodicXPIC Parameter FMPMOrder,(order) (... or Parameter XPICOrder,(order)) Parameter periodicSteps,(stepInterval) Parameter periodicTime,(timeInterval) Parameter periodicCFL,(CFLfactor) Parameter verbose,{verbose} Parameter GridBCOption,(BCoption)
In XML files, this task is scheduled using a <Schedule> element, which must be within the single <CustomTasks> block:
<Schedule name='PeriodicXPIC'> <Parameter name='FMPMOrder'>(order)</Parameter> <!-- or <Parameter name='XPICOrder'>(order)</Parameter>--> <Parameter name='periodicSteps'>(stepInterval)</Parameter> <Parameter name='periodicTime'>(timeInterval)</Parameter> <Parameter name='periodicCFL'>(CFLfactor)</Parameter> <Parameter name='verbose'>(verbose)</Parameter> <Parameter name='GridBCOption'>(BCoption)</Parameter> </Schedule>
where the parameters are:
- (order) - Enter FMPM or XPIC order (the k) to use when doing periodic FMPM(k) or PIC(k) calculations. Select (order> using an FMPMOrder command to run using FMPM(k) or an XPICOrder command to run using XPIC(k).
- (stepInterval), (timeInterval), and (CFLfactor) - sets the frequency for running periodic FMPM(k) or XPIC(k) time steps for mechanics. The (stepInterval) option sets number of time steps between each FMPM(k) or XPIC(k) time step, (timeInterval) sets frequency in alt time units, and (CFLfactor) sets frequency relative to the basic time step for the momentum equation. If (stepInterval) is used, it is used and the other two are ignored. If (stepInterval) is not used, the time step is found from the (CFLfactor) (if provided) or from (timeInterval). One of these three parameters is required to enable periodic FMPM(k) or XPIC(k) calculations.
- (verbose) - If a non-zero integer, a comment line is printed in the output file every time FMPM(k) or XPIC(k) time steps are done. The default is 0.
- (BCOption) - Use "lumped" to use lumped mass matrix methods for boundary conditions, "velocity" to only impose grid velocity conditions in the velocity field, or "combined" to do both. The default is "combined" for FMPM(k) and lumped for XPIC(k). Note that XPIC(k) cannot use "velocity" option (that setting will be changed to "lumped" if used). This option only affects calculations when (order) is greater than 1.
Using FMPM(k) For Transport Properties
You can also use FMPM(k) for temperature (when doing conduction calculations) or for concentration (when doing diffusion calculations). FMPM(k) seems to provide significant improvement of transport modeling and can eliminate oscillations sometimes seen for temperature or concentration for particles within one cell. This feature is still in development and therefore only available in OSParticulas.
To use FMPM(k) for transport equations, select order previous section and then select periodicity of FMPM(k) for conduction and/or diffusion with following task parameters:
Parameter periodicStepsConduction,(stepInterval) Parameter periodicTimeConduction,(timeInterval) Parameter periodicCFLConduction,(CFLfactor) Parameter periodicStepsDiffusion,(stepInterval) Parameter periodicTimeDiffusion,(timeInterval) Parameter periodicCFLDiffusion,(CFLfactor)
In XML files, this new parameter options within the <CustomTasks> block are
<Parameter name='periodicStepsConduction'>(stepInterval)</Parameter> <Parameter name='periodicTimeConduction'>(timeInterval)</Parameter> <Parameter name='periodicCFLConduction'>(CFLfactor)</Parameter> <Parameter name='periodicStepsDiffusion'>(stepInterval)</Parameter> <Parameter name='periodicTimeDiffusion'>(timeInterval)</Parameter> <Parameter name='periodicCFLDiffusion'>(CFLfactor)</Parameter>
The meanings of values (stepInterval), (timeInterval) and (CFLfactor) are given in the previous section except that CFL factor is applied to transport time step and not the simulation time step.
When using FMPM(k) for transport equations, you should never pick k=1 because it causes too much numerical diffusion. Any higher order works, unless the FMPM(k) time steps are done too frequently. Because transport time step is usually much longer then mechanics time step, it is usually best to pick transport FMPM(k) frequency using the CFL parameter options and the chosen CFL factor should be 0.5 or higher to avoid any numerical diffusion.