Back to OASIS4 home
Toy gridless :
atm : 1 output field,
on gridless grid (set of points) [1:1000]
ocn : 1 input field,
on gridless grid (set of points) [1:1000]
il_extent(1,2:3) = 1
il_offset(1,2:3) = 0
valid_shape(1:2,2:3) = 1
actual_shape(1:2,2:3) = 1
All the tags used in
psmile_find_intersect and psmile_get_inetrsect are defined in
psmile.inc. On this site they are here.
In the search of intersections, dest is the remote proc with which
the comp on the local component has an intersection. It is the process
in communicator comm_psmile.
lastag = PSMILe_Enddef_Tag =100 (Tag used to exchange data within
applications.)
Here paction%n_answer=paction%n_answer2recv=0
Illustrative picture of the exchanged messages (thanks to Moritz
Hanke): here
Source :
extents intersect
local extent : 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
remote extent: 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
-----------------------------------------------------
local extent : 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
remote extent: 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
intersection: 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
Number of input fields
: 0
Number of output fields
: 1
psmile_find_intersect:
psmile_rank->dest,
tag:
0 1
100
psmile_find_intersect: datatype,
npart:
-280177
0
psmile_find_intersect : ninter, nmyint ,
nnull:
1 0
1
Sending
tag
100 to
destination
1
--------------------> tells target
that there is an intersection
[1]
source: psmile_find_intersect: eof ierror = 0
[1] source: psmile_get_intersect: ninter 1,
nmyint 0, nnull 1
Posting Irecv
request(4)
167 with
tag
104
---------------------> tag for extra search
Posting Irecv
request(2)
168 with
tag
100
---------------------> ninter = 1 so
knows that must recieve an intersection
from the target
[1]
source: psmile_get_intersect: calling waitany: n, ninter
0 1;
n_answer, n_answer2recv 0 0;
grid2receive F; nloc_recv, nreq-num_req_types+1
0 0; n_selected 0
list of
requests
1 0
list of
requests
2 168
list of
requests
3 0
list of
requests
4 167
list of
requests
5 0
[1] source: n, ninter, sender, index
0
1
1
2
---------------------> will perform an action in psmile_enddef_action
[1] source: psmile_enddef_action: index 2,
sender 1
[1] source: psmile_recv_req_subgrid: comp_id = 1; method id
= 1; sender = 1; tag = 102
new_search = T
ndim_3d
=
3
[1] source: psmile_recv_req_mask: sender = 1, npart
= 1, receive_mask F
In recv_req_mask : recv_req
(ndim_3d+1, :):
168
-----------------------> new request to receive the mask (for
gridless) ; corresponds to index=3 when will be fullfill, the search will begin
[1] source: psmile_recv_req_mask: eof ierror =
0
[1] source: psmile_recv_req_subgrid: comp_id = 1; eof
sender = 1, ierror = 0
[1] source: psmile_enddef_action: eof ierror = 0
[1] source: psmile_get_intersect: calling waitany: n,
ninter 1 1;
n_answer, n_answer2recv 0 0;
grid2receive T; nloc_recv, nreq-num_req_types+1
0 0; n_selected 0
list of
requests
1 0
list of
requests
2 0
list of
requests
3 168
list of
requests
4 167
list of
requests
5 0
[1] source: n, ninter, sender, index
1
1
1 3
--------------------->
will perform an action in psmile_enddef_action (search)
[1] source: psmile_search_donor_cells: comp_id = 1; sender
= 1
[1] source: psmile_find_corr_field: comp_id = 1; sender
= 1
psmile_find_corr_field: comp_id,
grid_id
1 1
search for Taskout
id
1 and Taskin
Id
1
for dest
component
2
Taskout%In_channel( 1): origin_type 3800,
remote_transi_id 1, global_transi_id 1,
remote_comp_id 2
[1] source: psmile_find_corr_field: comp_id = 1; eof var_id
= 1, ierror = 0
[1] source: psmile_search_donor_gridless: comp_id = 1
Target
:
extents
intersect
local extent : 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
remote extent: 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
-----------------------------------------------------
local extent : 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
remote extent: 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
intersection: 0.100000E+01 0.100000E+04
0.100000E+01 0.100000E+01 0.100000E+01 0.100000E+01
search Taskin for dest
component
1
Taskin%In_channel( 1): origin_type 3800, remote comp
id 1, global_transi_id 1,
remote_transi_id 1
global_dest_grid_id 1
Number of input fields
: 1
Number of output fields
: 0
[2] target: psmile_is_mask_defined:
[2] target: psmile_is_mask_defined: eof ierror = 0; defined
= 2
psmile_find_intersect: psmile_rank->dest,
tag:
1
0
100
psmile_find_intersect: datatype,
npart:
0 1
psmile_find_intersect : ninter, nmyint ,
nnull:
1
0
0
psmile_find_intersect: ipart,
inter
1
1 1000
1
1
1 1
psmile_find_intersect: ipart,
ids
1
1 1
Sending
tag
100 to
destination
0
testing
comp:
2
of
2 (global
comp_id
2 )
[2] target: psmile_find_intersect: eof ierror = 0
[2] target: psmile_get_intersect: ninter 1,
nmyint 0, nnull 0
Posting Irecv
request(1)
167 with
tag 101
Posting Irecv
request(4)
168 with
tag 104
Posting Irecv
request(2)
169 with
tag 100
[2] target: psmile_get_intersect: calling waitany: n,
ninter 0 1;
n_answer, n_answer2recv 0 1;
grid2receive F; nloc_recv, nreq-num_req_types+1
0 1; n_selected 0
list of
requests
1 167
list of
requests
2 169
list of
requests
3 0
list of
requests
4 168
list of
requests
5 0
list of
requests
6 0
[2] target: n, ninter, sender, index
0
1
0 1
---------------------->
treat request 1 (sending the grid and/or
mask)
[2] target: psmile_enddef_action: index 1,
sender 0
[2] target: psmile_send_req_subgrid: grid_id = 1; method id
= 1; dest = 0
[2] target: psmile_send_req_mask: grid_id = 1; dest
= 0
[2] target: psmile_send_req_mask: eof grid_id = 1; ierror
= 0
[2] target: psmile_send_req_subgrid: grid_id = 1; eof dest
= 0, ierror = 0
Posting Irecv
request(
6 ) 167
with tag
111 and
size
15
----------------------->
new request to receive the locations of the target points that will be
found by the
search (dstijk)
[2] target: psmile_enddef_action: eof ierror = 0
[2] target: psmile_get_intersect: calling waitany: n,
ninter 0 1;
n_answer, n_answer2recv 1 1;
grid2receive F; nloc_recv, nreq-num_req_types+1
0 1; n_selected 0
list of
requests
1 0
list of
requests
2 169
list of
requests
3 0
list of
requests
4 168
list of
requests
5 0
list of
requests
6 167
[2] target: n, ninter, sender, index
0
1
0
2
[2] target: psmile_enddef_action: index 2,
sender 0
[2] target: psmile_enddef_action: eof ierror = 0
[2] target: psmile_get_intersect: calling waitany: n,
ninter 1 1;
n_answer, n_answer2recv 1 1;
grid2receive F; nloc_recv, nreq-num_req_types+1
0 1; n_selected 0
list of
requests
1 0
list of
requests
2 0
list of
requests
3 0
list of
requests
4 168
list of
requests
5 0
list of
requests
6 167
[2] target: n, ninter, sender, index
1
1
0 6
[2] target: psmile_enddef_action: index 6,
sender 0
[2] target: psmile_enddef_action_loc:
sender 0
[2] target: psmile_get_locations_3d:
sender 0
ncpl get from coupler
: 0
ndir sent directly
: 1000
npoints
: 0
nardir
: 1
[2] target: psmile_get_info_index: method_id 1
[2] target: psmile_get_info_index: eof ierror = 0; index
= 1
[2] target: psmile_get_exch_index: var_id 1
[2] target: psmile_get_exch_index: eof ierror = 0; index
= 1
Receiving locations
from
0 with
tag
111 size
6
Transform
block
1
1 - 1000
global
dstars
1
1
1000
1
1
1 1
part
offset
1
0
0 0
local
dstars
1
1
1000
1
1
1 1
[2] target: psmile_get_locations_3d: eof ierror = 0;
ncpl 0,
ndir 1000, nardir 1
[2] target: psmile_enddef_action_loc: eof ierror = 0
[2] target: psmile_enddef_action: eof ierror = 0
[2] target: psmile_enddef_action: index 4,
sender 1
[2] target: psmile_enddef_action: eof ierror = 0
[2] target: psmile_print_send_info : start