00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 subroutine psmile_smioc_init(cda_comp_name, il_comp_id, id_err)
00011
00012
00013
00014
00015 USE PSMILe_smioc
00016 USE PSMILe_smioc_interface
00017
00018 IMPLICIT NONE
00019
00020
00021
00022
00023 CHARACTER (LEN=256), INTENT(In) :: cda_comp_name
00024
00025 INTEGER, INTENT (IN) :: il_comp_id
00026
00027
00028
00029 INTEGER, INTENT (Out) :: id_err
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 INTEGER :: sasa_c_read_file, sasa_c_close
00053
00054 CHARACTER(LEN=80), SAVE :: mycvs =
00055 '$Id'
00056
00057 CHARACTER (LEN=256) :: cla_smioc_file
00058
00059 INTEGER :: il_smioc_recv_size_i, il_smioc_recv_size_c, il_smioc_recv_size_d
00060 INTEGER :: il_index_i, il_index_c, il_index_d
00061
00062 INTEGER :: il_nb_int_i_fix, il_nb_int_i_in, il_nb_int_i_out
00063 INTEGER :: il_nb_int_d_fix, il_nb_int_d_in, il_nb_int_d_out
00064 INTEGER :: il_nb_int_c_fix, il_nb_int_c_in, il_nb_int_c_out
00065 INTEGER :: il_igrid
00066
00067 INTEGER, DIMENSION(:), ALLOCATABLE :: ila_smioc_recv
00068 CHARACTER (LEN=256), DIMENSION(:), ALLOCATABLE :: cla_smioc_recv
00069 DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: dla_smioc_recv
00070 REAL, DIMENSION(:), ALLOCATABLE :: rla_smioc_recv
00071
00072
00073 INTEGER :: ib_ntt, ib, ib_bis, ib_ter
00074 INTEGER :: ib_ntt2, ib_nin, ib_nout, ib_transi
00075 INTEGER :: ib_grid
00076
00077
00078 INTEGER :: ib_p, il_combi, il_source
00079 INTEGER :: il_npartinid, il_npartoutid
00080
00081
00082 LOGICAL :: ll_combi, ll_source
00083
00084
00085 LOGICAL :: ll_userdef_details
00086
00087
00088 LOGICAL :: ll_first_details
00089
00090 INTEGER :: il_status(MPI_STATUS_SIZE)
00091 INTEGER :: il_chanel, il_index
00092 INTEGER :: il_smioc_len
00093 INTEGER :: il_compid
00094
00095
00096 INTEGER, DIMENSION(7) :: ila_dim_size
00097
00098 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_orig_comp_id
00099 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_dest_comp_id
00100 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_combi_loc
00101 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_trans_orig_id
00102 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_trans_dest_id
00103
00104 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_cpl_rst_file
00105 DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: dla_cpl_rst_file
00106 CHARACTER(len=max_name), DIMENSION(:,:), ALLOCATABLE :: cla_cpl_rst_file
00107
00108 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_trans_interp
00109 DOUBLE PRECISION, DIMENSION(:,:), ALLOCATABLE :: dla_trans_interp
00110 CHARACTER(len=max_name), DIMENSION(:,:), ALLOCATABLE :: cla_trans_interp
00111
00112
00113 INTEGER, DIMENSION(:), ALLOCATABLE :: ila_comp_nb_stand_name
00114 INTEGER, DIMENSION(:), ALLOCATABLE :: ila_comp_nb_transi_in
00115 INTEGER, DIMENSION(:), ALLOCATABLE :: ila_comp_nb_transi_out
00116
00117
00118 INTEGER, PARAMETER :: nerrp = 2
00119 INTEGER :: ierrp (nerrp)
00120
00121 #ifdef DEBUG
00122 CHARACTER(len=max_name) :: file_name
00123 INTEGER :: my_rank
00124 INTEGER :: il_len
00125 #endif
00126
00127
00128
00129
00130
00131 #ifdef VERBOSE
00132 print 9990, trim(ch_id), il_comp_id
00133
00134 call psmile_flushstd
00135 #endif /* VERBOSE */
00136
00137
00138
00139
00140 #ifdef DEBUG
00141 CALL MPI_Comm_rank( MPI_COMM_WORLD, my_rank, id_err )
00142 il_chanel = 31
00143 WRITE(file_name,'(a,a17)') TRIM(cda_comp_name), '_smioc.debug.0000'
00144 il_len = LEN_TRIM(file_name)
00145 IF ( my_rank < 10 ) THEN
00146 WRITE(file_name(il_len :il_len),'(i1)') my_rank
00147 ELSE IF ( my_rank < 100 ) THEN
00148 WRITE(file_name(il_len-1:il_len),'(i2)') my_rank
00149 ELSE IF ( my_rank < 1000 ) THEN
00150 WRITE(file_name(il_len-2:il_len),'(i3)') my_rank
00151 ELSE IF ( my_rank < 10000 ) THEN
00152 WRITE(file_name(il_len-3:il_len),'(i4)') my_rank
00153 ENDIF
00154 OPEN(FILE=file_name,FORM='FORMATTED',UNIT=il_chanel)
00155 #endif
00156
00157
00158
00159
00160
00161 #ifdef DEBUG
00162 WRITE(il_chanel,*) ' '
00163 WRITE(il_chanel,*) '* Get the dimensionning numbers'
00164 #endif
00165
00166
00167 IF ( .NOT. ALLOCATED(iga_comp_id_doc_XML) ) &
00168 ALLOCATE( iga_comp_id_doc_XML(1), stat=id_err )
00169 IF (id_err > 0) THEN
00170 ierrp (1) = id_err
00171 ierrp (2) = 1
00172 id_err = 13
00173
00174 CALL PSMILe_Error ( id_err, 'iga_comp_id_doc_XML', &
00175 ierrp, 2, __FILE__, __LINE__ )
00176 RETURN
00177 ENDIF
00178
00179
00180 IF ( .NOT. ALLOCATED(iga_comp_nb_grids) ) &
00181 ALLOCATE( iga_comp_nb_grids(1), stat=id_err )
00182 IF (id_err > 0) THEN
00183 ierrp (1) = id_err
00184 ierrp (2) = 1
00185 id_err = 13
00186
00187 call psmile_error ( id_err, 'iga_comp_nb_grids', &
00188 ierrp, 2, __FILE__, __LINE__ )
00189 RETURN
00190 ENDIF
00191 IF ( .NOT. ALLOCATED(iga_comp_nb_transi) ) &
00192 ALLOCATE( iga_comp_nb_transi(1), stat=id_err )
00193 IF (id_err > 0) THEN
00194 ierrp (1) = id_err
00195 ierrp (2) = 1
00196 id_err = 13
00197
00198 call psmile_error ( id_err, 'iga_comp_nb_transi', &
00199 ierrp, 2, __FILE__, __LINE__ )
00200 RETURN
00201 ENDIF
00202 IF ( .NOT. ALLOCATED(iga_comp_nb_persis) ) &
00203 ALLOCATE( iga_comp_nb_persis(1), stat=id_err )
00204 IF (id_err > 0) THEN
00205 ierrp (1) = id_err
00206 ierrp (2) = 1
00207 id_err = 13
00208
00209 call psmile_error ( id_err, 'iga_comp_nb_persis', &
00210 ierrp, 2, __FILE__, __LINE__ )
00211 RETURN
00212 ENDIF
00213 IF ( .NOT. ALLOCATED(iga_comp_nb_unitsets) ) &
00214 ALLOCATE( iga_comp_nb_unitsets(1), stat=id_err )
00215 IF (id_err > 0) THEN
00216 ierrp (1) = id_err
00217 ierrp (2) = 1
00218 id_err = 13
00219
00220 call psmile_error ( id_err, 'iga_comp_nb_unitsets', &
00221 ierrp, 2, __FILE__, __LINE__ )
00222 RETURN
00223 ENDIF
00224 IF ( .NOT. ALLOCATED(iga_comp_nb_udef) ) &
00225 ALLOCATE( iga_comp_nb_udef(1), stat=id_err )
00226 IF (id_err > 0) THEN
00227 ierrp (1) = id_err
00228 ierrp (2) = 1
00229 id_err = 13
00230
00231 call psmile_error ( id_err, 'iga_comp_nb_udef', &
00232 ierrp, 2, __FILE__, __LINE__ )
00233 RETURN
00234 ENDIF
00235
00236
00237
00238
00239 #ifdef DEBUG
00240 WRITE(il_chanel,*) ' Component ', cda_comp_name
00241 #endif
00242
00243 IF (Appl%stand_alone) THEN
00244
00245 cla_smioc_file = TRIM(Appl%name)//"_"//TRIM(cda_comp_name)//"_smioc.xml"
00246 il_smioc_len = LEN_TRIM(Appl%name) + 1 + LEN_TRIM(cda_comp_name) + 10
00247
00248
00249 iga_comp_id_doc_XML(1) = sasa_c_read_file (cla_smioc_file, il_smioc_len)
00250
00251 il_compid = 1
00252 ll_userdef_details = .false.
00253 CALL get_smioc_numbers ( iga_comp_id_doc_XML(1), &
00254 iga_comp_nb_unitsets(1), &
00255 iga_comp_nb_grids(1), &
00256 iga_comp_nb_transi(1), &
00257 iga_comp_nb_persis(1), &
00258 il_compid, &
00259 ll_userdef_details, &
00260 id_err )
00261 IF (id_err .ne. 0) WRITE(il_chanel,*) 'WARNING: Pb in get_smioc_numbers'
00262
00263 #ifdef DEBUG
00264 WRITE(il_chanel,*) ' Nb of Fortran unit sets ', iga_comp_nb_unitsets(1)
00265 WRITE(il_chanel,*) ' Nb of grids ', iga_comp_nb_grids(1)
00266 WRITE(il_chanel,*) ' Nb of transients ', iga_comp_nb_transi(1)
00267 WRITE(il_chanel,*) ' Nb of persistents ', iga_comp_nb_persis(1)
00268 WRITE(il_chanel,*) ' '
00269 call psmile_flushstd(il_chanel)
00270 #endif
00271
00272 ELSE
00273
00274 ALLOCATE(ila_smioc_recv(4), stat=id_err)
00275 IF (id_err > 0) THEN
00276 ierrp (1) = id_err
00277 ierrp (2) = 4
00278 id_err = 13
00279
00280 call psmile_error ( id_err, 'ila_smioc_recv', &
00281 ierrp, 2, __FILE__, __LINE__ )
00282 RETURN
00283 ENDIF
00284
00285 CALL MPI_Recv (ila_smioc_recv, 4, MPI_Integer, &
00286 PRISMdrv_root, 1, comm_trans, il_status, id_err)
00287
00288 IF (id_err .ne. 0) &
00289 WRITE(il_chanel,*) 'WARNING: Pb in get_smioc_numbers'
00290
00291 iga_comp_nb_unitsets(1) = ila_smioc_recv(1)
00292 iga_comp_nb_grids(1) = ila_smioc_recv(2)
00293 iga_comp_nb_transi(1) = ila_smioc_recv(3)
00294 iga_comp_nb_persis(1) = ila_smioc_recv(4)
00295
00296 #ifdef DEBUG
00297 WRITE(il_chanel,*) ' Nb of Fortran unit sets ', &
00298 iga_comp_nb_unitsets(1)
00299 WRITE(il_chanel,*) ' Nb of grids ', iga_comp_nb_grids(1)
00300 WRITE(il_chanel,*) ' Nb of transients ', iga_comp_nb_transi(1)
00301 WRITE(il_chanel,*) ' Nb of persistents ', iga_comp_nb_persis(1)
00302 WRITE(il_chanel,*) ' '
00303 call psmile_flushstd(il_chanel)
00304 #endif
00305
00306 DEALLOCATE(ila_smioc_recv, stat=id_err)
00307 IF (id_err > 0) THEN
00308 ierrp (1) = id_err
00309 id_err = 14
00310
00311 call psmile_error ( id_err, 'ila_smioc_recv', &
00312 ierrp, 1, __FILE__, __LINE__ )
00313 RETURN
00314 ENDIF
00315
00316
00317
00318 END IF
00319
00320 #ifdef DEBUG
00321 WRITE(il_chanel,*) ' '
00322 WRITE(il_chanel,*) ' Got the dimensionning numbers'
00323 call psmile_flushstd(il_chanel)
00324 #endif
00325
00326
00327 ALLOCATE ( sga_smioc_comp(il_comp_id)%iga_smioc_unitsets (iga_comp_nb_unitsets(1), 3), stat=id_err )
00328 IF (id_err > 0) THEN
00329 ierrp (1) = id_err
00330 ierrp (2) = iga_comp_nb_unitsets(1)
00331 id_err = 13
00332
00333 call psmile_error ( id_err, 'iga_smioc_unitsets', &
00334 ierrp, 2, __FILE__, __LINE__ )
00335 RETURN
00336 ENDIF
00337
00338 ALLOCATE ( sga_smioc_comp(il_comp_id)%sga_smioc_grids (iga_comp_nb_grids(1)), stat=id_err )
00339 IF (id_err > 0) THEN
00340 ierrp (1) = id_err
00341 ierrp (2) = iga_comp_nb_grids(1)
00342 id_err = 13
00343
00344 call psmile_error ( id_err, 'sga_smioc_grids', &
00345 ierrp, 2, __FILE__, __LINE__ )
00346 RETURN
00347 ENDIF
00348
00349 ALLOCATE ( sga_smioc_comp(il_comp_id)%sga_smioc_transi (iga_comp_nb_transi(1)), stat=id_err )
00350 IF (id_err > 0) THEN
00351 ierrp (1) = id_err
00352 ierrp (2) = iga_comp_nb_transi(1)
00353 id_err = 13
00354
00355 call psmile_error ( id_err, 'sga_smioc_transi', &
00356 ierrp, 2, __FILE__, __LINE__ )
00357 RETURN
00358 ENDIF
00359
00360 ALLOCATE ( sga_smioc_comp(il_comp_id)%sga_smioc_persis (iga_comp_nb_persis(1)) , stat=id_err)
00361 IF (id_err > 0) THEN
00362 ierrp (1) = id_err
00363 ierrp (2) = iga_comp_nb_persis(1)
00364 id_err = 13
00365
00366 call psmile_error ( id_err, 'sga_smioc_persis', &
00367 ierrp, 2, __FILE__, __LINE__ )
00368 RETURN
00369 ENDIF
00370
00371 iga_smioc_unitsets => sga_smioc_comp(il_comp_id)%iga_smioc_unitsets
00372 sga_smioc_grids => sga_smioc_comp(il_comp_id)%sga_smioc_grids
00373 sga_smioc_transi => sga_smioc_comp(il_comp_id)%sga_smioc_transi
00374 sga_smioc_persis => sga_smioc_comp(il_comp_id)%sga_smioc_persis
00375
00376 #ifdef DEBUG
00377 WRITE(il_chanel,*) ' '
00378 WRITE(il_chanel,*) '* Global structures allocated'
00379 call psmile_flushstd(il_chanel)
00380 #endif
00381
00382
00383
00384
00385
00386
00387 #ifdef DEBUG
00388 WRITE(il_chanel,*) ' '
00389 WRITE(il_chanel,*) '* Get the Fortran unit sets component per component'
00390 #endif
00391
00392 IF (iga_comp_nb_unitsets(1) .gt. 0) THEN
00393
00394
00395 IF (Appl%stand_alone) THEN
00396 CALL get_unitsets_details ( iga_comp_id_doc_XML(1), &
00397 iga_comp_nb_unitsets(1), &
00398 iga_smioc_unitsets(1:iga_comp_nb_unitsets(1),:), &
00399 id_err )
00400 IF (id_err .ne. 0) &
00401 WRITE(il_chanel,*) 'WARNING: Pb in get_unitsets_details'
00402
00403 ELSE
00404
00405 ALLOCATE(ila_smioc_recv(iga_comp_nb_unitsets(1)*3), stat=id_err)
00406 IF (id_err > 0) THEN
00407 ierrp (1) = id_err
00408 ierrp (2) = iga_comp_nb_unitsets(1)*3
00409 id_err = 13
00410
00411 call psmile_error ( id_err, 'ila_smioc_recv', &
00412 ierrp, 2, __FILE__, __LINE__ )
00413 RETURN
00414 ENDIF
00415
00416 CALL MPI_Recv (ila_smioc_recv, iga_comp_nb_unitsets(1)*3, &
00417 MPI_Integer, PRISMdrv_root, 2, comm_trans, &
00418 il_status, id_err)
00419
00420 IF (id_err .ne. 0) &
00421 WRITE(il_chanel,*) 'WARNING: Pb in get_unitsets_details'
00422
00423 il_index = 1
00424 DO ib= 1, iga_comp_nb_unitsets(1)
00425
00426 iga_smioc_unitsets(ib,1) = ila_smioc_recv(il_index)
00427 iga_smioc_unitsets(ib,2) = ila_smioc_recv(il_index+1)
00428 iga_smioc_unitsets(ib,3) = ila_smioc_recv(il_index+2)
00429
00430 il_index = il_index + 3
00431
00432 END DO
00433
00434 DEALLOCATE(ila_smioc_recv, stat=id_err)
00435 IF (id_err > 0) THEN
00436 ierrp (1) = id_err
00437 id_err = 14
00438
00439 call psmile_error ( id_err, 'ila_smioc_recv', &
00440 ierrp, 1, __FILE__, __LINE__ )
00441 RETURN
00442 ENDIF
00443 END IF
00444 END IF
00445
00446 #ifdef DEBUG
00447 WRITE(il_chanel,*) ' '
00448 WRITE(il_chanel,*) ' Got the Fortran unit sets component per component'
00449 call psmile_flushstd(il_chanel)
00450 #endif
00451
00452
00453
00454
00455
00456
00457 #ifdef DEBUG
00458 WRITE(il_chanel,*) ' '
00459 WRITE(il_chanel,*) '* Get the grids details component per component'
00460 #endif
00461
00462 IF (iga_comp_nb_grids(1) .gt. 0) THEN
00463
00464 CALL init_grids (iga_comp_nb_grids(1), sga_smioc_grids, id_err )
00465 IF (id_err .ne. 0) WRITE(il_chanel,*) 'WARNING: Pb in init_grids'
00466
00467 IF (Appl%stand_alone) THEN
00468
00469 CALL get_grids_details ( iga_comp_id_doc_XML(1), &
00470 iga_comp_nb_grids(1), &
00471 sga_smioc_grids(1:iga_comp_nb_grids(1)), &
00472 id_err )
00473 IF (id_err .ne. 0) &
00474 WRITE(il_chanel,*) 'WARNING: Pb in get_grids_details'
00475
00476 sga_smioc_grids(:)%ig_comp_id = 1
00477 DO ib = 1, iga_comp_nb_grids(1)
00478 sga_smioc_grids(ib)%ig_grid_id = ib
00479 ENDDO
00480
00481 ELSE
00482
00483 ALLOCATE(ila_smioc_recv(5*iga_comp_nb_grids(1)), stat=id_err)
00484 IF (id_err > 0) THEN
00485 ierrp (1) = id_err
00486 ierrp (2) = 3*iga_comp_nb_grids(1)
00487 id_err = 13
00488
00489 call psmile_error ( id_err, 'ila_smioc_recv', &
00490 ierrp, 2, __FILE__, __LINE__ )
00491 RETURN
00492 ENDIF
00493 ALLOCATE(cla_smioc_recv(iga_comp_nb_grids(1)), stat=id_err)
00494 IF (id_err > 0) THEN
00495 ierrp (1) = id_err
00496 ierrp (2) = iga_comp_nb_grids(1)
00497 id_err = 13
00498
00499 call psmile_error ( id_err, 'cla_smioc_recv', &
00500 ierrp, 2, __FILE__, __LINE__ )
00501 RETURN
00502 ENDIF
00503
00504 CALL MPI_Recv (ila_smioc_recv, 5*iga_comp_nb_grids(1), &
00505 MPI_Integer, PRISMdrv_root, 3, comm_trans, &
00506 il_status, id_err)
00507
00508 CALL MPI_Recv (cla_smioc_recv, max_name*iga_comp_nb_grids(1), &
00509 MPI_Character, PRISMdrv_root, 4, comm_trans, &
00510 il_status, id_err)
00511
00512 IF (id_err .ne. 0) &
00513 WRITE(il_chanel,*) 'WARNING: Pb in get_grids_details'
00514
00515 il_index = 1
00516 DO ib= 1, iga_comp_nb_grids(1)
00517
00518 sga_smioc_grids(ib)%ig_grid_id = ila_smioc_recv(1 + (ib-1)*5)
00519 sga_smioc_grids(ib)%ig_comp_id = ila_smioc_recv(2 + (ib-1)*5)
00520 DO ib_bis = 1, 3
00521 sga_smioc_grids(ib)%iga_periodic(ib_bis) = &
00522 ila_smioc_recv(2 + ib_bis + (ib-1)*5)
00523 END DO
00524
00525 sga_smioc_grids(ib)%cg_grid_name = cla_smioc_recv(ib)
00526
00527 END DO
00528
00529 DEALLOCATE(ila_smioc_recv, stat=id_err)
00530 IF (id_err > 0) THEN
00531 ierrp (1) = id_err
00532 id_err = 14
00533
00534 call psmile_error ( id_err, 'ila_smioc_recv', &
00535 ierrp, 1, __FILE__, __LINE__ )
00536 RETURN
00537 ENDIF
00538 DEALLOCATE(cla_smioc_recv, stat=id_err)
00539 IF (id_err > 0) THEN
00540 ierrp (1) = id_err
00541 id_err = 14
00542
00543 call psmile_error ( id_err, 'cla_smioc_recv', &
00544 ierrp, 1, __FILE__, __LINE__ )
00545 RETURN
00546 ENDIF
00547 END IF
00548 END IF
00549
00550 #ifdef DEBUG
00551 WRITE(il_chanel,*) ' '
00552 WRITE(il_chanel,*) ' Got the grids details component per component'
00553 call psmile_flushstd(il_chanel)
00554 #endif
00555
00556
00557
00558
00559
00560
00561
00562 #ifdef DEBUG
00563 WRITE(il_chanel,*) ' '
00564 WRITE(il_chanel,*) '* Get the transient numbers '
00565 #endif
00566
00567 IF (iga_comp_nb_transi(1) .gt. 0) THEN
00568
00569
00570
00571 ALLOCATE (ila_comp_nb_stand_name(iga_comp_nb_transi(1)), stat=id_err)
00572 IF (id_err > 0) THEN
00573 ierrp (1) = id_err
00574 ierrp (2) = iga_comp_nb_transi(1)
00575 id_err = 13
00576
00577 call psmile_error ( id_err, 'ila_comp_nb_stand_name', &
00578 ierrp, 2, __FILE__, __LINE__ )
00579 RETURN
00580 ENDIF
00581 ALLOCATE (ila_comp_nb_transi_in(iga_comp_nb_transi(1)), stat=id_err)
00582 IF (id_err > 0) THEN
00583 ierrp (1) = id_err
00584 ierrp (2) = iga_comp_nb_transi(1)
00585 id_err = 13
00586
00587 call psmile_error ( id_err, 'ila_comp_nb_transi_in', &
00588 ierrp, 2, __FILE__, __LINE__ )
00589 RETURN
00590 ENDIF
00591 ALLOCATE (ila_comp_nb_transi_out(iga_comp_nb_transi(1)), stat=id_err)
00592 IF (id_err > 0) THEN
00593 ierrp (1) = id_err
00594 ierrp (2) = iga_comp_nb_transi(1)
00595 id_err = 13
00596
00597 call psmile_error ( id_err, 'ila_comp_nb_transi_out', &
00598 ierrp, 2, __FILE__, __LINE__ )
00599 RETURN
00600 ENDIF
00601
00602
00603
00604 IF (Appl%stand_alone) THEN
00605 il_compid = 1
00606 ll_first_details = .true.
00607 CALL get_transi_io_numbers ( iga_comp_id_doc_XML(1), &
00608 iga_comp_nb_transi(1), &
00609 ila_comp_nb_stand_name(:), &
00610 ila_comp_nb_transi_in(:), &
00611 ila_comp_nb_transi_out(:), &
00612 il_compid, &
00613 ll_first_details, &
00614 id_err )
00615 IF (id_err .ne. 0) &
00616 WRITE(il_chanel,*) 'WARNING: Pb in get_transi_io_numbers'
00617
00618 ELSE
00619
00620 ALLOCATE(ila_smioc_recv(3*iga_comp_nb_transi(1)), stat=id_err)
00621 IF (id_err > 0) THEN
00622 ierrp (1) = id_err
00623 ierrp (2) = 3*iga_comp_nb_transi(1)
00624 id_err = 13
00625
00626 call psmile_error ( id_err, 'ila_smioc_recv', &
00627 ierrp, 2, __FILE__, __LINE__ )
00628 RETURN
00629 ENDIF
00630
00631 CALL MPI_Recv (ila_smioc_recv, 3*iga_comp_nb_transi(1), &
00632 MPI_Integer, PRISMdrv_root, 6, comm_trans, &
00633 il_status, id_err)
00634
00635 DO ib = 1, iga_comp_nb_transi(1)
00636
00637 ila_comp_nb_stand_name(ib) = ila_smioc_recv(1 + (ib-1)*3)
00638 ila_comp_nb_transi_in(ib) = ila_smioc_recv(2 + (ib-1)*3)
00639 ila_comp_nb_transi_out(ib) = ila_smioc_recv(3 + (ib-1)*3)
00640
00641 END DO
00642
00643 DEALLOCATE(ila_smioc_recv, stat=id_err)
00644 IF (id_err > 0) THEN
00645 ierrp (1) = id_err
00646 id_err = 14
00647
00648 call psmile_error ( id_err, 'ila_smioc_recv', &
00649 ierrp, 1, __FILE__, __LINE__ )
00650 RETURN
00651 ENDIF
00652 END IF
00653
00654
00655
00656 DO ib_ntt = 1, iga_comp_nb_transi(1)
00657 IF (ila_comp_nb_transi_in(ib_ntt) .GT. 0) THEN
00658 ALLOCATE (sga_smioc_transi(ib_ntt)%sg_transi_in%sga_in_orig &
00659 (ila_comp_nb_transi_in(ib_ntt)), stat=id_err)
00660 IF (id_err > 0) THEN
00661 ierrp (1) = id_err
00662 ierrp (2) = ila_comp_nb_transi_in(ib_ntt)
00663 id_err = 13
00664
00665 call psmile_error ( id_err, 'sga_in_orig', &
00666 ierrp, 2, __FILE__, __LINE__ )
00667 RETURN
00668 ENDIF
00669 ELSE
00670 NULLIFY(sga_smioc_transi(ib_ntt)%sg_transi_in%sga_in_orig)
00671 ENDIF
00672 IF (ila_comp_nb_transi_out(ib_ntt) .GT. 0) THEN
00673 ALLOCATE (sga_smioc_transi(ib_ntt)%sga_transi_out &
00674 (ila_comp_nb_transi_out(ib_ntt)), stat=id_err)
00675 IF (id_err > 0) THEN
00676 ierrp (1) = id_err
00677 ierrp (2) = ila_comp_nb_transi_out(ib_ntt)
00678 id_err = 13
00679
00680 call psmile_error ( id_err, 'sga_transi_out', &
00681 ierrp, 2, __FILE__, __LINE__ )
00682 RETURN
00683 ENDIF
00684 ELSE
00685 NULLIFY(sga_smioc_transi(ib_ntt)%sga_transi_out)
00686 ENDIF
00687 IF (ila_comp_nb_stand_name(ib_ntt) .GT. 0) THEN
00688 ALLOCATE (sga_smioc_transi(ib_ntt)%cga_stand_name &
00689 (ila_comp_nb_stand_name(ib_ntt)), stat=id_err)
00690 IF (id_err > 0) THEN
00691 ierrp (1) = id_err
00692 ierrp (2) = ila_comp_nb_stand_name(ib_ntt)
00693 id_err = 13
00694
00695 call psmile_error ( id_err, 'cga_stand_name', &
00696 ierrp, 2, __FILE__, __LINE__ )
00697 RETURN
00698 ENDIF
00699 ELSE
00700 NULLIFY(sga_smioc_transi(ib_ntt)%cga_stand_name)
00701 ENDIF
00702 ENDDO
00703
00704
00705 CALL init_transi (iga_comp_nb_transi(1), &
00706 ila_comp_nb_stand_name, &
00707 ila_comp_nb_transi_in, &
00708 ila_comp_nb_transi_out, &
00709 sga_smioc_transi, &
00710 id_err )
00711 IF (id_err .ne. 0) WRITE(il_chanel,*) 'WARNING: Pb in init_transi'
00712
00713
00714 il_npartinid = 0
00715 il_npartoutid = 0
00716
00717
00718 #ifdef DEBUG
00719 WRITE(il_chanel,*) ' Get the transient for ', trim(cda_comp_name)
00720 call psmile_flushstd(il_chanel)
00721 #endif
00722
00723
00724
00725
00726 IF (Appl%stand_alone) THEN
00727 il_compid = 1
00728 ll_userdef_details = .false.
00729 CALL get_transi_details (iga_comp_id_doc_XML(1), &
00730 iga_comp_nb_transi(1), &
00731 sga_smioc_transi(:), &
00732 il_compid, &
00733 ll_userdef_details, &
00734 id_err )
00735 IF (id_err .ne. 0) &
00736 WRITE(il_chanel,*) 'WARNING: Pb in get_transi_details'
00737
00738
00739 DO ib_ntt = 1, iga_comp_nb_transi(1)
00740 DO ib_ntt2 = 1, iga_comp_nb_transi(1)
00741 DO ib_nin = 1, sga_smioc_transi(ib_ntt)%sg_transi_in%ig_nb_in_orig
00742 IF (sga_smioc_transi(ib_ntt)%sg_transi_in%sga_in_orig(ib_nin)% &
00743 cg_orig_comp_name .EQ. &
00744 sga_smioc_transi(ib_ntt2)%cg_comp_name) THEN
00745 sga_smioc_transi(ib_ntt)%sg_transi_in%sga_in_orig(ib_nin)%&
00746 ig_orig_comp_id = sga_smioc_transi(ib_ntt2)%ig_comp_id
00747 ENDIF
00748 ENDDO
00749 DO ib_nout = 1, sga_smioc_transi(ib_ntt)%ig_nb_transi_out
00750 IF (sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00751 cg_dest_comp_name .EQ. &
00752 sga_smioc_transi(ib_ntt2)%cg_comp_name) THEN
00753 sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00754 ig_dest_comp_id = sga_smioc_transi(ib_ntt2)%ig_comp_id
00755 ENDIF
00756 ENDDO
00757 ENDDO
00758 ENDDO
00759
00760
00761 DO ib_ntt2 = 1, iga_comp_nb_transi(1)
00762 il_combi = 1
00763 il_source = 1
00764 ll_combi = .false.
00765 ll_source = .false.
00766 DO ib_nin = 2, sga_smioc_transi(ib_ntt2)%sg_transi_in%ig_nb_in_orig
00767
00768 IF (sga_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00769 sg_combi%cg_combi_name .NE. ' ' .AND. &
00770 sga_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00771 sg_combi%cg_combi_name .EQ. sga_smioc_transi(ib_ntt2)% &
00772 sg_transi_in%sga_in_orig(ib_nin-1)%sg_combi%cg_combi_name) &
00773 il_combi = il_combi + 1
00774
00775
00776 IF (sga_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00777 cg_orig_comp_name .EQ. sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00778 sga_in_orig(ib_nin-1)%cg_orig_comp_name) &
00779 il_source = il_source + 1
00780 ENDDO
00781
00782 IF (sga_smioc_transi(ib_ntt2)%sg_transi_in%ig_nb_in_orig .GT. 1 .AND. &
00783 il_combi .EQ. sga_smioc_transi(ib_ntt2)%sg_transi_in%ig_nb_in_orig)&
00784 ll_combi = .TRUE.
00785
00786
00787 IF (sga_smioc_transi(ib_ntt2)%sg_transi_in%ig_nb_in_orig .GT. 1 .AND. &
00788 il_source .EQ. sga_smioc_transi(ib_ntt2)%sg_transi_in%ig_nb_in_orig) &
00789 ll_source = .TRUE.
00790 IF (ll_combi) THEN
00791 IF (ll_source) THEN
00792 sga_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(:)% &
00793 sg_combi%ig_location = PSMILe_source
00794 ELSE
00795 sga_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(:)% &
00796 sg_combi%ig_location = PSMILe_target
00797 ENDIF
00798 ENDIF
00799 ENDDO
00800
00801
00802
00803 DO ib_ntt = 1, iga_comp_nb_transi(1)
00804 DO ib_nout = 1, sga_smioc_transi(ib_ntt)%ig_nb_transi_out
00805 DO ib_ntt2 = 1, iga_comp_nb_transi(1)
00806 DO ib_nin = 1, sga_smioc_transi(ib_ntt2)%sg_transi_in%ig_nb_in_orig
00807 IF (sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00808 cg_transi_out_name &
00809 .EQ. sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00810 sga_in_orig(ib_nin)%cg_orig_transi .AND. &
00811 sga_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00812 cg_transi_in_name &
00813 .EQ. sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00814 cg_dest_transi) THEN
00815
00816 sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00817 ig_dest_transi_id = &
00818 sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00819 sga_in_orig(ib_nin)%ig_transi_in_id
00820 sga_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00821 ig_orig_transi_id = &
00822 sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00823 ig_transi_out_id
00824
00825 sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00826 sg_cpl_rst_file = &
00827 sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00828 sga_in_orig(ib_nin)%sg_cpl_rst_file
00829
00830 IF (sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00831 ig_dest_type .EQ. PSMILe_comp) &
00832 sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00833 sg_interp = &
00834 sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00835 sga_in_orig(ib_nin)%sg_interp
00836
00837 sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00838 ig_conserv = &
00839 sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00840 sga_in_orig(ib_nin)%ig_conserv
00841
00842 IF (sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00843 sga_in_orig(ib_nin)%sg_combi%ig_location &
00844 == PSMILe_source) &
00845 sga_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00846 sg_combi = &
00847 sga_smioc_transi(ib_ntt2)%sg_transi_in% &
00848 sga_in_orig(ib_nin)%sg_combi
00849 ENDIF
00850 ENDDO
00851 ENDDO
00852 ENDDO
00853 ENDDO
00854
00855 ELSE
00856
00857 il_nb_int_i_fix = 27
00858 il_nb_int_i_in = 54
00859 il_nb_int_i_out = 82
00860
00861 il_smioc_recv_size_i = 0
00862 DO ib = 1, iga_comp_nb_transi(1)
00863 il_smioc_recv_size_i = il_smioc_recv_size_i &
00864 + il_nb_int_i_fix &
00865 + il_nb_int_i_in * ila_comp_nb_transi_in(ib) &
00866 + il_nb_int_i_out * ila_comp_nb_transi_out(ib)
00867 END DO
00868
00869 il_nb_int_d_fix = 6
00870 il_nb_int_d_in = 15
00871 il_nb_int_d_out = 19
00872
00873 il_smioc_recv_size_d = 0
00874 DO ib = 1, iga_comp_nb_transi(1)
00875 il_smioc_recv_size_d = il_smioc_recv_size_d &
00876 + il_nb_int_d_fix &
00877 + il_nb_int_d_in * ila_comp_nb_transi_in(ib) &
00878 + il_nb_int_d_out * ila_comp_nb_transi_out(ib)
00879 END DO
00880
00881 il_nb_int_c_fix = 4
00882 il_nb_int_c_in = 10
00883 il_nb_int_c_out = 9
00884
00885 il_smioc_recv_size_c = 0
00886 DO ib = 1, iga_comp_nb_transi(1)
00887 il_smioc_recv_size_c = il_smioc_recv_size_c &
00888 + il_nb_int_c_fix &
00889 + ila_comp_nb_stand_name(ib) &
00890 + il_nb_int_c_in * ila_comp_nb_transi_in(ib) &
00891 + il_nb_int_c_out * ila_comp_nb_transi_out(ib)
00892 END DO
00893
00894 ALLOCATE(ila_smioc_recv(il_smioc_recv_size_i), stat=id_err)
00895 IF (id_err > 0) THEN
00896 ierrp (1) = id_err
00897 ierrp (2) = il_smioc_recv_size_i
00898 id_err = 13
00899
00900 call psmile_error ( id_err, 'ila_smioc_recv', &
00901 ierrp, 2, __FILE__, __LINE__ )
00902 RETURN
00903 ENDIF
00904 ALLOCATE(cla_smioc_recv(il_smioc_recv_size_c), stat=id_err)
00905 IF (id_err > 0) THEN
00906 ierrp (1) = id_err
00907 ierrp (2) = il_smioc_recv_size_c
00908 id_err = 13
00909
00910 call psmile_error ( id_err, 'cla_smioc_recv', &
00911 ierrp, 2, __FILE__, __LINE__ )
00912 RETURN
00913 ENDIF
00914 ALLOCATE(dla_smioc_recv(il_smioc_recv_size_d), stat=id_err)
00915 IF (id_err > 0) THEN
00916 ierrp (1) = id_err
00917 ierrp (2) = il_smioc_recv_size_d
00918 id_err = 13
00919
00920 call psmile_error ( id_err, 'dla_smioc_recv', &
00921 ierrp, 2, __FILE__, __LINE__ )
00922 RETURN
00923 ENDIF
00924
00925 CALL MPI_Recv (ila_smioc_recv, il_smioc_recv_size_i, &
00926 MPI_Integer, PRISMdrv_root, 7, comm_trans, il_status, id_err )
00927
00928 CALL MPI_Recv (cla_smioc_recv, il_smioc_recv_size_c*max_name, &
00929 MPI_Character, PRISMdrv_root, 8, comm_trans, il_status, id_err )
00930
00931 CALL MPI_Recv (dla_smioc_recv, il_smioc_recv_size_d, &
00932 MPI_Double_Precision, PRISMdrv_root, 9, comm_trans, il_status, id_err )
00933
00934
00935 il_index_i = 0
00936 il_index_c = 0
00937 il_index_d = 0
00938
00939 DO ib = 1, iga_comp_nb_transi(1)
00940
00941
00942 sga_smioc_transi(ib)%ig_nb_stand_name = ila_smioc_recv(1 + il_index_i)
00943 sga_smioc_transi(ib)%ig_comp_id = ila_smioc_recv(2 + il_index_i)
00944 sga_smioc_transi(ib)%ig_transi_id = ila_smioc_recv(3 + il_index_i)
00945 sga_smioc_transi(ib)%ig_transi_type = ila_smioc_recv(4 + il_index_i)
00946 sga_smioc_transi(ib)%ig_nb_bndl = ila_smioc_recv(5 + il_index_i)
00947 sga_smioc_transi(ib)%ig_datatype = ila_smioc_recv(6 + il_index_i)
00948 sga_smioc_transi(ib)%ig_nb_transi_out = ila_smioc_recv(7 + il_index_i)
00949
00950
00951 sga_smioc_transi(ib)%sg_transi_in%ig_nb_in_orig = &
00952 ila_smioc_recv(8 + il_index_i)
00953 sga_smioc_transi(ib)%sg_transi_in%ig_exch_date_type = &
00954 ila_smioc_recv(9 + il_index_i)
00955 sga_smioc_transi(ib)%sg_transi_in%ig_debugmode = &
00956 ila_smioc_recv(10 + il_index_i)
00957 sga_smioc_transi(ib)%sg_transi_in%ig_tgt_timeop = &
00958 ila_smioc_recv(11 + il_index_i)
00959
00960 DO ib_ter = 1, 3
00961 sga_smioc_transi(ib)%sg_transi_in%iga_stats(ib_ter) = &
00962 ila_smioc_recv(11 + ib_ter + il_index_i)
00963 END DO
00964
00965
00966 sga_smioc_transi(ib)%sg_transi_in%sg_min_period%minute = &
00967 ila_smioc_recv(17 + il_index_i)
00968 sga_smioc_transi(ib)%sg_transi_in%sg_min_period%hour = &
00969 ila_smioc_recv(18 + il_index_i)
00970 sga_smioc_transi(ib)%sg_transi_in%sg_min_period%day = &
00971 ila_smioc_recv(19 + il_index_i)
00972 sga_smioc_transi(ib)%sg_transi_in%sg_min_period%month = &
00973 ila_smioc_recv(20 + il_index_i)
00974 sga_smioc_transi(ib)%sg_transi_in%sg_min_period%year = &
00975 ila_smioc_recv(21 + il_index_i)
00976
00977
00978 sga_smioc_transi(ib)%sg_transi_in%sg_tgt_local_trans%ig_gather = &
00979 ila_smioc_recv(22 + il_index_i)
00980
00981
00982 sga_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%minute = &
00983 ila_smioc_recv(23 + il_index_i)
00984 sga_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%hour = &
00985 ila_smioc_recv(24 + il_index_i)
00986 sga_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%day = &
00987 ila_smioc_recv(25 + il_index_i)
00988 sga_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%month = &
00989 ila_smioc_recv(26 + il_index_i)
00990 sga_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%year = &
00991 ila_smioc_recv(27 + il_index_i)
00992
00993 il_index_i = il_index_i + 27
00994
00995 DO ib_bis = 1, ila_comp_nb_transi_in(ib)
00996
00997
00998 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00999 ig_transi_in_id = ila_smioc_recv(1 + il_index_i)
01000 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01001 ig_orig_type = ila_smioc_recv(2 + il_index_i)
01002 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01003 ig_orig_transi_id = ila_smioc_recv(3 + il_index_i)
01004 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01005 ig_orig_comp_id = ila_smioc_recv(4 + il_index_i)
01006 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01007 ig_conserv = ila_smioc_recv(5 + il_index_i)
01008
01009
01010 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01011 sg_orig_file%ig_suffix = ila_smioc_recv(6 + il_index_i)
01012 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01013 sg_orig_file%ig_file_format = ila_smioc_recv(7 + il_index_i)
01014 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01015 sg_orig_file%ig_file_set = ila_smioc_recv(8 + il_index_i)
01016 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01017 sg_orig_file%ig_file_iomode = ila_smioc_recv(9 + il_index_i)
01018 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01019 sg_orig_file%ig_file_pack = ila_smioc_recv(10 + il_index_i)
01020
01021
01022 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01023 sg_cpl_rst_file%ig_suffix = ila_smioc_recv(11 + il_index_i)
01024 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01025 sg_cpl_rst_file%ig_file_format = ila_smioc_recv(12 + il_index_i)
01026 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01027 sg_cpl_rst_file%ig_file_set = ila_smioc_recv(13 + il_index_i)
01028 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01029 sg_cpl_rst_file%ig_file_iomode = ila_smioc_recv(14 + il_index_i)
01030 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01031 sg_cpl_rst_file%ig_file_pack = ila_smioc_recv(15 + il_index_i)
01032
01033
01034 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01035 sg_interp%ig_interp_type = ila_smioc_recv(16 + il_index_i)
01036 DO ib_ter = 1, 3
01037 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01038 sg_interp%iga_interp_meth(ib_ter) = &
01039 ila_smioc_recv(16 + ib_ter + il_index_i)
01040 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01041 sg_interp%iga_arg1(ib_ter) = &
01042 ila_smioc_recv(19 + ib_ter + il_index_i)
01043 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01044 sg_interp%iga_arg2(ib_ter) = &
01045 ila_smioc_recv(22 + ib_ter + il_index_i)
01046 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01047 sg_interp%iga_arg3(ib_ter) = &
01048 ila_smioc_recv(25 + ib_ter + il_index_i)
01049 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01050 sg_interp%iga_arg4(ib_ter) = &
01051 ila_smioc_recv(28 + ib_ter + il_index_i)
01052 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01053 sg_interp%iga_arg5(ib_ter) = &
01054 ila_smioc_recv(31 + ib_ter + il_index_i)
01055 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01056 sg_interp%iga_arg6(ib_ter) = &
01057 ila_smioc_recv(34 + ib_ter + il_index_i)
01058 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01059 sg_interp%iga_arg7(ib_ter) = &
01060 ila_smioc_recv(37 + ib_ter + il_index_i)
01061 END DO
01062
01063
01064 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01065 sg_interp%sg_arg10%ig_suffix = ila_smioc_recv(41 + il_index_i)
01066 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01067 sg_interp%sg_arg10%ig_file_format = ila_smioc_recv(42 + il_index_i)
01068 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01069 sg_interp%sg_arg10%ig_file_set = ila_smioc_recv(43 + il_index_i)
01070 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01071 sg_interp%sg_arg10%ig_file_iomode = &
01072 ila_smioc_recv(44 + il_index_i)
01073 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01074 sg_interp%sg_arg10%ig_file_pack = ila_smioc_recv(45 + il_index_i)
01075
01076
01077 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01078 sg_combi%sg_ext_mask_file%ig_suffix = &
01079 ila_smioc_recv(46 + il_index_i)
01080 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01081 sg_combi%sg_ext_mask_file%ig_file_format = &
01082 ila_smioc_recv(47 + il_index_i)
01083 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01084 sg_combi%sg_ext_mask_file%ig_file_set = &
01085 ila_smioc_recv(48 + il_index_i)
01086 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01087 sg_combi%sg_ext_mask_file%ig_file_iomode = &
01088 ila_smioc_recv(49 + il_index_i)
01089 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01090 sg_combi%sg_ext_mask_file%ig_file_pack = &
01091 ila_smioc_recv(50 + il_index_i)
01092 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01093 sg_combi%ig_location = ila_smioc_recv(51 + il_index_i)
01094 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01095 sg_combi%ig_operand = ila_smioc_recv(52 + il_index_i)
01096 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01097 sg_combi%ig_mask_type = ila_smioc_recv(53 + il_index_i)
01098 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01099 sg_combi%ig_combi_meth = ila_smioc_recv(54 + il_index_i)
01100
01101 il_index_i = il_index_i + 54
01102
01103 END DO
01104
01105 DO ib_bis = 1, ila_comp_nb_transi_out(ib)
01106
01107
01108 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01109 ig_transi_out_id = ila_smioc_recv(1 + il_index_i)
01110 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01111 ig_dest_type = ila_smioc_recv(2 + il_index_i)
01112 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01113 ig_dest_transi_id = ila_smioc_recv(3 + il_index_i)
01114 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01115 ig_dest_comp_id = ila_smioc_recv(4 + il_index_i)
01116 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01117 ig_exch_date_type = ila_smioc_recv(5 + il_index_i)
01118 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01119 ig_debugmode = ila_smioc_recv(6 + il_index_i)
01120 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01121 ig_lag = ila_smioc_recv(7 + il_index_i)
01122 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01123 ig_src_timeop = ila_smioc_recv(8 + il_index_i)
01124 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01125 ig_conserv = ila_smioc_recv(9 + il_index_i)
01126 DO ib_ter = 1, 3
01127 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01128 iga_stats(ib_ter) = ila_smioc_recv(9 + ib_ter + il_index_i)
01129 END DO
01130
01131
01132 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01133 sg_dest_file%ig_suffix = ila_smioc_recv(15 + il_index_i)
01134 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01135 sg_dest_file%ig_file_format = ila_smioc_recv(16 + il_index_i)
01136 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01137 sg_dest_file%ig_file_set = ila_smioc_recv(17 + il_index_i)
01138 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01139 sg_dest_file%ig_file_iomode = ila_smioc_recv(18 + il_index_i)
01140 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01141 sg_dest_file%ig_file_pack = ila_smioc_recv(19 + il_index_i)
01142
01143
01144 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01145 sg_cpl_rst_file%ig_suffix = ila_smioc_recv(20 + il_index_i)
01146 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01147 sg_cpl_rst_file%ig_file_format = ila_smioc_recv(21 + il_index_i)
01148 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01149 sg_cpl_rst_file%ig_file_set = ila_smioc_recv(22 + il_index_i)
01150 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01151 sg_cpl_rst_file%ig_file_iomode = ila_smioc_recv(23 + il_index_i)
01152 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01153 sg_cpl_rst_file%ig_file_pack = ila_smioc_recv(24 + il_index_i)
01154
01155
01156 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01157 sg_min_period%minute = ila_smioc_recv(25 + il_index_i)
01158 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01159 sg_min_period%hour = ila_smioc_recv(26 + il_index_i)
01160 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01161 sg_min_period%day = ila_smioc_recv(27 + il_index_i)
01162 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01163 sg_min_period%month = ila_smioc_recv(28 + il_index_i)
01164 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01165 sg_min_period%year = ila_smioc_recv(29 + il_index_i)
01166
01167
01168 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01169 sg_exch_date%sg_period%minute = ila_smioc_recv(30 + il_index_i)
01170 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01171 sg_exch_date%sg_period%hour = ila_smioc_recv(31 + il_index_i)
01172 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01173 sg_exch_date%sg_period%day = ila_smioc_recv(32 + il_index_i)
01174 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01175 sg_exch_date%sg_period%month = ila_smioc_recv(33 + il_index_i)
01176 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01177 sg_exch_date%sg_period%year = ila_smioc_recv(34 + il_index_i)
01178
01179
01180 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01181 sg_src_local_trans%ig_scatter = ila_smioc_recv(35 + il_index_i)
01182 DO ib_ter = 1, 4
01183 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01184 sg_src_local_trans%ig_reduc_type(ib_ter) = &
01185 ila_smioc_recv(35 + ib_ter + il_index_i)
01186 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01187 sg_src_local_trans%ig_reduc_order(ib_ter) = &
01188 ila_smioc_recv(39 + ib_ter + il_index_i)
01189 END DO
01190
01191
01192 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01193 sg_interp%ig_interp_type = ila_smioc_recv(44 + il_index_i)
01194 DO ib_ter = 1, 3
01195 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01196 sg_interp%iga_interp_meth(ib_ter) = &
01197 ila_smioc_recv(44 + ib_ter + il_index_i)
01198 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01199 sg_interp%iga_arg1(ib_ter) = &
01200 ila_smioc_recv(47 + ib_ter + il_index_i)
01201 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01202 sg_interp%iga_arg2(ib_ter) = &
01203 ila_smioc_recv(50 + ib_ter + il_index_i)
01204 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01205 sg_interp%iga_arg3(ib_ter) = &
01206 ila_smioc_recv(53 + ib_ter + il_index_i)
01207 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01208 sg_interp%iga_arg4(ib_ter) = &
01209 ila_smioc_recv(56 + ib_ter + il_index_i)
01210 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01211 sg_interp%iga_arg5(ib_ter) = &
01212 ila_smioc_recv(59 + ib_ter + il_index_i)
01213 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01214 sg_interp%iga_arg6(ib_ter) = &
01215 ila_smioc_recv(62 + ib_ter + il_index_i)
01216 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01217 sg_interp%iga_arg7(ib_ter) = &
01218 ila_smioc_recv(65 + ib_ter + il_index_i)
01219 END DO
01220
01221
01222 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01223 sg_interp%sg_arg10%ig_suffix = ila_smioc_recv(69 + il_index_i)
01224 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01225 sg_interp%sg_arg10%ig_file_format = ila_smioc_recv(70 + il_index_i)
01226 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01227 sg_interp%sg_arg10%ig_file_set = ila_smioc_recv(71 + il_index_i)
01228 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01229 sg_interp%sg_arg10%ig_file_iomode = &
01230 ila_smioc_recv(72 + il_index_i)
01231 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01232 sg_interp%sg_arg10%ig_file_pack = ila_smioc_recv(73 + il_index_i)
01233
01234
01235 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01236 sg_combi%sg_ext_mask_file%ig_suffix = &
01237 ila_smioc_recv(74 + il_index_i)
01238 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01239 sg_combi%sg_ext_mask_file%ig_file_format = &
01240 ila_smioc_recv(75 + il_index_i)
01241 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01242 sg_combi%sg_ext_mask_file%ig_file_set = &
01243 ila_smioc_recv(76 + il_index_i)
01244 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01245 sg_combi%sg_ext_mask_file%ig_file_iomode = &
01246 ila_smioc_recv(77 + il_index_i)
01247 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01248 sg_combi%sg_ext_mask_file%ig_file_pack = &
01249 ila_smioc_recv(78 + il_index_i)
01250 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01251 sg_combi%ig_location = ila_smioc_recv(79 + il_index_i)
01252 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01253 sg_combi%ig_operand = ila_smioc_recv(80 + il_index_i)
01254 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01255 sg_combi%ig_mask_type = ila_smioc_recv(81 + il_index_i)
01256 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01257 sg_combi%ig_combi_meth = ila_smioc_recv(82 + il_index_i)
01258
01259 il_index_i = il_index_i + 82
01260
01261 END DO
01262
01263 sga_smioc_transi(ib)%cg_local_name = cla_smioc_recv(1 + il_index_c)
01264 sga_smioc_transi(ib)%cg_long_name = cla_smioc_recv(2 + il_index_c)
01265 sga_smioc_transi(ib)%cg_comp_name = cla_smioc_recv(3 + il_index_c)
01266 sga_smioc_transi(ib)%cg_units = cla_smioc_recv(4 + il_index_c)
01267 il_index_c = il_index_c + 4
01268
01269 DO ib_bis = 1, ila_comp_nb_stand_name(ib)
01270
01271 sga_smioc_transi(ib)%cga_stand_name(ib_bis) = &
01272 cla_smioc_recv(1 + il_index_c)
01273
01274 il_index_c = il_index_c + 1
01275
01276 END DO
01277
01278 DO ib_bis = 1, ila_comp_nb_transi_in(ib)
01279
01280 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01281 cg_transi_in_name = cla_smioc_recv(1 + il_index_c)
01282 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01283 cg_orig_transi = cla_smioc_recv(2 + il_index_c)
01284 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01285 cg_orig_comp_name = cla_smioc_recv(3 + il_index_c)
01286 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01287 sg_orig_file%cg_file_name = cla_smioc_recv(4 + il_index_c)
01288 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01289 sg_cpl_rst_file%cg_file_name = cla_smioc_recv(5 + il_index_c)
01290 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01291 sg_interp%cg_arg9 = cla_smioc_recv(6 + il_index_c)
01292 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01293 sg_interp%sg_arg10%cg_file_name = cla_smioc_recv(7 + il_index_c)
01294 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01295 sg_combi%cg_combi_name = cla_smioc_recv(8 + il_index_c)
01296 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01297 sg_combi%cg_ext_mask_name = cla_smioc_recv(9 + il_index_c)
01298 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01299 sg_combi%sg_ext_mask_file%cg_file_name = &
01300 cla_smioc_recv(10 + il_index_c)
01301
01302 il_index_c = il_index_c + 10
01303
01304 END DO
01305
01306 DO ib_bis = 1, ila_comp_nb_transi_out(ib)
01307
01308 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01309 cg_transi_out_name = cla_smioc_recv(1 + il_index_c)
01310 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01311 cg_dest_transi = cla_smioc_recv(2 + il_index_c)
01312 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01313 cg_dest_comp_name = cla_smioc_recv(3 + il_index_c)
01314 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01315 sg_dest_file%cg_file_name = cla_smioc_recv(4 + il_index_c)
01316 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01317 sg_cpl_rst_file%cg_file_name = cla_smioc_recv(5 + il_index_c)
01318 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01319 sg_interp%cg_arg9 = cla_smioc_recv(6 + il_index_c)
01320 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01321 sg_interp%sg_arg10%cg_file_name = cla_smioc_recv(7 + il_index_c)
01322 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01323 sg_combi%cg_ext_mask_name = cla_smioc_recv(8 + il_index_c)
01324 sga_smioc_transi(ib)%sga_transi_out(ib_bis)% &
01325 sg_combi%sg_ext_mask_file%cg_file_name = &
01326 cla_smioc_recv(9 + il_index_c)
01327
01328 il_index_c = il_index_c + 9
01329
01330 END DO
01331
01332 sga_smioc_transi(ib)%dg_transi_min = dla_smioc_recv(1 + il_index_d)
01333 sga_smioc_transi(ib)%dg_transi_max = dla_smioc_recv(2 + il_index_d)
01334 sga_smioc_transi(ib)%sg_transi_in%sg_min_period%second = &
01335 dla_smioc_recv(3 + il_index_d)
01336 sga_smioc_transi(ib)%sg_transi_in%sg_tgt_local_trans%dg_add_scalar = &
01337 dla_smioc_recv(4 + il_index_d)
01338 sga_smioc_transi(ib)%sg_transi_in%sg_tgt_local_trans%dg_mult_scalar = &
01339 dla_smioc_recv(5 + il_index_d)
01340 sga_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%second = &
01341 dla_smioc_recv(6 + il_index_d)
01342
01343 il_index_d = il_index_d + 6
01344
01345 DO ib_bis = 1, ila_comp_nb_transi_in(ib)
01346
01347 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01348 sg_orig_file%dg_file_scal = dla_smioc_recv(1 + il_index_d)
01349 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01350 sg_orig_file%dg_file_add = dla_smioc_recv(2 + il_index_d)
01351 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01352 sg_orig_file%dg_fill_val = dla_smioc_recv(3 + il_index_d)
01353 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01354 sg_cpl_rst_file%dg_file_scal = dla_smioc_recv(4 + il_index_d)
01355 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01356 sg_cpl_rst_file%dg_file_add = dla_smioc_recv(5 + il_index_d)
01357 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01358 sg_cpl_rst_file%dg_file_scal = dla_smioc_recv(6 + il_index_d)
01359 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01360 sg_interp%dg_arg8 = dla_smioc_recv(7 + il_index_d)
01361 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01362 sg_interp%sg_arg10%dg_file_scal = dla_smioc_recv(8 + il_index_d)
01363 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01364 sg_interp%sg_arg10%dg_file_add = dla_smioc_recv(9 + il_index_d)
01365 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01366 sg_interp%sg_arg10%dg_fill_val = dla_smioc_recv(10 + il_index_d)
01367 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01368 sg_combi%sg_ext_mask_file%dg_file_scal = &
01369 dla_smioc_recv(11 + il_index_d)
01370 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01371 sg_combi%sg_ext_mask_file%dg_file_add = &
01372 dla_smioc_recv(12 + il_index_d)
01373 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01374 sg_combi%sg_ext_mask_file%dg_fill_val = &
01375 dla_smioc_recv(13 + il_index_d)
01376 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01377 sg_combi%dg_combi_param = dla_smioc_recv(14 + il_index_d)
01378 sga_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01379 sg_combi%dg_scalar = dla_smioc_recv(15 + il_index_d)
01380
01381 il_index_d = il_index_d + 15
01382
01383 END DO
01384
01385 DO ib_bis = 1, ila_comp_nb_transi_out(ib)
01386
01387 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
01388 dg_file_scal = dla_smioc_recv(1 + il_index_d)
01389 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
01390 dg_file_add = dla_smioc_recv(2 + il_index_d)
01391 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
01392 dg_fill_val = dla_smioc_recv(3 + il_index_d)
01393 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_cpl_rst_file% &
01394 dg_file_scal = dla_smioc_recv(4 + il_index_d)
01395 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_cpl_rst_file% &
01396 dg_file_add = dla_smioc_recv(5 + il_index_d)
01397 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_cpl_rst_file% &
01398 dg_fill_val = dla_smioc_recv(6 + il_index_d)
01399 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_min_period%second = &
01400 dla_smioc_recv(7 + il_index_d)
01401 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_exch_date% &
01402 sg_period%second = dla_smioc_recv(8 + il_index_d)
01403 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_src_local_trans% &
01404 dg_add_scalar = dla_smioc_recv(9 + il_index_d)
01405 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_src_local_trans% &
01406 dg_mult_scalar = dla_smioc_recv(10 + il_index_d)
01407 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_interp%dg_arg8 = &
01408 dla_smioc_recv(11 + il_index_d)
01409 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_interp% &
01410 sg_arg10%dg_file_scal = dla_smioc_recv(12 + il_index_d)
01411 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_interp% &
01412 sg_arg10%dg_file_add = dla_smioc_recv(13 + il_index_d)
01413 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_interp% &
01414 sg_arg10%dg_fill_val = dla_smioc_recv(14 + il_index_d)
01415 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_combi% &
01416 sg_ext_mask_file%dg_file_scal = dla_smioc_recv(15 + il_index_d)
01417 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_combi% &
01418 sg_ext_mask_file%dg_file_add = dla_smioc_recv(16 + il_index_d)
01419 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_combi% &
01420 sg_ext_mask_file%dg_fill_val = dla_smioc_recv(17 + il_index_d)
01421 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_combi% &
01422 dg_combi_param = dla_smioc_recv(17 + il_index_d)
01423 sga_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_combi% &
01424 dg_scalar = dla_smioc_recv(17 + il_index_d)
01425
01426 il_index_d = il_index_d + 19
01427 END DO
01428 END DO
01429
01430 DEALLOCATE(ila_smioc_recv, stat=id_err)
01431 IF (id_err > 0) THEN
01432 ierrp (1) = id_err
01433 id_err = 14
01434
01435 call psmile_error ( id_err, 'ila_smioc_recv', &
01436 ierrp, 1, __FILE__, __LINE__ )
01437 RETURN
01438 ENDIF
01439 DEALLOCATE(cla_smioc_recv, stat=id_err)
01440 IF (id_err > 0) THEN
01441 ierrp (1) = id_err
01442 id_err = 14
01443
01444 call psmile_error ( id_err, 'cla_smioc_recv', &
01445 ierrp, 1, __FILE__, __LINE__ )
01446 RETURN
01447 ENDIF
01448 DEALLOCATE(dla_smioc_recv, stat=id_err)
01449 IF (id_err > 0) THEN
01450 ierrp (1) = id_err
01451 id_err = 14
01452
01453 call psmile_error ( id_err, 'dla_smioc_recv', &
01454 ierrp, 1, __FILE__, __LINE__ )
01455 RETURN
01456 ENDIF
01457
01458
01459
01460 CALL MPI_Recv (ila_dim_size, 7, MPI_Integer, PRISMdrv_root, 11, &
01461 comm_trans, il_status, id_err)
01462
01463
01464 IF (ila_dim_size(1) .gt. 0) THEN
01465
01466 ALLOCATE(ila_orig_comp_id(ila_dim_size(1),3), stat = id_err)
01467 IF (id_err > 0) THEN
01468 ierrp (1) = id_err
01469 ierrp (2) = ila_dim_size(1)*3
01470 id_err = 13
01471
01472 call psmile_error ( id_err, 'ila_orig_comp_id', &
01473 ierrp, 2, __FILE__, __LINE__ )
01474 RETURN
01475 ENDIF
01476
01477 CALL MPI_Recv (ila_orig_comp_id, ila_dim_size(1)*3, MPI_Integer, &
01478 PRISMdrv_root, 12, comm_trans, il_status, id_err)
01479
01480 DO ib = 1, ila_dim_size(1)
01481 DO ib_transi = 1, iga_comp_nb_transi(1)
01482 IF (sga_smioc_transi(ib_transi)%ig_transi_id == &
01483 ila_orig_comp_id(ib,1)) THEN
01484 sga_smioc_transi(ib_transi)%sg_transi_in% &
01485 sga_in_orig(ila_orig_comp_id(ib,2))%ig_orig_comp_id = &
01486 ila_orig_comp_id(ib,3)
01487 EXIT
01488 END IF
01489 END DO
01490 END DO
01491
01492 DEALLOCATE(ila_orig_comp_id, stat=id_err)
01493 IF (id_err > 0) THEN
01494 ierrp (1) = id_err
01495 id_err = 14
01496
01497 call psmile_error ( id_err, 'ila_orig_comp_id', &
01498 ierrp, 1, __FILE__, __LINE__ )
01499 RETURN
01500 ENDIF
01501
01502 END IF
01503
01504
01505 IF (ila_dim_size(2) .gt. 0) THEN
01506
01507 ALLOCATE(ila_dest_comp_id(ila_dim_size(2),3), stat = id_err)
01508 IF (id_err > 0) THEN
01509 ierrp (1) = id_err
01510 ierrp (2) = ila_dim_size(2)*3
01511 id_err = 13
01512
01513 call psmile_error ( id_err, 'ila_dest_comp_id', &
01514 ierrp, 2, __FILE__, __LINE__ )
01515 RETURN
01516 ENDIF
01517
01518 CALL MPI_Recv (ila_dest_comp_id, ila_dim_size(2)*3, MPI_Integer, &
01519 PRISMdrv_root, 13, comm_trans, il_status, id_err)
01520
01521 DO ib = 1, ila_dim_size(2)
01522 DO ib_transi = 1, iga_comp_nb_transi(1)
01523 IF (sga_smioc_transi(ib_transi)%ig_transi_id == &
01524 ila_dest_comp_id(ib,1)) THEN
01525 sga_smioc_transi(ib_transi)% &
01526 sga_transi_out(ila_dest_comp_id(ib,2))%ig_dest_comp_id = &
01527 ila_dest_comp_id(ib,3)
01528 EXIT
01529 END IF
01530 END DO
01531 END DO
01532
01533 DEALLOCATE(ila_dest_comp_id, stat=id_err)
01534 IF (id_err > 0) THEN
01535 ierrp (1) = id_err
01536 id_err = 14
01537
01538 call psmile_error ( id_err, 'ila_dest_comp_id', &
01539 ierrp, 1, __FILE__, __LINE__ )
01540 RETURN
01541 ENDIF
01542
01543 END IF
01544
01545
01546 IF (ila_dim_size(3) .gt. 0) THEN
01547
01548 ALLOCATE(ila_combi_loc(ila_dim_size(3),2), stat = id_err)
01549 IF (id_err > 0) THEN
01550 ierrp (1) = id_err
01551 ierrp (2) = ila_dim_size(3)*2
01552 id_err = 13
01553
01554 call psmile_error ( id_err, 'ila_combi_loc', &
01555 ierrp, 2, __FILE__, __LINE__ )
01556 RETURN
01557 ENDIF
01558
01559 CALL MPI_Recv (ila_combi_loc, ila_dim_size(3)*2, MPI_Integer, &
01560 PRISMdrv_root, 14, comm_trans, il_status, id_err)
01561
01562 DO ib = 1, ila_dim_size(3)
01563 DO ib_transi = 1, iga_comp_nb_transi(1)
01564 IF (sga_smioc_transi(ib_transi)%ig_transi_id == &
01565 ila_combi_loc(ib,1)) THEN
01566 sga_smioc_transi(ib_transi)% &
01567 sg_transi_in%sga_in_orig(:)%sg_combi%ig_location = &
01568 ila_combi_loc(ib,2)
01569 EXIT
01570 END IF
01571 END DO
01572 END DO
01573
01574 DEALLOCATE(ila_combi_loc, stat=id_err)
01575 IF (id_err > 0) THEN
01576 ierrp (1) = id_err
01577 id_err = 14
01578
01579 call psmile_error ( id_err, 'ila_combi_loc', &
01580 ierrp, 1, __FILE__, __LINE__ )
01581 RETURN
01582 ENDIF
01583
01584 END IF
01585
01586
01587 IF (ila_dim_size(4) .gt. 0) THEN
01588
01589 ALLOCATE(ila_trans_orig_id(ila_dim_size(4),3), stat = id_err)
01590 IF (id_err > 0) THEN
01591 ierrp (1) = id_err
01592 ierrp (2) = ila_dim_size(4)*3
01593 id_err = 13
01594
01595 call psmile_error ( id_err, 'ila_trans_orig_id', &
01596 ierrp, 2, __FILE__, __LINE__ )
01597 RETURN
01598 ENDIF
01599
01600 CALL MPI_Recv (ila_trans_orig_id, ila_dim_size(4)*3, MPI_Integer, &
01601 PRISMdrv_root, 15, comm_trans, il_status, id_err)
01602
01603 DO ib = 1, ila_dim_size(4)
01604 DO ib_transi = 1, iga_comp_nb_transi(1)
01605 IF (sga_smioc_transi(ib_transi)%ig_transi_id == &
01606 ila_trans_orig_id(ib,1)) THEN
01607 sga_smioc_transi(ib_transi)% &
01608 sg_transi_in%sga_in_orig(ila_trans_orig_id(ib,2))% &
01609 ig_orig_transi_id = ila_trans_orig_id(ib,3)
01610 EXIT
01611 END IF
01612 END DO
01613 END DO
01614
01615 DEALLOCATE(ila_trans_orig_id, stat=id_err)
01616 IF (id_err > 0) THEN
01617 ierrp (1) = id_err
01618 id_err = 14
01619
01620 call psmile_error ( id_err, 'ila_trans_orig_id', &
01621 ierrp, 1, __FILE__, __LINE__ )
01622 RETURN
01623 ENDIF
01624
01625 END IF
01626
01627
01628 IF (ila_dim_size(5) .gt. 0) THEN
01629
01630 ALLOCATE(ila_trans_dest_id(ila_dim_size(5),3), stat = id_err)
01631 IF (id_err > 0) THEN
01632 ierrp (1) = id_err
01633 ierrp (2) = ila_dim_size(5)*3
01634 id_err = 13
01635
01636 call psmile_error ( id_err, 'ila_trans_dest_id', &
01637 ierrp, 2, __FILE__, __LINE__ )
01638 RETURN
01639 ENDIF
01640
01641 CALL MPI_Recv (ila_trans_dest_id, ila_dim_size(5)*3, MPI_Integer, &
01642 PRISMdrv_root, 16, comm_trans, il_status, id_err)
01643
01644 DO ib = 1, ila_dim_size(5)
01645 DO ib_transi = 1, iga_comp_nb_transi(1)
01646 IF (sga_smioc_transi(ib_transi)%ig_transi_id == &
01647 ila_trans_dest_id(ib,1)) THEN
01648 sga_smioc_transi(ib_transi)% &
01649 sga_transi_out(ila_trans_dest_id(ib,2))% &
01650 ig_dest_transi_id = ila_trans_dest_id(ib,3)
01651 EXIT
01652 END IF
01653 END DO
01654 END DO
01655
01656 DEALLOCATE(ila_trans_dest_id, stat=id_err)
01657 IF (id_err > 0) THEN
01658 ierrp (1) = id_err
01659 id_err = 14
01660
01661 call psmile_error ( id_err, 'ila_trans_dest_id', &
01662 ierrp, 1, __FILE__, __LINE__ )
01663 RETURN
01664 ENDIF
01665
01666 END IF
01667
01668
01669 IF (ila_dim_size(6) .gt. 0) THEN
01670
01671 ALLOCATE(ila_cpl_rst_file(ila_dim_size(6),8), stat = id_err)
01672 IF (id_err > 0) THEN
01673 ierrp (1) = id_err
01674 ierrp (2) = ila_dim_size(6)
01675 id_err = 13
01676
01677 call psmile_error ( id_err, 'ila_cpl_rst_file', &
01678 ierrp, 2, __FILE__, __LINE__ )
01679 RETURN
01680 ENDIF
01681 ALLOCATE(dla_cpl_rst_file(ila_dim_size(6),3), stat = id_err)
01682 IF (id_err > 0) THEN
01683 ierrp (1) = id_err
01684 ierrp (2) = ila_dim_size(6)
01685 id_err = 13
01686
01687 call psmile_error ( id_err, 'dla_cpl_rst_file', &
01688 ierrp, 2, __FILE__, __LINE__ )
01689 RETURN
01690 ENDIF
01691 ALLOCATE(cla_cpl_rst_file(ila_dim_size(6),1), stat = id_err)
01692 IF (id_err > 0) THEN
01693 ierrp (1) = id_err
01694 ierrp (2) = ila_dim_size(6)
01695 id_err = 13
01696
01697 call psmile_error ( id_err, 'cla_cpl_rst_file', &
01698 ierrp, 2, __FILE__, __LINE__ )
01699 RETURN
01700 ENDIF
01701
01702 CALL MPI_Recv (ila_cpl_rst_file, ila_dim_size(6)*8, MPI_Integer, &
01703 PRISMdrv_root, 17, comm_trans, il_status, id_err)
01704
01705 CALL MPI_Recv (dla_cpl_rst_file, ila_dim_size(6)*3, &
01706 MPI_Double_Precision, PRISMdrv_root, 18, comm_trans, il_status,id_err)
01707
01708 CALL MPI_Recv (cla_cpl_rst_file, ila_dim_size(6)*max_name, &
01709 MPI_Character, PRISMdrv_root, 19, comm_trans, il_status, id_err)
01710
01711 DO ib = 1, ila_dim_size(6)
01712 DO ib_transi = 1, iga_comp_nb_transi(1)
01713 IF (sga_smioc_transi(ib_transi)%ig_transi_id == &
01714 ila_cpl_rst_file(ib,1)) THEN
01715
01716 sga_smioc_transi(ib_transi)% &
01717 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01718 sg_cpl_rst_file%ig_suffix = ila_cpl_rst_file(ib,3)
01719 sga_smioc_transi(ib_transi)% &
01720 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01721 sg_cpl_rst_file%ig_file_format = ila_cpl_rst_file(ib,4)
01722 sga_smioc_transi(ib_transi)% &
01723 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01724 sg_cpl_rst_file%ig_file_set = ila_cpl_rst_file(ib,5)
01725 sga_smioc_transi(ib_transi)% &
01726 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01727 sg_cpl_rst_file%ig_file_iomode = ila_cpl_rst_file(ib,6)
01728 sga_smioc_transi(ib_transi)% &
01729 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01730 sg_cpl_rst_file%ig_file_pack = ila_cpl_rst_file(ib,7)
01731
01732 sga_smioc_transi(ib_transi)% &
01733 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01734 sg_cpl_rst_file%dg_file_scal = dla_cpl_rst_file(ib,1)
01735 sga_smioc_transi(ib_transi)% &
01736 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01737 sg_cpl_rst_file%dg_file_add = dla_cpl_rst_file(ib,2)
01738 sga_smioc_transi(ib_transi)% &
01739 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01740 sg_cpl_rst_file%dg_fill_val = dla_cpl_rst_file(ib,3)
01741
01742 sga_smioc_transi(ib_transi)% &
01743 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01744 sg_cpl_rst_file%cg_file_name = cla_cpl_rst_file(ib,1)
01745
01746 sga_smioc_transi(ib_transi)% &
01747 sga_transi_out(ila_cpl_rst_file(ib,2))% &
01748 ig_conserv = ila_cpl_rst_file(ib,8)
01749
01750 EXIT
01751 END IF
01752 END DO
01753 END DO
01754
01755 DEALLOCATE(ila_cpl_rst_file, stat=id_err)
01756 DEALLOCATE(dla_cpl_rst_file, stat=id_err)
01757 DEALLOCATE(cla_cpl_rst_file, stat=id_err)
01758 IF (id_err > 0) THEN
01759 ierrp (1) = id_err
01760 id_err = 14
01761
01762 call psmile_error ( id_err, 'cpl_rst_file', &
01763 ierrp, 1, __FILE__, __LINE__ )
01764 RETURN
01765 ENDIF
01766
01767 END IF
01768
01769
01770 IF (ila_dim_size(7) .gt. 0) THEN
01771
01772 ALLOCATE(ila_trans_interp(ila_dim_size(7),32), stat = id_err)
01773 IF (id_err > 0) THEN
01774 ierrp (1) = id_err
01775 ierrp (2) = ila_dim_size(7)
01776 id_err = 13
01777
01778 call psmile_error ( id_err, 'ila_trans_interp', &
01779 ierrp, 2, __FILE__, __LINE__ )
01780 RETURN
01781 ENDIF
01782 ALLOCATE(dla_trans_interp(ila_dim_size(7),4), stat = id_err)
01783 IF (id_err > 0) THEN
01784 ierrp (1) = id_err
01785 ierrp (2) = ila_dim_size(7)
01786 id_err = 13
01787
01788 call psmile_error ( id_err, 'dla_trans_interp', &
01789 ierrp, 2, __FILE__, __LINE__ )
01790 RETURN
01791 ENDIF
01792 ALLOCATE(cla_trans_interp(ila_dim_size(7),2), stat = id_err)
01793 IF (id_err > 0) THEN
01794 ierrp (1) = id_err
01795 ierrp (2) = ila_dim_size(7)
01796 id_err = 13
01797
01798 call psmile_error ( id_err, 'cla_trans_interp', &
01799 ierrp, 2, __FILE__, __LINE__ )
01800 RETURN
01801 ENDIF
01802
01803 CALL MPI_Recv (ila_trans_interp, ila_dim_size(7)*32, MPI_Integer, &
01804 PRISMdrv_root, 20, comm_trans, il_status, id_err)
01805
01806 CALL MPI_Recv (dla_trans_interp, ila_dim_size(7)*4, &
01807 MPI_Double_Precision, PRISMdrv_root, 21, comm_trans, &
01808 il_status, id_err)
01809
01810 CALL MPI_Recv (cla_trans_interp, ila_dim_size(7)*max_name*2, &
01811 MPI_Character, PRISMdrv_root, 22, comm_trans, il_status, id_err)
01812
01813 DO ib = 1, ila_dim_size(7)
01814 DO ib_transi = 1, iga_comp_nb_transi(1)
01815 IF (sga_smioc_transi(ib_transi)%ig_transi_id == &
01816 ila_trans_interp(ib,1)) THEN
01817
01818 sga_smioc_transi(ib_transi)% &
01819 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01820 ig_interp_type = ila_trans_interp(ib,3)
01821 sga_smioc_transi(ib_transi)% &
01822 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01823 iga_arg1 = ila_trans_interp(ib,4:6)
01824 sga_smioc_transi(ib_transi)% &
01825 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01826 iga_arg2 = ila_trans_interp(ib,7:9)
01827 sga_smioc_transi(ib_transi)% &
01828 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01829 iga_arg3 = ila_trans_interp(ib,10:12)
01830 sga_smioc_transi(ib_transi)% &
01831 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01832 iga_arg4 = ila_trans_interp(ib,13:15)
01833 sga_smioc_transi(ib_transi)% &
01834 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01835 iga_arg5 = ila_trans_interp(ib,16:18)
01836 sga_smioc_transi(ib_transi)% &
01837 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01838 iga_arg6 = ila_trans_interp(ib,19:21)
01839 sga_smioc_transi(ib_transi)% &
01840 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01841 iga_arg7 = ila_trans_interp(ib,22:24)
01842 sga_smioc_transi(ib_transi)% &
01843 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01844 iga_interp_meth = ila_trans_interp(ib,25:27)
01845
01846 sga_smioc_transi(ib_transi)% &
01847 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01848 sg_arg10%ig_suffix = ila_trans_interp(ib,28)
01849 sga_smioc_transi(ib_transi)% &
01850 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01851 sg_arg10%ig_file_format = ila_trans_interp(ib,29)
01852 sga_smioc_transi(ib_transi)% &
01853 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01854 sg_arg10%ig_file_set = ila_trans_interp(ib,30)
01855 sga_smioc_transi(ib_transi)% &
01856 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01857 sg_arg10%ig_file_iomode = ila_trans_interp(ib,31)
01858 sga_smioc_transi(ib_transi)% &
01859 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01860 sg_arg10%ig_file_pack = ila_trans_interp(ib,32)
01861
01862 sga_smioc_transi(ib_transi)% &
01863 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01864 dg_arg8 = dla_trans_interp(ib,1)
01865 sga_smioc_transi(ib_transi)% &
01866 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01867 sg_arg10%dg_file_scal = dla_trans_interp(ib,2)
01868 sga_smioc_transi(ib_transi)% &
01869 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01870 sg_arg10%dg_file_add = dla_trans_interp(ib,3)
01871 sga_smioc_transi(ib_transi)% &
01872 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01873 sg_arg10%dg_fill_val = dla_trans_interp(ib,4)
01874
01875
01876 sga_smioc_transi(ib_transi)% &
01877 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01878 cg_arg9 = cla_trans_interp(ib,1)
01879
01880 sga_smioc_transi(ib_transi)% &
01881 sga_transi_out(ila_trans_interp(ib,2))%sg_interp% &
01882 sg_arg10%cg_file_name = cla_trans_interp(ib,2)
01883
01884 EXIT
01885 END IF
01886 END DO
01887 END DO
01888
01889 DEALLOCATE(ila_trans_interp, stat=id_err)
01890 DEALLOCATE(dla_trans_interp, stat=id_err)
01891 DEALLOCATE(cla_trans_interp, stat=id_err)
01892 IF (id_err > 0) THEN
01893 ierrp (1) = id_err
01894 id_err = 14
01895
01896 call psmile_error ( id_err, 'trans_interp', &
01897 ierrp, 1, __FILE__, __LINE__ )
01898 RETURN
01899 ENDIF
01900
01901 END IF
01902
01903 END IF
01904
01905 DEALLOCATE(ila_comp_nb_stand_name)
01906 DEALLOCATE(ila_comp_nb_transi_in)
01907 DEALLOCATE(ila_comp_nb_transi_out)
01908
01909 END IF
01910
01911 #ifdef DEBUG
01912 WRITE(il_chanel,*) ' '
01913 WRITE(il_chanel,*) ' ila_dim_size ', ila_dim_size
01914 WRITE(il_chanel,*) ' '
01915 WRITE(il_chanel,*) ' Got transient details '
01916 call psmile_flushstd(il_chanel)
01917 #endif
01918
01919
01920
01921
01922
01923 #ifdef DEBUG
01924
01925
01926
01927
01928
01929
01930
01931
01932
01933
01934
01935
01936
01937
01938
01939
01940
01941
01942
01943
01944
01945
01946
01947
01948
01949
01950
01951
01952 #endif
01953
01954
01955
01956
01957
01958 #ifdef DEBUG
01959 WRITE(il_chanel,*) ' '
01960 WRITE(il_chanel,*) '* Get persistent details '
01961 #endif
01962
01963 IF (iga_comp_nb_persis(1) .gt. 0) THEN
01964
01965 CALL init_persis (iga_comp_nb_persis(1), &
01966 sga_smioc_persis, &
01967 id_err )
01968 IF (id_err .ne. 0) WRITE(il_chanel,*) 'WARNING: Pb in init_persis'
01969
01970 IF (Appl%stand_alone) THEN
01971
01972 CALL get_persis_details (iga_comp_id_doc_XML(1), &
01973 iga_comp_nb_persis(1), &
01974 sga_smioc_persis, &
01975 id_err )
01976 IF (id_err .ne. 0) &
01977 WRITE(il_chanel,*) 'WARNING: Pb in get_persis_details'
01978
01979 sga_smioc_persis(:)%ig_comp_id = 1
01980 DO ib_p = 1, iga_comp_nb_persis(1)
01981 sga_smioc_persis(ib_p)%ig_persis_id = ib_p
01982 ENDDO
01983
01984 ELSE
01985
01986 ALLOCATE(ila_smioc_recv(4*iga_comp_nb_persis(1)), stat=id_err)
01987 IF (id_err > 0) THEN
01988 ierrp (1) = id_err
01989 ierrp (2) = 4*iga_comp_nb_persis(1)
01990 id_err = 13
01991
01992 call psmile_error ( id_err, 'ila_smioc_recv', &
01993 ierrp, 2, __FILE__, __LINE__ )
01994 RETURN
01995 ENDIF
01996 ALLOCATE(cla_smioc_recv(5*iga_comp_nb_persis(1)), stat=id_err)
01997 IF (id_err > 0) THEN
01998 ierrp (1) = id_err
01999 ierrp (2) = 5*iga_comp_nb_persis(1)
02000 id_err = 13
02001
02002 call psmile_error ( id_err, 'cla_smioc_recv', &
02003 ierrp, 2, __FILE__, __LINE__ )
02004 RETURN
02005 ENDIF
02006 ALLOCATE(rla_smioc_recv(3*iga_comp_nb_persis(1)), stat=id_err)
02007 IF (id_err > 0) THEN
02008 ierrp (1) = id_err
02009 ierrp (2) = 3*iga_comp_nb_persis(1)
02010 id_err = 13
02011
02012 call psmile_error ( id_err, 'rla_smioc_recv', &
02013 ierrp, 2, __FILE__, __LINE__ )
02014 RETURN
02015 ENDIF
02016
02017 CALL MPI_Recv (ila_smioc_recv, 4*iga_comp_nb_persis(1), &
02018 MPI_Integer, PRISMdrv_root, 30, comm_trans, il_status, id_err)
02019
02020 CALL MPI_Recv (cla_smioc_recv, max_name*5*iga_comp_nb_persis(1), &
02021 MPI_Character, PRISMdrv_root, 31, comm_trans, il_status, id_err)
02022
02023 CALL MPI_Recv (rla_smioc_recv, 3*iga_comp_nb_persis(1), &
02024 MPI_Real, PRISMdrv_root, 32, comm_trans, il_status, id_err)
02025
02026 IF (id_err .ne. 0) &
02027 WRITE(il_chanel,*) 'WARNING: Pb in get_unitsets_details'
02028
02029 il_index = 1
02030 DO ib= 1, iga_comp_nb_persis(1)
02031
02032 sga_smioc_persis(ib)%ig_comp_id = ila_smioc_recv(1 + (ib-1)*4)
02033 sga_smioc_persis(ib)%ig_persis_id = ila_smioc_recv(2 + (ib-1)*4)
02034 sga_smioc_persis(ib)%ig_persis_type = ila_smioc_recv(3 + (ib-1)*4)
02035 sga_smioc_persis(ib)%ig_datatype = ila_smioc_recv(4 + (ib-1)*4)
02036
02037 sga_smioc_persis(ib)%cg_local_name = cla_smioc_recv(1 + (ib-1)*5)
02038 sga_smioc_persis(ib)%cg_stand_name = cla_smioc_recv(2 + (ib-1)*5)
02039 sga_smioc_persis(ib)%cg_long_name = cla_smioc_recv(3 + (ib-1)*5)
02040 sga_smioc_persis(ib)%cg_comp_name = cla_smioc_recv(4 + (ib-1)*5)
02041 sga_smioc_persis(ib)%cg_units = cla_smioc_recv(5 + (ib-1)*5)
02042
02043 sga_smioc_persis(ib)%rg_persis_min = rla_smioc_recv(1 + (ib-1)*3)
02044 sga_smioc_persis(ib)%rg_persis_max = rla_smioc_recv(2 + (ib-1)*3)
02045 sga_smioc_persis(ib)%rg_persis = rla_smioc_recv(3 + (ib-1)*3)
02046
02047 END DO
02048
02049 DEALLOCATE(ila_smioc_recv, stat=id_err)
02050 IF (id_err > 0) THEN
02051 ierrp (1) = id_err
02052 id_err = 14
02053
02054 call psmile_error ( id_err, 'ila_smioc_recv', &
02055 ierrp, 1, __FILE__, __LINE__ )
02056 RETURN
02057 ENDIF
02058 DEALLOCATE(cla_smioc_recv, stat=id_err)
02059 IF (id_err > 0) THEN
02060 ierrp (1) = id_err
02061 id_err = 14
02062
02063 call psmile_error ( id_err, 'cla_smioc_recv', &
02064 ierrp, 1, __FILE__, __LINE__ )
02065 RETURN
02066 ENDIF
02067 DEALLOCATE(rla_smioc_recv, stat=id_err)
02068 IF (id_err > 0) THEN
02069 ierrp (1) = id_err
02070 id_err = 14
02071
02072 call psmile_error ( id_err, 'rla_smioc_recv', &
02073 ierrp, 1, __FILE__, __LINE__ )
02074 RETURN
02075 ENDIF
02076 END IF
02077 END IF
02078
02079 #ifdef DEBUG
02080 WRITE(il_chanel,*) ' '
02081 WRITE(il_chanel,*) '* The total number of persistents : ', &
02082 iga_comp_nb_persis(1)
02083 call psmile_flushstd(il_chanel)
02084 #endif
02085
02086 IF (Appl%stand_alone) THEN
02087
02088 ierrp(1) = sasa_c_close (iga_comp_id_doc_XML(1))
02089 END IF
02090
02091
02092
02093
02094
02095
02096 #ifdef DEBUG
02097 WRITE(il_chanel,*) ' '
02098 IF (iga_comp_nb_grids(1) .gt. 0) THEN
02099 CALL write_grids_details (iga_comp_nb_grids(1), &
02100 sga_smioc_grids, il_chanel, id_err )
02101 IF (id_err .ne. 0) WRITE(il_chanel,*) &
02102 'WARNING: Pb in write_grids_details'
02103 END IF
02104
02105
02106 IF (iga_comp_nb_transi(1) .gt. 0) THEN
02107 CALL write_transi_details (iga_comp_nb_transi(1), &
02108 sga_smioc_transi, il_chanel, id_err )
02109 IF (id_err .ne. 0) WRITE(il_chanel,*) &
02110 'WARNING: Pb in write_transi_details'
02111 END IF
02112
02113
02114 IF (iga_comp_nb_persis(1) .gt. 0) THEN
02115 CALL write_persis_details (iga_comp_nb_persis(1), &
02116 sga_smioc_persis, il_chanel, id_err )
02117 IF (id_err .ne. 0) WRITE(il_chanel,*) &
02118 'WARNING: Pb in write_persis_details'
02119 END IF
02120 WRITE(il_chanel,*) ' '
02121
02122 #endif
02123
02124 #ifdef VERBOSE
02125 print 9980, trim(ch_id), id_err
02126
02127 call psmile_flushstd
02128 #endif /* VERBOSE */
02129
02130 9990 format (1x, a, ': psmile_smioc_init: comp_id =', i3)
02131 9980 format (1x, a, ': psmile_smioc_init: eof, ierror =', i3)
02132
02133
02134 END SUBROUTINE PSMILe_smioc_init