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