This routine runs over each convergence object and check for convergence of each requested quantities timeControl is active on current time
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_convergence_type), | intent(inout), | target | :: | me(:) |
convergence descriptions |
|
type(tem_time_type), | intent(in) | :: | time |
current simulation time |
||
type(tem_status_type), | intent(inout) | :: | status |
Status bits |
||
type(tem_varSys_type), | intent(in) | :: | varSys |
global variable system |
||
type(treelmesh_type), | intent(in) | :: | tree |
global tree |
subroutine tem_convergence_check( me, time, status, varSys, tree ) ! -------------------------------------------------------------------- ! !> convergence descriptions type(tem_convergence_type), target, intent(inout) :: me(:) !> current simulation time type(tem_time_type), intent(in) :: time !> Status bits type(tem_status_type), intent(inout) :: status !> global variable system type(tem_varSys_type), intent(in) :: varSys !> global tree type(treelmesh_type ), intent(in) :: tree ! -------------------------------------------------------------------- ! integer :: iConv logical :: triggered real(kind=rk), allocatable :: res(:) ! -------------------------------------------------------------------- ! allocate(res(io_buffer_size)) ! Run over all convergence objects do iConv = 1,size(me) ! Skip this convergence object, if there are no entries in the ! variable system if (me( iConv )%varMap%nScalars < 1) cycle ! Determine, if it is now the time to perform the convergence for each ! convergence object ! check time control and update it if triggered call tem_timeControl_check( me = me( iConv )%header%timeControl, & & now = time, & & comm = me( iConv )%proc%comm, & & triggered = triggered ) ! check convergence if timeControl is triggered if( triggered )then if (me(iConv)%header%useGetPoint) then call tem_convergence_check_point( me = me(iConv), & & time = time, & & status = status, & & varSys = varSys, & & tree = tree, & & res = res ) else call tem_convergence_check_element( me = me(iConv), & & time = time, & & status = status, & & varSys = varSys, & & tree = tree, & & res = res ) end if end if ! do convergence? interval, tmin, tmax check end do ! iConv deallocate(res) end subroutine tem_convergence_check