| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(solver_t), | public, | allocatable | :: | solver | |||
| type(io_manager_t), | public | :: | io_mgr | ||||
| type(monitoring_t), | public | :: | monitoring | ||||
| class(field_t), | public, | pointer | :: | bc_start_u_x | => | null() | |
| class(field_t), | public, | pointer | :: | bc_start_v_x | => | null() | |
| class(field_t), | public, | pointer | :: | bc_start_w_x | => | null() | |
| class(field_t), | public, | pointer | :: | bc_end_u_x | => | null() | |
| class(field_t), | public, | pointer | :: | bc_end_v_x | => | null() | |
| class(field_t), | public, | pointer | :: | bc_end_w_x | => | null() | |
| class(field_t), | public, | pointer | :: | bc_start_u_y | => | null() | |
| class(field_t), | public, | pointer | :: | bc_start_v_y | => | null() | |
| class(field_t), | public, | pointer | :: | bc_start_w_y | => | null() | |
| class(field_t), | public, | pointer | :: | bc_end_u_y | => | null() | |
| class(field_t), | public, | pointer | :: | bc_end_v_y | => | null() | |
| class(field_t), | public, | pointer | :: | bc_end_w_y | => | null() |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_backend_t), | intent(inout), | target | :: | backend | ||
| type(mesh_t), | intent(inout), | target | :: | mesh | ||
| type(allocator_t), | intent(inout), | target | :: | host_allocator |
Called after every completed time step, unlike postprocess which runs only every n_output steps. No-op unless a case overrides it.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t) | :: | self | ||||
| integer, | intent(in) | :: | iter | |||
| real(kind=dp), | intent(in) | :: | t |
Convective outflow number and inlet/outlet flow-rate imbalance for a case with an x inflow and a convective x outflow (the X_FACE form of field_set_face_from_field). Three slice reductions on the device and two batched MPI_Allreduces; no D2H copy of the full field. Assumes x is not decomposed, as the FFT Poisson solver requires. Without flow_rate_diff only the outflow number is computed.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t) | :: | self | ||||
| real(kind=dp), | intent(out) | :: | out_vel | |||
| real(kind=dp), | intent(out), | optional | :: | flow_rate_diff |
The flow_rate_diff for the X_FACE stamp of field_set_face_from_field that makes the flow rate out equal the flow rate in exactly, as the pressure projection sees them. The x staggered derivative sums to (u(nx) - u(1))/dx over the cells, so only the two face planes enter, each weighted over y by y_weights: the case passes the weights of the y interpolation (1/2 on a non-periodic boundary plane, 1 elsewhere), with 0 on any plane it overwrites with the same value on both faces after the stamp. The stamp is linear in u, u(nx) <- (1 - c)u(nx) + cu(nx - 1) + flow_rate_diff, so the sums of the planes before it give the outlet flow rate after it. Call it with u as it is about to be stamped, once bc_start_u_x holds this substep's inlet plane. Assumes x is not decomposed, as compute_outflow_params does.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t) | :: | self | ||||
| class(field_t), | intent(in) | :: | u | |||
| real(kind=dp), | intent(in) | :: | out_vel | |||
| real(kind=dp), | intent(in) | :: | y_weights(:) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t) | :: | self | ||||
| class(base_backend_t), | intent(inout), | target | :: | backend | ||
| type(mesh_t), | intent(inout), | target | :: | mesh | ||
| type(allocator_t), | intent(inout), | target | :: | host_allocator |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| class(base_case_t) | :: | self | ||||||||||||||||||
| class(field_t), | intent(inout) | :: | field | |||||||||||||||||
public pure function field_func(coords) result(r)Arguments
Return Value real(kind=dp) |
||||||||||||||||||||
One time-integrator sub-stage: case-specific BCs, transeq, forcings, time integration, case BC re-application, IBM body force, and pressure correction. Extracted from run()'s per-sub-stage loop body so the same allocation path can be driven directly (e.g. by the memory-estimate probe) without going through the full time loop, I/O cadence, or diagnostics.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t), | intent(inout) | :: | self | |||
| type(flist_t), | intent(inout) | :: | curr(:) | |||
| type(flist_t), | intent(inout) | :: | deriv(:) | |||
| integer, | intent(in) | :: | iter |
Allocates the time integrator field lists and points curr at the solver velocity and species fields. Shared by run() and x3d2-memcheck.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t), | intent(inout) | :: | self | |||
| type(flist_t), | intent(out), | allocatable | :: | curr(:) | ||
| type(flist_t), | intent(out), | allocatable | :: | deriv(:) |
The per-iteration work after the substeps: sets current_iter and computes the pressure and the derived fields. Shared by run() and x3d2-memcheck.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t), | intent(inout) | :: | self | |||
| integer, | intent(in) | :: | iter | |||
| logical, | intent(in) | :: | output_vorticity | |||
| logical, | intent(in) | :: | output_qcriterion |
Runs the solver forwards in time from t=t_0 to t=T, performing postprocessing/IO and reporting diagnostics.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(base_case_t), | intent(inout) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(case_generic_t) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(case_generic_t) | :: | self |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(case_generic_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | du | |||
| class(field_t), | intent(inout) | :: | dv | |||
| class(field_t), | intent(inout) | :: | dw | |||
| integer, | intent(in) | :: | iter |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(case_generic_t) | :: | self | ||||
| class(field_t), | intent(inout) | :: | u | |||
| class(field_t), | intent(inout) | :: | v | |||
| class(field_t), | intent(inout) | :: | w |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(case_generic_t) | :: | self | ||||
| integer, | intent(in) | :: | iter | |||
| real(kind=dp), | intent(in) | :: | t |