GPU backend of MultiSetModel3D. The interface exchange gathers each set's face trace from solution%boundary_gpu, and the default FillInterfaceBoundary writes solution%extBoundary_gpu with a device kernel. Overrides of FillInterfaceBoundary must likewise write the device copy (iface%ghost_gpu holds the ghost traces there), and must not call solution%UpdateDevice inside the step loop: it resets the halo exchange's static-variable state.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=prec), | public | :: | dt | ||||
| real(kind=prec), | public | :: | entropy | ||||
| type(Mesh3D), | public, | pointer | :: | globalMesh | => | null() | Set id of every global element, s(e), e = 1..nGlobalElem (replicated). |
| logical, | public | :: | gradient_enabled | = | .false. | ||
| type(SetInterface3D), | public | :: | iface | Each set's solution%boundary, the trace the interface exchange sends. |
|||
| logical, | public | :: | interfacesReady | = | .false. | ||
| integer, | public | :: | ioIterate | = | 0 | ||
| integer, | public | :: | nInterfaceFaces | = | 0 | Interface map and ghost traces; built by SetupInterfaces. |
|
| integer, | public | :: | nSets | = | 0 | ||
| integer, | public | :: | nstepped | = | 0 | ||
| integer, | public | :: | nvar | ||||
| logical, | public | :: | prescribed_bcs_enabled | = | .true. | ||
| integer, | public, | allocatable | :: | setGlobalId(:) | Number of set-k elements on lower ranks, k = 1..nSets. |
||
| integer, | public, | allocatable | :: | setOfElem(:) | Set-global id g_k(e) of every global element within its own set (replicated). |
||
| integer, | public, | allocatable | :: | setOffsetThisRank(:) | Number of interface faces summed over all sets and all ranks. |
||
| type(ElementSet3D), | public, | allocatable | :: | sets(:) | The global mesh the sets were extracted from. Not owned. |
||
| real(kind=prec), | public | :: | t | ||||
| logical, | public | :: | tecplot_enabled | = | .true. | ||
| procedure(SELF_timeIntegrator), | public, | pointer | :: | timeIntegrator | => | Euler_timeIntegrator | |
| type(SetTraceRef), | public, | allocatable | :: | traces(:) |
| procedure, public :: AdditionalFree => AdditionalFree_Model | |
| procedure, public :: AdditionalInit => AdditionalInit_Model | |
| procedure, public :: AdditionalOutput => AdditionalOutput_Model | |
| procedure, public :: CalculateEntropy => CalculateEntropy_MultiSetModel3D_t | |
| procedure, public :: CalculateTendency => CalculateTendency_MultiSetModel3D_t | |
| procedure, public :: Euler_timeIntegrator | |
| procedure, public :: FillInterfaceBoundary => FillInterfaceBoundary_MultiSetModel3D | |
| procedure, public :: ForwardStep => ForwardStep_Model | |
| procedure, public :: Free => Free_MultiSetModel3D_t | |
| procedure, public :: GetSimulationTime | |
| procedure, public :: IncrementIOCounter => IncrementIOCounter_MultiSetModel3D_t | |
| procedure, public :: Init => Init_MultiSetModel3D_t | |
| procedure, public :: LowStorageRK2_timeIntegrator | |
| procedure, public :: LowStorageRK3_timeIntegrator | |
| procedure, public :: LowStorageRK4_timeIntegrator | |
| procedure, public :: PostStepHook => PostStepHook_MultiSetModel3D_t | |
| procedure, public :: PreStepHook => PreStepHook_MultiSetModel3D_t | |
| procedure, public :: PreTendencyHook => PreTendencyHook_Model | |
| procedure, public :: PrintType => PrintType_Model | |
| procedure, public :: ReadModel => Read_MultiSetModel3D_t | |
| procedure, public :: ReportEntropy => ReportEntropy_Model | |
| procedure, public :: ReportMetrics => ReportMetrics_MultiSetModel3D_t | |
| procedure, public :: ReportUnmappedBoundaries => ReportUnmappedBoundaries_MultiSetModel3D_t | |
| procedure, public :: ReportUserMetrics => ReportUserMetrics_Model | |
| procedure, public :: SetNumberOfVariables => SetNumberOfVariables_Model | |
| procedure, public :: SetSimulationTime | |
| generic, public :: SetTimeIntegrator => SetTimeIntegrator_withChar | |
| procedure, public :: SetupInterfaces => SetupInterfaces_MultiSetModel3D | |
| procedure, public :: UpdateGRK2 => UpdateGRK2_MultiSetModel3D_t | |
| procedure, public :: UpdateGRK3 => UpdateGRK3_MultiSetModel3D_t | |
| procedure, public :: UpdateGRK4 => UpdateGRK4_MultiSetModel3D_t | |
| procedure, public :: UpdateSolution => UpdateSolution_MultiSetModel3D_t | |
| procedure, public :: WriteModel => Write_MultiSetModel3D_t | |
| procedure, public :: WriteTecplot => WriteTecplot_MultiSetModel3D_t | |
| procedure, public :: entropy_func => entropy_func_Model | |
| procedure, public :: flux1D => flux1d_Model | |
| procedure, public :: flux2D => flux2d_Model | |
| procedure, public :: flux3D => flux3d_Model | |
| procedure, public :: riemannflux1d => riemannflux1d_Model | |
| procedure, public :: riemannflux2d => riemannflux2d_Model | |
| procedure, public :: riemannflux3d => riemannflux3d_Model | |
| procedure, public :: source1d => source1d_Model | |
| procedure, public :: source2d => source2d_Model | |
| procedure, public :: source3d => source3d_Model |
Device version of FillInterfaceBoundary_MultiSetModel3D_t: extBoundary(i,j,s,e,v) = ghost(i,j,v,f) on the interface faces of set iset, written to solution%extBoundary_gpu. The partner set must have the same nvar.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MultiSetModel3D), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | iset |
As SetupInterfaces_MultiSetModel3D_t, then points each set's trace reference at the device copy of its solution%boundary.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(MultiSetModel3D), | intent(inout) | :: | this |