00001
00002
00003
00004
00005
00006
00007
00008
00009 Subroutine PRISMDrv_get_udef_transients ( id_err )
00010
00011
00012
00013
00014 USE PSMILE_smioc
00015 USE PSMILE_smioc_interface
00016 USE PRISMDrv, dummy_interface => PRISMDrv_get_udef_transients
00017
00018 IMPLICIT NONE
00019
00020
00021
00022
00023
00024
00025
00026 INTEGER, INTENT (Out) :: id_err
00027
00028
00029
00030
00031
00032
00033
00034
00035 INTEGER, DIMENSION(:), ALLOCATABLE :: ila_comp_nb_stand_name
00036 INTEGER, DIMENSION(:), ALLOCATABLE :: ila_comp_nb_transi_in
00037 INTEGER, DIMENSION(:), ALLOCATABLE :: ila_comp_nb_transi_out
00038
00039
00040
00041
00042
00043
00044
00045 TYPE(transient), DIMENSION(:), ALLOCATABLE :: sla_driver_transi
00046
00047
00048 INTEGER :: ib_c, ib_nt, ib_a, ib_g, ib_ntt, ib_ntt2, ib_nin, ib, ib_nout
00049 INTEGER :: ib_co, ib_o, ib_i, ibxml
00050
00051
00052 INTEGER :: il_nu, il_ng, il_ntr, il_npe, ib_p, il_combi, il_source
00053 INTEGER :: il_npartinid, il_npartoutid, il_index1, il_index2
00054
00055
00056 LOGICAL :: ll_combi, ll_source
00057
00058
00059 INTEGER :: il_index, ib_bis, ib_ter, il_nb_comp_pes
00060
00061 LOGICAL :: ll_userdef_details
00062
00063
00064 INTEGER, PARAMETER :: nerrp = 2
00065 INTEGER :: ierrp (nerrp)
00066
00067
00068
00069 INTEGER, DIMENSION(7) :: ila_dim_size
00070 INTEGER :: il_orig_index, il_dest_index, il_loc_index
00071 INTEGER :: il_trans_orig_index, il_trans_dest_index
00072 INTEGER :: il_cpl_rst_file_index, il_trans_interp_index
00073
00074 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_orig_comp_id
00075 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_dest_comp_id
00076 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_combi_loc
00077 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_trans_orig_id
00078 INTEGER, DIMENSION(:,:), ALLOCATABLE :: ila_trans_dest_id
00079
00080
00081
00082
00083
00084 #ifdef VERBOSE
00085 PRINT *, '| | Enter PRISMDrv_get_udef_transients'
00086 CALL PSMILe_Flushstd
00087 #endif
00088
00089
00090
00091
00092
00093 DO ib_c = 1, ig_nb_tot_comps
00094
00095
00096
00097 CALL get_smioc_grids_transi_nb ( iga_comp_id_doc_XML(ib_c), &
00098 iga_xml_comp_nb_grids(ib_c), &
00099 iga_comp_nb_transi(ib_c), &
00100 id_err )
00101 PRINT *,'| | |Nb of grids in component: ',ib_c, iga_xml_comp_nb_grids(ib_c)
00102 PRINT *,'| | |Nb of transients in component: ',ib_c, iga_comp_nb_transi(ib_c)
00103
00104 IF (id_err .ne. 0) THEN
00105 PRINT *, '| | |WARNING: Pb in get_smioc_grids_transi_nb id_err = ',id_err
00106 PRINT *, '| | | Nb of transients ', iga_comp_nb_transi(ib_c)
00107 PRINT *, '| | | Nb of grids ', iga_xml_comp_nb_grids(ib_c)
00108 PRINT *, '| | | '
00109 ENDIF
00110 ig_nb_tot_transi = ig_nb_tot_transi + iga_comp_nb_transi(ib_c)
00111 ig_nb_tot_xml_grids = ig_nb_tot_xml_grids + iga_xml_comp_nb_grids(ib_c)
00112 PRINT *, '| | |Nb of XML transients total', ig_nb_tot_transi
00113 PRINT *, '| | |Nb of XML grids total', ig_nb_tot_xml_grids
00114
00115
00116 ALLOCATE ( sga_comp_udef_idx(ib_c)%sla_driver_udef(iga_comp_nb_transi(ib_c)), stat=id_err )
00117 IF (id_err > 0) THEN
00118 ierrp (1) = id_err
00119 ierrp (2) = iga_comp_nb_transi(ib_c)
00120 id_err = 13
00121
00122 CALL Psmile_Error_Common ( id_err, 'sla_driver_udef', &
00123 ierrp, 2, __FILE__, __LINE__ )
00124 RETURN
00125 ENDIF
00126
00127
00128 ENDDO
00129
00130
00131
00132 ALLOCATE ( sga_xml_smioc_transi (ig_nb_tot_transi), stat=id_err )
00133 IF (id_err > 0) THEN
00134 ierrp (1) = id_err
00135 ierrp (2) = ig_nb_tot_transi
00136 id_err = 13
00137
00138 CALL Psmile_Error_Common ( id_err, 'sga_xml_smioc_transi', &
00139 ierrp, 2, __FILE__, __LINE__ )
00140 RETURN
00141 ENDIF
00142
00143 #ifdef VERBOSE
00144 PRINT *, '| | | '
00145 PRINT *, '| | | Global structure allocated (for transients only)'
00146 CALL PSMILe_Flushstd
00147 #endif
00148
00149
00150
00151
00152
00153
00154 #ifdef VERBOSE
00155 PRINT *, '| | | '
00156 PRINT *, '| | | Get the transient numbers '
00157 CALL PSMILe_Flushstd
00158 #endif
00159
00160
00161 ALLOCATE (iga_comp_nb_stand_name(ig_nb_tot_transi), stat=id_err)
00162 IF (id_err > 0) THEN
00163 ierrp (1) = id_err
00164 ierrp (2) = ig_nb_tot_transi
00165 id_err = 13
00166
00167 CALL Psmile_Error_Common ( id_err, 'iga_comp_nb_stand_name', &
00168 ierrp, 2, __FILE__, __LINE__ )
00169 RETURN
00170 ENDIF
00171 ALLOCATE (iga_comp_nb_transi_in(ig_nb_tot_transi), stat=id_err)
00172 IF (id_err > 0) THEN
00173 ierrp (1) = id_err
00174 ierrp (2) = ig_nb_tot_transi
00175 id_err = 13
00176
00177 CALL Psmile_Error_Common ( id_err, 'iga_comp_nb_transi_in', &
00178 ierrp, 2, __FILE__, __LINE__ )
00179 RETURN
00180 ENDIF
00181 ALLOCATE (iga_comp_nb_transi_out(ig_nb_tot_transi), stat=id_err)
00182 IF (id_err > 0) THEN
00183 ierrp (1) = id_err
00184 ierrp (2) = ig_nb_tot_transi
00185 id_err = 13
00186
00187 CALL Psmile_Error_Common ( id_err, 'Nb tot transi', &
00188 ierrp, 2, __FILE__, __LINE__ )
00189 RETURN
00190 ENDIF
00191
00192 il_ntr = 0
00193
00194
00195 DO ib_c = 1, ig_nb_tot_comps
00196
00197 IF (iga_comp_nb_transi(ib_c) .gt. 0) THEN
00198
00199
00200 ALLOCATE (ila_comp_nb_stand_name(iga_comp_nb_transi(ib_c)), stat=id_err)
00201 IF (id_err > 0) THEN
00202 ierrp (1) = id_err
00203 ierrp (2) = iga_comp_nb_transi(ib_c)
00204 id_err = 13
00205
00206 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_stand_name', &
00207 ierrp, 2, __FILE__, __LINE__ )
00208 RETURN
00209 ENDIF
00210 ALLOCATE (ila_comp_nb_transi_in(iga_comp_nb_transi(ib_c)), stat=id_err)
00211 IF (id_err > 0) THEN
00212 ierrp (1) = id_err
00213 ierrp (2) = iga_comp_nb_transi(ib_c)
00214 id_err = 13
00215
00216 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_in', &
00217 ierrp, 2, __FILE__, __LINE__ )
00218 RETURN
00219 ENDIF
00220 ALLOCATE (ila_comp_nb_transi_out(iga_comp_nb_transi(ib_c)), stat=id_err)
00221 IF (id_err > 0) THEN
00222 ierrp (1) = id_err
00223 ierrp (2) = iga_comp_nb_transi(ib_c)
00224 id_err = 13
00225
00226 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_out', &
00227 ierrp, 2, __FILE__, __LINE__ )
00228 RETURN
00229 ENDIF
00230
00231
00232
00233
00234
00235 ll_userdef_details = .true.
00236 CALL get_transi_io_numbers ( iga_comp_id_doc_XML(ib_c), &
00237 iga_comp_nb_transi(ib_c), &
00238 ila_comp_nb_stand_name(:), &
00239 ila_comp_nb_transi_in(:), &
00240 ila_comp_nb_transi_out(:), &
00241 ib_c, &
00242 ll_userdef_details, &
00243 id_err )
00244 IF (id_err .ne. 0) PRINT *, '| | |WARNING: Pb in get_transi_io_numbers id_err = ',id_err
00245
00246
00247 iga_comp_nb_stand_name &
00248 (il_ntr+1:il_ntr+iga_comp_nb_transi(ib_c)) &
00249 = ila_comp_nb_stand_name(:)
00250 iga_comp_nb_transi_in &
00251 (il_ntr+1:il_ntr+iga_comp_nb_transi(ib_c)) &
00252 = ila_comp_nb_transi_in(:)
00253 iga_comp_nb_transi_out &
00254 (il_ntr+1:il_ntr+iga_comp_nb_transi(ib_c)) &
00255 = ila_comp_nb_transi_out(:)
00256
00257 il_ntr = il_ntr + iga_comp_nb_transi(ib_c)
00258
00259
00260 DEALLOCATE (ila_comp_nb_stand_name, stat=id_err)
00261 IF (id_err > 0) THEN
00262 ierrp (1) = id_err
00263 id_err = 14
00264
00265 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_stand_name', &
00266 ierrp, 1, __FILE__, __LINE__ )
00267 RETURN
00268 ENDIF
00269 DEALLOCATE (ila_comp_nb_transi_in, stat=id_err)
00270 IF (id_err > 0) THEN
00271 ierrp (1) = id_err
00272 id_err = 14
00273
00274 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_in', &
00275 ierrp, 1, __FILE__, __LINE__ )
00276 RETURN
00277 ENDIF
00278 DEALLOCATE (ila_comp_nb_transi_out, stat=id_err)
00279 IF (id_err > 0) THEN
00280 ierrp (1) = id_err
00281 id_err = 14
00282
00283 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_out', &
00284 ierrp, 1, __FILE__, __LINE__ )
00285 RETURN
00286 ENDIF
00287
00288 END IF
00289
00290 ENDDO
00291
00292
00293
00294
00295 DO ib_ntt = 1, ig_nb_tot_transi
00296 ALLOCATE (sga_xml_smioc_transi(ib_ntt)%sg_transi_in%sga_in_orig &
00297 (iga_comp_nb_transi_in(ib_ntt)), stat=id_err)
00298 IF (id_err > 0) THEN
00299 ierrp (1) = id_err
00300 ierrp (2) = iga_comp_nb_transi_in(ib_ntt)
00301 id_err = 13
00302
00303 CALL Psmile_Error_Common ( id_err, 'sga_in_orig', &
00304 ierrp, 2, __FILE__, __LINE__ )
00305 RETURN
00306 ENDIF
00307 ALLOCATE (sga_xml_smioc_transi(ib_ntt)%sga_transi_out &
00308 (iga_comp_nb_transi_out(ib_ntt)), stat=id_err)
00309 IF (id_err > 0) THEN
00310 ierrp (1) = id_err
00311 ierrp (2) = iga_comp_nb_transi_out(ib_ntt)
00312 id_err = 13
00313
00314 CALL Psmile_Error_Common ( id_err, 'sga_transi_out', &
00315 ierrp, 2, __FILE__, __LINE__ )
00316 RETURN
00317 ENDIF
00318 ALLOCATE (sga_xml_smioc_transi(ib_ntt)%cga_stand_name &
00319 (iga_comp_nb_stand_name(ib_ntt)), stat=id_err)
00320 IF (id_err > 0) THEN
00321 ierrp (1) = id_err
00322 ierrp (2) = iga_comp_nb_stand_name(ib_ntt)
00323 id_err = 13
00324
00325 CALL Psmile_Error_Common ( id_err, 'cga_stand_name', &
00326 ierrp, 2, __FILE__, __LINE__ )
00327 RETURN
00328 ENDIF
00329 ENDDO
00330
00331
00332
00333 #ifdef VERBOSE
00334 PRINT *, '| | | Before init_transi'
00335 CALL PSMILe_Flushstd
00336 #endif
00337 CALL init_transi (ig_nb_tot_transi, &
00338 iga_comp_nb_stand_name, &
00339 iga_comp_nb_transi_in, &
00340 iga_comp_nb_transi_out, &
00341 sga_xml_smioc_transi, &
00342 id_err )
00343 #ifdef VERBOSE
00344 PRINT *, '| | | After init_transi id_err = ',id_err
00345 CALL PSMILe_Flushstd
00346 #endif
00347 IF (id_err .ne. 0) PRINT *, '| | |WARNING: Pb in init_transi'
00348
00349
00350 il_ntr = 0
00351 il_npartinid = 0
00352 il_npartoutid = 0
00353
00354 DO ib_c = 1, ig_nb_tot_comps
00355
00356
00357 ALLOCATE (ila_comp_nb_stand_name(iga_comp_nb_transi(ib_c)), stat=id_err)
00358 IF (id_err > 0) THEN
00359 ierrp (1) = id_err
00360 ierrp (2) = iga_comp_nb_transi(ib_c)
00361 id_err = 13
00362
00363 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_stand_name', &
00364 ierrp, 2, __FILE__, __LINE__ )
00365 RETURN
00366 ENDIF
00367 ALLOCATE (ila_comp_nb_transi_in(iga_comp_nb_transi(ib_c)), stat=id_err)
00368 IF (id_err > 0) THEN
00369 ierrp (1) = id_err
00370 ierrp (2) = iga_comp_nb_transi(ib_c)
00371 id_err = 13
00372
00373 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_in', &
00374 ierrp, 2, __FILE__, __LINE__ )
00375 RETURN
00376 ENDIF
00377 ALLOCATE (ila_comp_nb_transi_out(iga_comp_nb_transi(ib_c)), stat=id_err)
00378 IF (id_err > 0) THEN
00379 ierrp (1) = id_err
00380 ierrp (2) = iga_comp_nb_transi(ib_c)
00381 id_err = 13
00382
00383 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_out', &
00384 ierrp, 2, __FILE__, __LINE__ )
00385 RETURN
00386 ENDIF
00387 ALLOCATE (sla_driver_transi (iga_comp_nb_transi(ib_c)), stat=id_err)
00388 IF (id_err > 0) THEN
00389 ierrp (1) = id_err
00390 ierrp (2) = iga_comp_nb_transi(ib_c)
00391 id_err = 13
00392
00393 CALL Psmile_Error_Common ( id_err, 'sla_driver_transi', &
00394 ierrp, 2, __FILE__, __LINE__ )
00395 RETURN
00396 ENDIF
00397
00398 ila_comp_nb_stand_name(:) = iga_comp_nb_stand_name &
00399 (il_ntr+1:il_ntr+iga_comp_nb_transi(ib_c))
00400 ila_comp_nb_transi_in(:) = iga_comp_nb_transi_in &
00401 (il_ntr+1:il_ntr+iga_comp_nb_transi(ib_c))
00402 ila_comp_nb_transi_out(:) = iga_comp_nb_transi_out &
00403 (il_ntr+1:il_ntr+iga_comp_nb_transi(ib_c))
00404
00405
00406
00407
00408 DO ib_nt = 1, iga_comp_nb_transi(ib_c)
00409 ALLOCATE (sla_driver_transi(ib_nt)%sg_transi_in%sga_in_orig(ila_comp_nb_transi_in(ib_nt)), stat=id_err)
00410 IF (id_err > 0) THEN
00411 ierrp (1) = id_err
00412 ierrp (2) = ila_comp_nb_transi_in(ib_nt)
00413 id_err = 13
00414
00415 CALL Psmile_Error_Common ( id_err, 'sga_in_orig', &
00416 ierrp, 2, __FILE__, __LINE__ )
00417 RETURN
00418 ENDIF
00419 ALLOCATE (sla_driver_transi(ib_nt)%sga_transi_out(ila_comp_nb_transi_out(ib_nt)), stat=id_err)
00420 IF (id_err > 0) THEN
00421 ierrp (1) = id_err
00422 ierrp (2) = ila_comp_nb_transi_out(ib_nt)
00423 id_err = 13
00424
00425 CALL Psmile_Error_Common ( id_err, 'sga_transi_out', &
00426 ierrp, 2, __FILE__, __LINE__ )
00427 RETURN
00428 ENDIF
00429 ALLOCATE (sla_driver_transi(ib_nt)%cga_stand_name(ila_comp_nb_stand_name(ib_nt)), stat=id_err)
00430 IF (id_err > 0) THEN
00431 ierrp (1) = id_err
00432 ierrp (2) = ila_comp_nb_stand_name(ib_nt)
00433 id_err = 13
00434
00435 CALL Psmile_Error_Common ( id_err, 'cga_stand_name', &
00436 ierrp, 2, __FILE__, __LINE__ )
00437 RETURN
00438 ENDIF
00439 ENDDO
00440
00441
00442 DO ib_nt = 1, iga_comp_nb_transi(ib_c)
00443 ALLOCATE (sga_comp_udef_idx(ib_c)%sla_driver_udef(ib_nt)%lga_trin_orig(ila_comp_nb_transi_in(ib_nt)), stat=id_err)
00444 IF (id_err > 0) THEN
00445 ierrp (1) = id_err
00446 ierrp (2) = ila_comp_nb_transi_in(ib_nt)
00447 id_err = 13
00448
00449 CALL Psmile_Error_Common ( id_err, 'lga_trin_orig', &
00450 ierrp, 2, __FILE__, __LINE__ )
00451 RETURN
00452 ENDIF
00453 ALLOCATE (sga_comp_udef_idx(ib_c)%sla_driver_udef(ib_nt)%lga_trout(ila_comp_nb_transi_out(ib_nt)), stat=id_err)
00454 IF (id_err > 0) THEN
00455 ierrp (1) = id_err
00456 ierrp (2) = ila_comp_nb_transi_out(ib_nt)
00457 id_err = 13
00458
00459 CALL Psmile_Error_Common ( id_err, 'lga_trout', &
00460 ierrp, 2, __FILE__, __LINE__ )
00461 RETURN
00462 ENDIF
00463 ENDDO
00464
00465
00466 #ifdef VERBOSE
00467 PRINT *, '| | | Before init_transi bis'
00468 CALL PSMILe_Flushstd
00469 #endif
00470 CALL init_transi (iga_comp_nb_transi(ib_c), &
00471 ila_comp_nb_stand_name, &
00472 ila_comp_nb_transi_in, &
00473 ila_comp_nb_transi_out, &
00474 sla_driver_transi, &
00475 id_err )
00476 CALL init_comp_udef ( iga_comp_nb_transi(ib_c), &
00477 ila_comp_nb_transi_in, &
00478 ila_comp_nb_transi_out, &
00479 ib_c, &
00480 id_err )
00481 #ifdef VERBOSE
00482 PRINT *, '| | | After init_transi bis id_err = ', id_err
00483 CALL PSMILe_Flushstd
00484 #endif
00485 IF (id_err .ne. 0) PRINT *, '| | |WARNING: Pb in init_transi bis'
00486
00487
00488
00489
00490 #ifdef VERBOSE
00491 PRINT *, '| | | Before get_transi'
00492 CALL PSMILe_Flushstd
00493 #endif
00494
00495 ll_userdef_details = .true.
00496
00497 CALL get_transi_details (iga_comp_id_doc_XML(ib_c), &
00498 iga_comp_nb_transi(ib_c), &
00499 sla_driver_transi(:), &
00500 ib_c, &
00501 ll_userdef_details, &
00502 id_err )
00503 #ifdef VERBOSE
00504 PRINT *, '| | | After get_transi_details first pass id_err = ',id_err
00505 CALL PSMILe_Flushstd
00506 #endif
00507 IF (id_err .ne. 0) PRINT *, '| | |WARNING: Pb in get_transi_details'
00508
00509
00510
00511
00512
00513 sla_driver_transi(:)%ig_comp_id = ib_c
00514 DO ib_nt = 1, iga_comp_nb_transi(ib_c)
00515 ib_a = il_ntr+ib_nt
00516
00517 sla_driver_transi(ib_nt)%ig_transi_id = ib_a
00518
00519 DO ib_nin= 1, sla_driver_transi(ib_nt)%sg_transi_in%ig_nb_in_orig
00520 sla_driver_transi(ib_nt)%sg_transi_in%sga_in_orig(ib_nin)%ig_transi_in_id &
00521 = il_npartinid + ib_nin
00522 ENDDO
00523 il_npartinid = il_npartinid + sla_driver_transi(ib_nt)%sg_transi_in%ig_nb_in_orig
00524
00525 DO ib_nout= 1, sla_driver_transi(ib_nt)%ig_nb_transi_out
00526 sla_driver_transi(ib_nt)%sga_transi_out(ib_nout)%ig_transi_out_id &
00527 = il_npartoutid + ib_nout
00528 ENDDO
00529 il_npartoutid = il_npartoutid + sla_driver_transi(ib_nt)%ig_nb_transi_out
00530 ENDDO
00531
00532
00533 sga_xml_smioc_transi (il_ntr+1:il_ntr+iga_comp_nb_transi(ib_c)) = &
00534 sla_driver_transi(:)
00535
00536
00537 iga_xml_comp_nb_transi(ib_c) = iga_comp_nb_transi(ib_c)
00538
00539
00540 DEALLOCATE (ila_comp_nb_stand_name, stat=id_err)
00541 IF (id_err > 0) THEN
00542 ierrp (1) = id_err
00543 id_err = 14
00544
00545 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_stand_name', &
00546 ierrp, 1, __FILE__, __LINE__ )
00547 RETURN
00548 ENDIF
00549 DEALLOCATE (ila_comp_nb_transi_in, stat=id_err)
00550 IF (id_err > 0) THEN
00551 ierrp (1) = id_err
00552 id_err = 14
00553
00554 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_in', &
00555 ierrp, 1, __FILE__, __LINE__ )
00556 RETURN
00557 ENDIF
00558 DEALLOCATE (ila_comp_nb_transi_out, stat=id_err)
00559 IF (id_err > 0) THEN
00560 ierrp (1) = id_err
00561 id_err = 14
00562
00563 CALL Psmile_Error_Common ( id_err, 'ila_comp_nb_transi_out', &
00564 ierrp, 1, __FILE__, __LINE__ )
00565 RETURN
00566 ENDIF
00567 DEALLOCATE (sla_driver_transi, stat=id_err)
00568 IF (id_err > 0) THEN
00569 ierrp (1) = id_err
00570 id_err = 14
00571
00572 CALL Psmile_Error_Common ( id_err, 'sla_driver_transi', &
00573 ierrp, 1, __FILE__, __LINE__ )
00574 RETURN
00575 ENDIF
00576
00577 il_ntr = il_ntr + iga_comp_nb_transi(ib_c)
00578
00579 END DO
00580
00581
00582
00583
00584 DO ib_ntt = 1, ig_nb_tot_transi
00585 DO ib_nout = 1, sga_xml_smioc_transi(ib_ntt)%ig_nb_transi_out
00586
00587 DO ib_ntt2 = 1, ig_nb_tot_transi
00588 DO ib_nin = 1, sga_xml_smioc_transi(ib_ntt2)%sg_transi_in%ig_nb_in_orig
00589
00590 #ifdef DEBUG
00591
00592 IF (TRIM(sga_xml_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00593 cg_transi_out_name) .EQ. trim(sga_xml_smioc_transi(ib_ntt2)% &
00594 sg_transi_in%sga_in_orig(ib_nin)%cg_orig_transi) .AND. &
00595 trim(sga_xml_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00596 cg_transi_in_name) .NE. trim(sga_xml_smioc_transi(ib_ntt)% &
00597 sga_transi_out(ib_nout)%cg_dest_transi)) THEN
00598 PRINT *, '| | | Incoherency in corresponding source and target XML info'
00599 PRINT *, '| | | for transient ', sga_xml_smioc_transi(ib_ntt)% &
00600 sga_transi_out(ib_nout)%cg_dest_transi
00601 CALL PSMILe_abort
00602 ENDIF
00603 IF (TRIM(sga_xml_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00604 cg_transi_out_name) .NE. trim(sga_xml_smioc_transi(ib_ntt2)% &
00605 sg_transi_in%sga_in_orig(ib_nin)%cg_orig_transi) .AND. &
00606 trim(sga_xml_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00607 cg_transi_in_name) .EQ. trim(sga_xml_smioc_transi(ib_ntt)% &
00608 sga_transi_out(ib_nout)%cg_dest_transi)) THEN
00609 PRINT *, '| | | Incoherency in corresponding source and target XML info'
00610 PRINT *, '| | | for transient ', sga_xml_smioc_transi(ib_ntt2)% &
00611 sg_transi_in%sga_in_orig(ib_nin)%cg_orig_transi
00612 CALL PSMILe_abort
00613 ENDIF
00614 #endif
00615 IF (trim(sga_xml_smioc_transi(ib_ntt)%sga_transi_out(ib_nout)% &
00616 cg_transi_out_name) .EQ. trim(sga_xml_smioc_transi(ib_ntt2)% &
00617 sg_transi_in%sga_in_orig(ib_nin)%cg_orig_transi) .AND. &
00618 trim(sga_xml_smioc_transi(ib_ntt2)%sg_transi_in%sga_in_orig(ib_nin)% &
00619 cg_transi_in_name) .EQ. trim(sga_xml_smioc_transi(ib_ntt)% &
00620 sga_transi_out(ib_nout)%cg_dest_transi)) THEN
00621
00622
00623 call trans_index( ig_nb_tot_comps, ib_ntt2, ib_c, ib)
00624
00625 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)% &
00626 lga_trin_orig(ib_nin) ) THEN
00627
00628 call trans_index( ig_nb_tot_comps, ib_ntt, ib_co, ib_o)
00629
00630 sga_comp_udef_idx(ib_co)%sla_driver_udef(ib_o)% &
00631 lga_trout(ib_nout) = .true.
00632 sga_comp_udef_idx(ib_co)%sla_driver_udef(ib_o)%lg_trans_ud = .true.
00633
00634 sga_comp_udef_idx(ib_co)%sla_driver_udef(ib_o)%cg_local_name = &
00635 sga_xml_smioc_transi(ib_ntt)%cg_local_name
00636 ENDIF
00637 ENDIF
00638
00639 ENDDO
00640 ENDDO
00641
00642 ENDDO
00643 ENDDO
00644
00645
00646
00647
00648
00649
00650
00651
00652 DO ib_c = 1, ig_nb_tot_comps
00653 iga_comp_nb_udef(ib_c) = 0
00654 sga_comp_udef_idx(ib_c)%ig_xml_udef = 0
00655 sga_comp_udef_idx(ib_c)%ig_tot_comp_ugl = 0
00656
00657 DO ib = 1, iga_comp_nb_transi(ib_c)
00658 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%lg_trans_ud ) THEN
00659
00660 sga_comp_udef_idx(ib_c)%ig_xml_udef = sga_comp_udef_idx(ib_c)%ig_xml_udef + 1
00661
00662 DO ib_i = 1, sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%ig_dim_orig
00663 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%lga_trin_orig(ib_i) ) THEN
00664 iga_comp_nb_udef(ib_c) = iga_comp_nb_udef(ib_c) + 1
00665 ENDIF
00666 ENDDO
00667 DO ib_o = 1, sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%ig_dim_out
00668 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%lga_trout(ib_o) ) THEN
00669 iga_comp_nb_udef(ib_c) = iga_comp_nb_udef(ib_c) + 1
00670 ENDIF
00671 ENDDO
00672 ENDIF
00673 ENDDO
00674 sga_comp_udef_idx(ib_c)%ig_tot_comp_ugl = iga_comp_nb_udef(ib_c)
00675 #ifdef DEBUG
00676 print *,' component ', ib_c,' ig_xml_udef = ',sga_comp_udef_idx(ib_c)%ig_xml_udef
00677 #endif
00678 ENDDO
00679 #ifdef DEBUG
00680 print *,' iga_comp_nb_udef(:) = ',iga_comp_nb_udef(:)
00681 #endif
00682
00683
00684
00685
00686
00687
00688
00689
00690
00691
00692
00693 DO ib_c = 1, ig_nb_tot_comps
00694
00695 ibxml = sga_comp_udef_idx(ib_c)%ig_xml_udef
00696 ALLOCATE (sga_comp_udef_idx(ib_c)%iga_trans_udef(ibxml), stat=id_err)
00697 IF (id_err > 0) THEN
00698 ierrp (1) = id_err
00699 ierrp (2) = iga_comp_nb_udef(ib_c)
00700 id_err = 13
00701 CALL Psmile_Error_Common ( id_err, 'iga_trans_udef', &
00702 ierrp, 2, __FILE__, __LINE__ )
00703 RETURN
00704 ENDIF
00705
00706 ALLOCATE (sga_comp_udef_idx(ib_c)%iga_xml_trindex(iga_comp_nb_udef(ib_c)), stat=id_err)
00707 IF (id_err > 0) THEN
00708 ierrp (1) = id_err
00709 ierrp (2) = iga_comp_nb_udef(ib_c)
00710 id_err = 13
00711 CALL Psmile_Error_Common ( id_err, 'iga_xml_trindex', &
00712 ierrp, 2, __FILE__, __LINE__ )
00713 RETURN
00714 ENDIF
00715
00716 ib_nt = 0
00717 DO ib = 1, iga_comp_nb_transi(ib_c)
00718 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%lg_trans_ud ) THEN
00719 ib_nt = ib_nt + 1
00720 sga_comp_udef_idx(ib_c)%iga_trans_udef(ib_nt) = ib
00721 ENDIF
00722 ENDDO
00723
00724
00725 ib_nt = 0
00726 DO ib = 1, iga_comp_nb_transi(ib_c)
00727 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%lg_trans_ud ) THEN
00728
00729
00730
00731 DO ib_i = 1, sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%ig_dim_orig
00732 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%lga_trin_orig(ib_i) ) THEN
00733 ib_nt = ib_nt + 1
00734 sga_comp_udef_idx(ib_c)%iga_xml_trindex(ib_nt) = ib
00735 ENDIF
00736 ENDDO
00737 DO ib_o = 1, sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%ig_dim_out
00738 IF ( sga_comp_udef_idx(ib_c)%sla_driver_udef(ib)%lga_trout(ib_o) ) THEN
00739 ib_nt = ib_nt + 1
00740 sga_comp_udef_idx(ib_c)%iga_xml_trindex(ib_nt) = ib
00741 ENDIF
00742 ENDDO
00743 ENDIF
00744 ENDDO
00745
00746 ENDDO
00747
00748 DEALLOCATE ( iga_comp_nb_stand_name, stat=id_err)
00749 IF (id_err > 0) THEN
00750 ierrp (1) = id_err
00751 id_err = 14
00752 CALL Psmile_Error_Common ( id_err, 'iga_comp_nb_stand_name', &
00753 ierrp, 1, __FILE__, __LINE__ )
00754 RETURN
00755 ENDIF
00756 DEALLOCATE (iga_comp_nb_transi_in, stat=id_err)
00757 IF (id_err > 0) THEN
00758 ierrp (1) = id_err
00759 id_err = 14
00760 CALL Psmile_Error_Common ( id_err, 'iga_comp_nb_transi_in', &
00761 ierrp, 2, __FILE__, __LINE__ )
00762 RETURN
00763 ENDIF
00764 DEALLOCATE (iga_comp_nb_transi_out, stat=id_err)
00765 IF (id_err > 0) THEN
00766 ierrp (1) = id_err
00767 id_err = 14
00768 CALL Psmile_Error_Common ( id_err, 'iga_comp_nb_transi_out', &
00769 ierrp, 2, __FILE__, __LINE__ )
00770 RETURN
00771 ENDIF
00772
00773
00774 ig_nb_tot_xml_transi = ig_nb_tot_transi
00775 PRINT *, '| | | Total Nb of XML transients ', ig_nb_tot_xml_transi
00776 PRINT *, '| | | * * * End of First Pass * * * '
00777
00778 ig_nb_tot_transi = 0
00779 iga_comp_nb_transi(:) = 0
00780
00781 ig_nb_tot_grids = 0
00782 iga_comp_nb_grids(:) = 0
00783
00784 RETURN
00785 END Subroutine PRISMDrv_get_udef_transients
00786
00787
00788
00789 Subroutine trans_index ( il_comp, il_g, ib_c, ib)
00790
00791 USE PSMILE_smioc, ONLY : iga_comp_nb_transi
00792
00793 IMPLICIT NONE
00794
00795
00796
00797
00798
00799
00800
00801
00802
00803
00804
00805
00806
00807
00808
00809 INTEGER, INTENT(IN) :: il_comp
00810 INTEGER, INTENT(IN) :: il_g
00811
00812 INTEGER, INTENT(OUT) :: ib_c
00813 INTEGER, INTENT(OUT) :: ib
00814
00815
00816
00817 INTEGER :: ncount, ncountprev
00818 INTEGER :: ic
00819
00820
00821 ncount = 0
00822 ncountprev = 0
00823
00824 ib_c = 0
00825 ib = 0
00826
00827 DO ic = 1, il_comp
00828 ncount = ncount + iga_comp_nb_transi(ic)
00829 ib_c = ib_c + 1
00830 IF ( il_g .LE. ncount .AND. il_g .GT. ncountprev ) exit
00831 ncountprev = ncount
00832 ENDDO
00833
00834 ib = il_g - ncountprev
00835
00836 #ifdef DEBUG
00837 print *," size of iga_comp_nb_transi = ", SIZE(iga_comp_nb_transi)
00838 print *, "trans_index : il_g ib_c ib = ", il_g, ib_c, ib
00839 #endif
00840
00841 RETURN
00842
00843 END Subroutine trans_index
00844
00845