18 procedure,
nopass:: init
38 class(
rt_t),
pointer:: omega0, omega, upstream
39 class(
link_t),
pointer:: nbor
40 class(
task_t),
pointer:: nb_task
41 logical:: needs, needs_me, download
43 call trace%begin (
'rt_nbors_t%init')
45 call omega0%clear(bits%init_nbors)
49 needs=.true.; needs_me=.false.; download=.false.
50 call init_nbor_pair (omega0, needs, mhd, needs_me, download)
55 do i_omega=1,omega0%n_omega
56 omega => omega0%omega(i_omega)
61 do while (
associated(nbor))
71 if (
associated(nb_task%rt))
then 72 if (nb_task%rt%n_omega == 0)
then 76 needs=.true.; needs_me=.false.; download=.true.
77 call init_nbor_pair (omega0, needs, nb_task, needs_me, download)
82 upstream => nb_task%rt%omega(i_omega)
83 if (omega%needs (omega, upstream) .and. upstream%on)
then 88 needs=.true.; needs_me=.false.; download=.true.
89 call init_nbor_pair (omega, needs, upstream, needs_me, download)
99 needs=.true.; needs_me=.false.; download=.false.
100 call init_nbor_pair (omega, needs, omega0, needs_me, download)
104 needs=.true.; needs_me=.false.; download=.false.
105 call init_nbor_pair (mhd, needs, omega, needs_me, download)
114 SUBROUTINE init_nbor_pair (task1, needed, task2, needs_me, download)
115 class(
task_t):: task1, task2
116 logical:: needed, needs_me, download
117 class(
link_t),
pointer:: link1, link2, nbor1, nbor2
119 call trace%begin (
'rt_t%init_nbor_pairs')
133 nbor1%task => nbor1%link%task
134 nbor1%needed = needed
135 nbor1%needs_me = needs_me
136 nbor1%download = download
142 nbor2%task => nbor2%link%task
143 nbor2%needed = needs_me
144 nbor2%needs_me = needed
145 nbor2%download = .false.
153 if (link1%task%is_set (bits%virtual))
then 154 nbor1%download = .false.
155 nbor1%needed = .false.
156 nbor2%needs_me = .false.
157 if (.not.nbor1%needs_me)
then 167 if (link2%task%is_set (bits%virtual))
then 168 nbor2%download = .false.
169 nbor2%needs_me = .false.
170 nbor1%needed = .false.
171 if (.not.nbor2%needed)
then 179 call link1%add_nbor_by_rank (link1%nbor, nbor1)
180 call link2%add_nbor_by_rank (link2%nbor, nbor2)
182 END SUBROUTINE init_nbor_pair
Module to set up angles and bins for an RT patch with only absorption. This means that the only extra...
Template module for patches, which adds pointers to memory and mesh, and number of dimensions and var...
Module to add nbor lists for RT sub-tasks, and modify the parent MHD tasks.
Module with list handling for generic class task_t objects.
This module contains all experiment specific information necessary to solve the heat diffusion proble...
Template module for tasks.