Module containing all the time stepping schemes
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| logical, | private | :: | fix_conserve_at_step | = | .true. |
Whether to conserve fluxes at the current sub-step |
Advance all the grids over one time step, including all sources
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | iit |
process is a user entry in time loop, before output and advance allows to modify solution, add extra variables, etc. Warning: CFL dt already determined (and is not recomputed)!
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | iit | |||
| double precision, | intent(in) | :: | qt |
process_advanced is user entry in time loop, just after advance allows to modify solution, add extra variables, etc. added for handling two-way coupled PIC-MHD Warning: w is now at global_time^(n+1), global time and iteration at global_time^n, it^n
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | iit | |||
| double precision, | intent(in) | :: | qt |
Advance all grids over one time step, but without taking dimensional splitting or split source terms into account
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | idimmin | |||
| integer, | intent(in) | :: | idimmax |
Integrate all grids by one partial step
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | method(nlevelshi) | |||
| double precision, | intent(in) | :: | dtfactor |
Advance over dtfactor * dt |
||
| integer, | intent(in) | :: | idimmin | |||
| integer, | intent(in) | :: | idimmax | |||
| double precision, | intent(in) | :: | qtC | |||
| type(state), | target | :: | psa(max_blocks) |
Compute fluxes based on this state |
||
| type(block_grid_t) | :: | bga |
Compute fluxes based on this state |
|||
| double precision, | intent(in) | :: | qt | |||
| type(state), | target | :: | psb(max_blocks) |
Update solution on this state |
||
| type(block_grid_t) | :: | bgb |
Update solution on this state |
Evaluate Implicit part in place, i.e. psa==>F_im(psa)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | qtC |
psa at this time level |
||
| type(state), | target | :: | psa(max_blocks) |
Compute implicit part from this state and update it |
Implicit global update step within IMEX schemes, advance psa=psb+dtfactorqdtF_im(psa) First copy all variables from a to b, this is necessary to account for
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| double precision, | intent(in) | :: | dtfactor |
Advance psa=psb+dtfactorqdtF_im(psa) |
||
| double precision, | intent(in) | :: | qdt |
overall time step dt |
||
| double precision, | intent(in) | :: | qtC |
Both states psa and psb at this time level |
||
| type(state), | target | :: | psa(max_blocks) |
Compute implicit part from this state and update it |
||
| type(state), | target | :: | psb(max_blocks) |
Will be unchanged, as on entry |