00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009   SUBROUTINE get_transi_details ( id_XML_doc,  &
00010      id_nb_transi,       &
00011      sda_smioc_transi,   &
00012      id_comp,            &
00013      ld_userdef_details,   &
00014      id_error )     
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022     USE PSMILe_smioc
00023     IMPLICIT NONE
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034     INTEGER, INTENT(In) :: id_XML_doc
00035 
00036 
00037     INTEGER, INTENT(In) :: id_nb_transi
00038 
00039 
00040     TYPE(transient), DIMENSION(id_nb_transi), INTENT(InOut) :: sda_smioc_transi
00041 
00042 
00043     INTEGER, INTENT(In) :: id_comp
00044 
00045 
00046     LOGICAL, INTENT(In)  :: ld_userdef_details
00047                                                  
00048 
00049     INTEGER, INTENT(Out):: id_error 
00050 
00051 
00052     INTEGER :: ib, ib_bis, ib_nt, ib_xml, ib_xmlv, ib_xud
00053 
00054     INTEGER :: il_nb, il_nb_bis, il_nb_ter, il_nb_terbis
00055     INTEGER :: il_nb_qua, il_nb_cin, il_nb_six, il_nb_hep, il_nb_oct
00056     INTEGER :: il_nb_bisbis
00057     INTEGER :: il_xml_transi
00058     INTEGER :: il_dim_i, il_dim_o, il_ch, il_side
00059 
00060 
00061     logical :: ll_io
00062 
00063     CHARACTER(LEN=max_name) :: cla_char
00064 
00065     INTEGER :: sasa_c_get_attri_1st_level, sasa_c_get_attri_2nd_level
00066     INTEGER :: sasa_c_get_attri_3rd_level, sasa_c_get_attri_4th_level
00067     INTEGER :: sasa_c_get_attri_5th_level
00068     INTEGER :: sasa_c_get_number_3rd_level, sasa_c_get_number_4th_level 
00069     INTEGER :: sasa_c_get_number_5th_level
00070     INTEGER :: sasa_c_get_number_6th_level, sasa_c_get_number_7th_level
00071     INTEGER :: sasa_c_get_number_8th_level, sasa_c_get_number_9th_level
00072     INTEGER :: sasa_c_get_number_10th_level, sasa_c_get_number_11th_level
00073     INTEGER :: sasa_c_get_element_2nd_level_c
00074     INTEGER :: sasa_c_get_element_3rd_level_c 
00075     INTEGER :: sasa_c_get_element_3rd_level_i
00076     INTEGER :: sasa_c_get_element_3rd_level_d
00077     INTEGER :: sasa_c_get_element_4th_level_c, sasa_c_get_element_4th_level_i
00078     INTEGER :: sasa_c_get_element_6th_level_c, sasa_c_get_element_6th_level_i
00079     INTEGER :: sasa_c_get_element_6th_level_d
00080     INTEGER :: sasa_c_get_element_5th_level_c, sasa_c_get_element_5th_level_i
00081     INTEGER :: sasa_c_get_element_5th_level_d
00082     INTEGER :: sasa_c_get_element_7th_level_c, sasa_c_get_element_7th_level_i
00083     INTEGER :: sasa_c_get_element_8th_level_c
00084     INTEGER :: sasa_c_get_element_9th_level_c, sasa_c_get_element_9th_level_i
00085     INTEGER :: sasa_c_get_element_9th_level_d
00086     INTEGER :: sasa_c_get_element_10th_level_c, sasa_c_get_element_10th_level_i
00087     INTEGER :: sasa_c_get_element_10th_level_d
00088     INTEGER :: sasa_c_convert_char2int
00089 
00090     INTEGER :: il_test, il_length
00091     DOUBLE PRECISION :: dl_test
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 
00101 
00102     il_xml_transi = id_nb_transi 
00103 #ifdef DEBUG
00104     print *,"get_transi_details : ld_userdef_details = ", ld_userdef_details
00105     print *,"get_transi_details : il_xml_transi    = ", il_xml_transi
00106     print *,"get_transi_details : id_nb_transi     = ", id_nb_transi
00107     print *,"get_transi_details : nb udef transi   = ", iga_comp_nb_udef(id_comp)
00108 #endif
00109 
00110 
00111     DO ib =1, il_xml_transi
00112 
00113 
00114       id_error = &
00115          sasa_c_get_attri_2nd_level (id_XML_doc,                     &
00116          'component', 0, 'transient', ib, 'local_name',         &
00117          sda_smioc_transi(ib)%cg_local_name, il_length)
00118 
00119       id_error = &
00120          sasa_c_get_attri_2nd_level (id_XML_doc,                     &
00121          'component', 0, 'transient', ib, 'long_name',          &
00122          sda_smioc_transi(ib)%cg_long_name, il_length)
00123 
00124       id_error = &
00125          sasa_c_get_attri_1st_level (id_XML_doc,                     &
00126          'component', 0, 'local_name',                          &
00127          sda_smioc_transi(ib)%cg_comp_name, il_length)
00128 
00129       id_error = &
00130          sasa_c_get_number_3rd_level(id_XML_doc,                             &
00131          'component', 0, 'transient', ib, 'transient_standard_name',    &
00132          il_nb)
00133 
00134       DO ib_bis = 1, il_nb
00135 
00136         id_error = &
00137            sasa_c_get_element_2nd_level_c (id_XML_doc,                        &
00138            'component', 0, 'transient', ib, 'transient_standard_name',   &
00139            ib_bis, sda_smioc_transi(ib)%cga_stand_name(ib_bis), il_length)
00140 
00141       END DO
00142 
00143       id_error = &
00144          sasa_c_get_attri_3rd_level (id_XML_doc,                     &
00145          'component', 0, 'transient', ib, 'physics', 0,         &
00146          'transient_type', cla_char, il_length)
00147       sda_smioc_transi(ib)%ig_transi_type =                     &
00148          sasa_c_convert_char2int(cla_char(1:il_length))
00149 
00150       id_error = &
00151          sasa_c_get_element_3rd_level_c (id_XML_doc,                 &
00152          'component', 0, 'transient', ib, 'physics', 0,         &
00153          'physical_units', 0, sda_smioc_transi(ib)%cg_units, il_length)
00154 
00155       id_error = &
00156          sasa_c_get_element_3rd_level_d (id_XML_doc,                 &
00157          'component', 0, 'transient', ib, 'physics', 0,         &
00158          'valid_min', 0, sda_smioc_transi(ib)%dg_transi_min)
00159 
00160       id_error = &
00161          sasa_c_get_element_3rd_level_d (id_XML_doc,                 &
00162          'component', 0, 'transient', ib, 'physics', 0,         &
00163          'valid_max', 0, sda_smioc_transi(ib)%dg_transi_max)
00164 
00165       id_error = &
00166          sasa_c_get_element_3rd_level_i (id_XML_doc,                 &
00167          'component', 0, 'transient', ib, 'physics', 0,         &
00168          'nbr_bundles', 0, sda_smioc_transi(ib)%ig_nb_bndl)
00169       IF (sda_smioc_transi(ib)%ig_nb_bndl .eq. -280177) THEN
00170           sda_smioc_transi(ib)%ig_nb_bndl = 0
00171       END IF
00172 
00173       id_error = &
00174          sasa_c_get_attri_3rd_level (id_XML_doc,                     &
00175          'component', 0, 'transient', ib, 'numerics', 0,        &
00176          'datatype', cla_char, il_length)
00177       sda_smioc_transi(ib)%ig_datatype =                        &
00178          sasa_c_convert_char2int(cla_char(1:il_length))
00179 
00180 
00181 
00182 
00183 
00184 
00185 
00186 
00187 
00188 
00189 
00190 
00191 
00192 
00193 
00194 
00195 
00196 
00197 
00198 
00199 
00200 
00201 
00202 
00203 
00204 
00205 
00206 
00207 
00208 
00209 
00210 
00211 
00212 
00213 
00214 
00215 
00216 
00217 
00218 
00219 
00220 
00221       id_error = &
00222          sasa_c_get_number_6th_level(id_XML_doc,             &
00223          'component', 0, 'transient', ib, 'intent', 0,  &
00224          'input', 0, 'exchange_date', 0, 'period',           &
00225          il_nb)
00226 
00227 
00228       IF (il_nb .eq. 1) THEN
00229 
00230           sda_smioc_transi(ib)%sg_transi_in%ig_exch_date_type = PSMILe_period
00231 
00232           id_error = &
00233              sasa_c_get_element_6th_level_d (id_XML_doc,         &
00234              'component', 0, 'transient', ib, 'intent', 0,  &
00235              'input', 0, 'exchange_date', 0, 'period', 0,        &
00236              'second', 0, dl_test)
00237           sda_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%second= &
00238              dl_test
00239           id_error = &
00240              sasa_c_get_element_6th_level_i (id_XML_doc,         &
00241              'component', 0, 'transient', ib, 'intent', 0,  &
00242              'input', 0, 'exchange_date', 0, 'period', 0,        &
00243              'minute', 0,                                        &
00244              sda_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%minute)
00245 
00246           id_error = &
00247              sasa_c_get_element_6th_level_i (id_XML_doc,         &
00248              'component', 0, 'transient', ib, 'intent', 0,  &
00249              'input', 0, 'exchange_date', 0, 'period', 0,        &
00250              'hour', 0,                                          &
00251              sda_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%hour)
00252 
00253           id_error = &
00254              sasa_c_get_element_6th_level_i (id_XML_doc,         &
00255              'component', 0, 'transient', ib, 'intent', 0,  &
00256              'input', 0, 'exchange_date', 0, 'period', 0,        &
00257              'day', 0,                                           &
00258              sda_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%day)
00259 
00260           id_error = &
00261              sasa_c_get_element_6th_level_i (id_XML_doc,         &
00262              'component', 0, 'transient', ib, 'intent', 0,  &
00263              'input', 0, 'exchange_date', 0, 'period', 0,        &
00264              'month', 0,                                         &
00265              sda_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%month)
00266 
00267           id_error = &
00268              sasa_c_get_element_6th_level_i (id_XML_doc,         &
00269              'component', 0, 'transient', ib, 'intent', 0,  &
00270              'input', 0, 'exchange_date', 0, 'period', 0,        &
00271              'year', 0,                                          &
00272              sda_smioc_transi(ib)%sg_transi_in%sg_exch_date%sg_period%year)
00273 
00274       END IF
00275 
00276 
00277       id_error = &
00278          sasa_c_get_number_6th_level(id_XML_doc,             &
00279          'component', 0, 'transient', ib, 'intent', 0,  &
00280          'input', 0, 'exchange_date', 0, 'once',             & 
00281          il_nb)
00282 
00283 
00284       IF (il_nb .eq. 1) THEN
00285 
00286           sda_smioc_transi(ib)%sg_transi_in%ig_exch_date_type = &
00287              PSMILe_once
00288 
00289           PRINT *, '******************************************************'
00290           PRINT *, 'The once format for exchange date is not yet supported'
00291           PRINT *, '******************************************************'
00292           CALL PSMILe_Flushstd
00293 
00294           CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00295 
00296       END IF
00297 
00298 
00299       id_error = &
00300          sasa_c_get_number_6th_level(id_XML_doc,             &
00301          'component', 0, 'transient', ib, 'intent', 0,  &
00302          'input', 0, 'exchange_date', 0, 'precise_list',     & 
00303          il_nb)
00304 
00305 
00306       IF (il_nb .eq. 1) THEN
00307 
00308           sda_smioc_transi(ib)%sg_transi_in%ig_exch_date_type = &
00309              PSMILe_preciseday
00310 
00311           PRINT *, '**************************************************************'
00312           PRINT *, 'The precise_list format for exchange date is not yet supported'
00313           PRINT *, '**************************************************************'
00314           CALL PSMILe_Flushstd
00315 
00316           CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00317 
00318       END IF
00319 
00320 
00321       id_error = &
00322          sasa_c_get_number_6th_level(id_XML_doc,             &
00323          'component', 0, 'transient', ib, 'intent', 0,  &
00324          'input', 0, 'exchange_date', 0, 'date_list',        & 
00325          il_nb)
00326 
00327 
00328       IF (il_nb .eq. 1) THEN
00329 
00330           sda_smioc_transi(ib)%sg_transi_in%ig_exch_date_type = &
00331              PSMILe_list
00332 
00333           PRINT *, '******************************************************'
00334           PRINT *, 'The date_list format for exchange date is not yet supported'
00335           PRINT *, '******************************************************'
00336           CALL PSMILe_Flushstd
00337 
00338           CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00339 
00340       END IF
00341 
00342 
00343       id_error = &
00344          sasa_c_get_number_6th_level(id_XML_doc,                &
00345          'component', 0, 'transient', ib, 'intent', 0,     &
00346          'input', 0, 'exchange_date', 0, 'lastdayinmonth',      &
00347          il_nb)
00348 
00349 
00350       IF (il_nb .eq. 1) THEN
00351 
00352           sda_smioc_transi(ib)%sg_transi_in%ig_exch_date_type = &
00353              PSMILe_lastdayinmo
00354 
00355           PRINT *, '****************************************************************'
00356           PRINT *, 'The lastdayinmonth format for exchange date is not yet supported'
00357           PRINT *, '****************************************************************'
00358           CALL PSMILe_Flushstd
00359 
00360           CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00361 
00362       END IF
00363 
00364 
00365       id_error = &
00366          sasa_c_get_element_4th_level_c (id_XML_doc,         &
00367          'component', 0, 'transient', ib, 'intent', 0,  &
00368          'input', 0, 'debug_mode', 0, cla_char, il_length)
00369       sda_smioc_transi(ib)%sg_transi_in%ig_debugmode = &
00370          sasa_c_convert_char2int(cla_char(1:il_length))
00371 
00372       ll_io = .FALSE.
00373 #ifdef __PSMILE_WITH_IO
00374       ll_io = .TRUE.
00375 #endif
00376       IF (sda_smioc_transi(ib)%sg_transi_in%ig_debugmode .EQ. PSMILe_true &
00377          .AND. .NOT. ll_io) THEN
00378           PRINT *, '***************************************************'
00379           PRINT *, 'The PSMILe is asked to perform I/O for debug mode'
00380           PRINT *, 'but it is compiled without __PSMILE_WITH_IO CPP key'
00381           PRINT *, 'Calling MPI_Abort'
00382           PRINT *, '***************************************************'
00383           CALL PSMILe_Flushstd
00384           
00385           CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00386       ENDIF
00387 
00388       id_error = &
00389          sasa_c_get_element_5th_level_c (id_XML_doc,         &
00390          'component', 0, 'transient', ib, 'intent', 0,  &
00391          'input', 0, 'target_transformation', 0,             &
00392          'target_time_operation', 0, cla_char, il_length)
00393       sda_smioc_transi(ib)%sg_transi_in%ig_tgt_timeop = &
00394          sasa_c_convert_char2int(cla_char(1:il_length))
00395 
00396 
00397       id_error = &
00398          sasa_c_get_number_6th_level(id_XML_doc,                         &
00399          'component', 0, 'transient', ib, 'intent', 0, 'input', 0,  &
00400          'target_transformation', 0, 'target_local_transformation',      &
00401          il_nb)
00402 
00403       IF (il_nb .eq. 1) THEN
00404 
00405           id_error = &
00406              sasa_c_get_element_6th_level_i (id_XML_doc,                      &
00407              'component', 0, 'transient', ib, 'intent', 0, 'input', 0,   &
00408              'target_transformation', 0, 'target_local_transformation', 0,    &
00409              'mult_scalar', 0, il_test)
00410           if ( il_test /= - 280177 ) then
00411               sda_smioc_transi(ib)%sg_transi_in%sg_tgt_local_trans% &
00412                  dg_mult_scalar=il_test
00413           endif
00414 
00415           id_error = &
00416              sasa_c_get_element_6th_level_i (id_XML_doc,                    &
00417              'component', 0, 'transient', ib, 'intent', 0, 'input', 0, &
00418              'target_transformation', 0, 'target_local_transformation', 0,  &
00419              'add_scalar', 0, il_test)
00420           if ( il_test /= - 280177 ) then
00421               sda_smioc_transi(ib)%sg_transi_in%sg_tgt_local_trans% &
00422                  dg_add_scalar = il_test
00423           endif
00424 
00425           id_error = &
00426              sasa_c_get_element_6th_level_c (id_XML_doc,                    &
00427              'component', 0, 'transient', ib, 'intent', 0, 'input', 0, &
00428              'target_transformation', 0, 'target_local_transformation', 0,  &
00429              'gathering', 0, cla_char, il_length)
00430           sda_smioc_transi(ib)%sg_transi_in%sg_tgt_local_trans%ig_gather = &
00431              sasa_c_convert_char2int(cla_char(1:il_length))
00432 
00433       END IF
00434 
00435 
00436       sda_smioc_transi(ib)%sg_transi_in%iga_stats = 0
00437       id_error = &
00438          sasa_c_get_number_6th_level (id_XML_doc,                           &
00439          'component', 0, 'transient', ib, 'intent', 0, 'input', 0,     &
00440          'target_transformation', 0, 'statistics', il_nb)
00441 
00442       IF (il_nb .eq. 1) THEN
00443 
00444           id_error = &
00445              sasa_c_get_number_7th_level (id_XML_doc,                        &
00446              'component', 0, 'transient', ib, 'intent', 0, 'input', 0,  &
00447              'target_transformation', 0, 'statistics', 0,                    &
00448              'masked_points', il_nb_bis)
00449 
00450           IF (il_nb_bis .eq. 1) THEN
00451               id_error = &
00452               sasa_c_get_element_6th_level_c (id_XML_doc,                    &
00453              'component', 0, 'transient', ib, 'intent', 0, 'input', 0,  &
00454              'target_transformation', 0, 'statistics', 0,                    &
00455              'masked_points', 0, cla_char, il_length)
00456              sda_smioc_transi(ib)%sg_transi_in%iga_stats(1) = &
00457              sasa_c_convert_char2int(cla_char(1:il_length))
00458           END IF
00459 
00460           id_error = &
00461              sasa_c_get_number_7th_level (id_XML_doc,                        &
00462              'component', 0, 'transient', ib, 'intent', 0, 'input', 0,  &
00463              'target_transformation', 0, 'statistics', 0,                    &
00464              'notmasked_points', il_nb_bis)
00465 
00466           IF (il_nb_bis .eq. 1) THEN
00467               id_error = &
00468               sasa_c_get_element_6th_level_c (id_XML_doc,                    &
00469              'component', 0, 'transient', ib, 'intent', 0, 'input', 0,  &
00470              'target_transformation', 0, 'statistics', 0,                    &
00471              'notmasked_points', 0, cla_char, il_length)
00472              sda_smioc_transi(ib)%sg_transi_in%iga_stats(2) = &
00473              sasa_c_convert_char2int(cla_char(1:il_length))
00474           END IF
00475 
00476           id_error = &
00477              sasa_c_get_number_7th_level (id_XML_doc,                        &
00478              'component', 0, 'transient', ib, 'intent', 0, 'input', 0,  &
00479              'target_transformation', 0, 'statistics', 0,                    &
00480              'all_points', il_nb_bis)
00481 
00482           IF (il_nb_bis .eq. 1) THEN
00483               id_error = &
00484               sasa_c_get_element_6th_level_c (id_XML_doc,                    &
00485              'component', 0, 'transient', ib, 'intent', 0, 'input', 0,  &
00486              'target_transformation', 0, 'statistics', 0,                    &
00487              'all_points', 0, cla_char, il_length)
00488              sda_smioc_transi(ib)%sg_transi_in%iga_stats(3) = &
00489              sasa_c_convert_char2int(cla_char(1:il_length))
00490           END IF
00491 
00492       END IF
00493 
00494 
00495       id_error = &
00496          sasa_c_get_number_5th_level(id_XML_doc,             &
00497          'component', 0, 'transient', ib, 'intent', 0,  &
00498          'input', 0, 'origin',                               &
00499          sda_smioc_transi(ib)%sg_transi_in%ig_nb_in_orig)
00500 
00501 
00502       DO ib_bis = 1, sda_smioc_transi(ib)%sg_transi_in%ig_nb_in_orig
00503 
00504         id_error = &
00505            sasa_c_get_attri_5th_level (id_XML_doc,             &
00506            'component', 0, 'transient', ib, 'intent', 0,  &
00507            'input', 0, 'origin', ib_bis, 'transi_in_name',     &
00508            sda_smioc_transi(ib)%sg_transi_in%                  &
00509            sga_in_orig(ib_bis)%cg_transi_in_name, il_length)
00510 
00511         id_error = &
00512            sasa_c_get_element_5th_level_c (id_XML_doc,                  &
00513            'component', 0, 'transient', ib, 'intent', 0,           &
00514            'input', 0, 'origin', ib_bis, 'corresp_transi_out_name', 0,  &
00515            sda_smioc_transi(ib)%sg_transi_in%                           &
00516            sga_in_orig(ib_bis)%cg_orig_transi, il_length)
00517 
00518 
00519         id_error = &
00520            sasa_c_get_number_6th_level(id_XML_doc,                    &
00521            'component', 0, 'transient', ib, 'intent', 0    ,     &
00522            'input', 0, 'origin', ib_bis, 'component_name', il_nb_bis)
00523 
00524         id_error = &
00525            sasa_c_get_number_6th_level(id_XML_doc,              &
00526            'component', 0, 'transient', ib, 'intent', 0,   &
00527            'input', 0, 'origin', ib_bis, 'file', il_nb_ter)
00528 
00529         IF ((il_nb_bis .eq. 1) .and. (il_nb_ter .eq. 1)) THEN
00530 
00531             PRINT *, '**********************************************'
00532             PRINT *, 'The origin can not be a component and a file !'
00533             PRINT *, '**********************************************'
00534             CALL PSMILe_Flushstd
00535 
00536             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00537 
00538         ELSE IF (il_nb_bis .eq. 1) THEN
00539 
00540             sda_smioc_transi(ib)%sg_transi_in%             &
00541                sga_in_orig(ib_bis)%ig_orig_type = PSMILe_comp
00542 
00543             id_error = &
00544                sasa_c_get_element_5th_level_c (id_XML_doc,        &
00545                'component', 0, 'transient', ib, 'intent', 0, &
00546                'input', 0, 'origin', ib_bis, 'component_name', 0, &
00547                sda_smioc_transi(ib)%sg_transi_in%                 &
00548                sga_in_orig(ib_bis)%cg_orig_comp_name, il_length)
00549 
00550         ELSE IF (il_nb_ter .eq. 1) THEN
00551             ll_io = .false.
00552 #ifdef __PSMILE_WITH_IO
00553             ll_io = .TRUE.
00554 #endif
00555             IF (.NOT. ll_io) THEN
00556                 PRINT *, '***************************************************'
00557                 PRINT *, 'The PSMILe is asked to perform Input from file'
00558                 PRINT *, 'but it is compiled without __PSMILE_WITH_IO CPP key'
00559                 PRINT *, 'Calling MPI_Abort'
00560                 PRINT *, '***************************************************'
00561                 CALL PSMILe_Flushstd
00562 
00563                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00564             ENDIF
00565 
00566             sda_smioc_transi(ib)%sg_transi_in%             &
00567                sga_in_orig(ib_bis)%ig_orig_type = PSMILe_file
00568 
00569             il_length = 0
00570             id_error = &
00571                sasa_c_get_element_6th_level_c (id_XML_doc,         &
00572                'component', 0, 'transient', ib, 'intent', 0,  &
00573                'input', 0, 'origin', ib_bis, 'file', 0,            &
00574                'name', 0, sda_smioc_transi(ib)%sg_transi_in%       &
00575                sga_in_orig(ib_bis)%sg_orig_file%cg_file_name, il_length)  
00576             IF (il_length == 0) THEN
00577                 PRINT *, '*******************************************'
00578                 PRINT *, 'a name must be specified for each file     '
00579                 PRINT *, '*******************************************'
00580                 CALL PSMILe_Flushstd
00581                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00582             ENDIF
00583 
00584             il_length = 0
00585             id_error = &
00586                sasa_c_get_element_6th_level_c (id_XML_doc,         &
00587                'component', 0, 'transient', ib, 'intent', 0,  &
00588                'input', 0, 'origin', ib_bis, 'file', 0,            &
00589                'format', 0, cla_char, il_length)
00590             IF (il_length == 0) THEN
00591                 PRINT *, '*******************************************'
00592                 PRINT *, 'a format must be specified for each file     '
00593                 PRINT *, '*******************************************'
00594                 CALL PSMILe_Flushstd
00595                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00596             ENDIF
00597             sda_smioc_transi(ib)%sg_transi_in%                   &
00598                sga_in_orig(ib_bis)%sg_orig_file%ig_file_format = &
00599                sasa_c_convert_char2int(cla_char(1:il_length))          
00600 
00601             id_error = &
00602                sasa_c_get_element_6th_level_c (id_XML_doc,         &
00603                'component', 0, 'transient', ib, 'intent', 0,  &
00604                'input', 0, 'origin', ib_bis, 'file', 0,            &
00605                'suffix', 0, cla_char, il_length)
00606             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00607                sg_orig_file%ig_suffix = sasa_c_convert_char2int(cla_char(1:il_length))
00608             IF (sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00609                sg_orig_file%ig_suffix .eq. -280177)                         &
00610                sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)%  &
00611                sg_orig_file%ig_suffix = 0
00612 
00613             il_length = 0
00614             id_error = &
00615                sasa_c_get_element_6th_level_c (id_XML_doc,         &
00616                'component', 0, 'transient', ib, 'intent', 0,  &
00617                'input', 0, 'origin', ib_bis, 'file', 0,            &
00618                'io_mode', 0, cla_char, il_length)
00619             IF (il_length == 0) THEN
00620 #ifdef VERBOSE
00621                 PRINT *, '************************************************************'
00622                 PRINT *, 'no io_mode for file; default value iosingle will be used    '
00623                 PRINT *, '************************************************************'
00624 #endif
00625                 sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00626                    sg_orig_file%ig_file_iomode = 3825
00627             ELSE
00628                 sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00629                    sg_orig_file%ig_file_iomode = &
00630                    sasa_c_convert_char2int(cla_char(1:il_length))
00631             ENDIF
00632             id_error = &
00633                sasa_c_get_element_6th_level_i (id_XML_doc,         &
00634                'component', 0, 'transient', ib, 'intent', 0,  &
00635                'input', 0, 'origin', ib_bis, 'file', 0,            &
00636                'packing', 0,                                    &
00637                sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00638                sg_orig_file%ig_file_pack)  
00639 
00640             id_error = &
00641                sasa_c_get_element_6th_level_d (id_XML_doc,         &
00642                'component', 0, 'transient', ib, 'intent', 0,       &
00643                'input', 0, 'origin', ib_bis, 'file', 0,            &
00644                'scaling', 0, sda_smioc_transi(ib)%sg_transi_in%    &
00645                sga_in_orig(ib_bis)%sg_orig_file%dg_file_scal)
00646 
00647             id_error = &
00648                sasa_c_get_element_6th_level_d (id_XML_doc,         &
00649                'component', 0, 'transient', ib, 'intent', 0,       &
00650                'input', 0, 'origin', ib_bis, 'file', 0,            &
00651                'adding', 0, sda_smioc_transi(ib)%sg_transi_in%     &
00652                sga_in_orig(ib_bis)%sg_orig_file%dg_file_add)
00653 
00654             id_error = &
00655                sasa_c_get_element_6th_level_d (id_XML_doc,         &
00656                'component', 0, 'transient', ib, 'intent', 0,       &
00657                'input', 0, 'origin', ib_bis, 'file', 0,            &
00658                'fill_value', 0, dl_test)
00659 
00660             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00661                sg_orig_file%dg_fill_val = dl_test 
00662 
00663         ELSE
00664 
00665             PRINT *, '******************************************'
00666             PRINT *, 'The origin must be a component or a file !'
00667             PRINT *, '******************************************'
00668             CALL PSMILe_Flushstd
00669 
00670             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00671 
00672         END IF
00673 
00674 
00675 
00676 
00677 
00678 
00679 
00680 
00681 
00682 
00683 
00684 
00685 
00686 
00687 
00688 
00689 
00690 
00691 
00692 
00693 
00694 
00695 
00696 
00697 
00698 
00699 
00700 
00701 
00702 
00703 
00704 
00705 
00706 
00707 
00708 
00709 
00710 
00711 
00712 
00713 
00714 
00715 
00716 
00717 
00718 
00719 
00720 
00721 
00722 
00723 
00724 
00725 
00726 
00727 
00728 
00729 
00730 
00731 
00732 
00733 
00734 
00735 
00736 
00737 
00738 
00739 
00740 
00741 
00742 
00743 
00744 
00745 
00746 
00747 
00748 
00749 
00750 
00751 
00752 
00753 
00754 
00755 
00756 
00757 
00758 
00759 
00760 
00761 
00762 
00763 
00764 
00765 
00766 
00767 
00768 
00769 
00770 
00771 
00772 
00773 
00774 
00775 
00776 
00777 
00778 
00779 
00780 
00781 
00782 
00783 
00784 
00785 
00786 
00787 
00788 
00789 
00790         id_error = &
00791            sasa_c_get_number_7th_level(id_XML_doc,                    &
00792            'component', 0, 'transient', ib, 'intent', 0,         &
00793            'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00794            'conservation', il_nb_bis)
00795 
00796         IF (il_nb_bis .EQ. 1) THEN
00797             id_error = &
00798                sasa_c_get_element_6th_level_c (id_XML_doc,                  &
00799                'component', 0, 'transient', ib, 'intent', 0,           &
00800                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,    &
00801                'conservation', 0, cla_char, il_length)
00802             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)%ig_conserv = &
00803                sasa_c_convert_char2int(cla_char(1:il_length))
00804         ENDIF
00805 
00806 
00807         id_error = &
00808            sasa_c_get_number_7th_level(id_XML_doc,                    &
00809            'component', 0, 'transient', ib, 'intent', 0,         &
00810            'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00811            'algebraic_combination', il_nb_bis)
00812 
00813         IF (il_nb_bis .eq. 1) THEN
00814 
00815             id_error = &
00816                sasa_c_get_element_7th_level_c (id_XML_doc,                &
00817                'component', 0, 'transient', ib, 'intent', 0,         &
00818                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00819                'algebraic_combination', 0,                                &
00820                'name', 0, sda_smioc_transi(ib)%sg_transi_in%              &
00821                sga_in_orig(ib_bis)%sg_combi%cg_combi_name, il_length)          
00822 
00823             id_error = &
00824                sasa_c_get_element_7th_level_i (id_XML_doc,                &
00825                'component', 0, 'transient', ib, 'intent', 0,         &
00826                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00827                'algebraic_combination', 0,                                &
00828                'comb_parameter', 0, il_test)
00829             sda_smioc_transi(ib)%sg_transi_in%             &
00830                sga_in_orig(ib_bis)%sg_combi%dg_combi_param = il_test
00831 
00832             id_error = &
00833                sasa_c_get_element_7th_level_c (id_XML_doc,                &
00834                'component', 0, 'transient', ib, 'intent', 0,         &
00835                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00836                'algebraic_combination', 0,                                &
00837                'comb_method', 0,  cla_char, il_length)
00838             sda_smioc_transi(ib)%sg_transi_in%                &
00839                sga_in_orig(ib_bis)%sg_combi%ig_combi_meth =   &
00840                sasa_c_convert_char2int(cla_char(1:il_length))
00841 
00842             id_error = &
00843                sasa_c_get_element_7th_level_c (id_XML_doc,                &
00844                'component', 0, 'transient', ib, 'intent', 0,         &
00845                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00846                'algebraic_combination', 0,                                &
00847                'operand', 0,  cla_char, il_length)
00848             sda_smioc_transi(ib)%sg_transi_in%                &
00849                sga_in_orig(ib_bis)%sg_combi%ig_operand =      &
00850                sasa_c_convert_char2int(cla_char(1:il_length))
00851 
00852             id_error = &
00853                sasa_c_get_element_7th_level_i (id_XML_doc,                &
00854                'component', 0, 'transient', ib, 'intent', 0,         &
00855                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00856                'algebraic_combination', 0,                                &
00857                'scalar', 0, il_test)
00858             sda_smioc_transi(ib)%sg_transi_in%             &
00859                sga_in_orig(ib_bis)%sg_combi%dg_scalar = il_test
00860 
00861 
00862 
00863             sda_smioc_transi(ib)%sg_transi_in%             &
00864                sga_in_orig(ib_bis)%sg_combi%ig_mask_type = -280177
00865 
00866             id_error = &
00867                sasa_c_get_number_8th_level(id_XML_doc,                    &
00868                'component', 0, 'transient', ib, 'intent', 0,         &
00869                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00870                'algebraic_combination', 0, 'source_variable_mask', il_nb_ter)
00871 
00872             id_error = &
00873                sasa_c_get_number_8th_level(id_XML_doc,                    &
00874                'component', 0, 'transient', ib, 'intent', 0,         &
00875                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
00876                'algebraic_combination', 0, 'external_mask', il_nb_qua)
00877 
00878             IF ((il_nb_ter .eq. 1) .and. (il_nb_qua .eq. 1)) THEN
00879 
00880                 PRINT *, '**********************************************************'
00881                 PRINT *, 'The mask can not be external_mask and source_variable_mask'
00882                 PRINT *, '**********************************************************'
00883                 CALL PSMILe_Flushstd
00884 
00885                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00886 
00887 
00888             ELSE IF (il_nb_ter .eq. 1) THEN
00889 
00890                 sda_smioc_transi(ib)%sg_transi_in%             &
00891                    sga_in_orig(ib_bis)%sg_combi%ig_mask_type = 3610
00892 
00893 
00894             ELSE IF (il_nb_qua .eq. 1) THEN
00895 
00896                 sda_smioc_transi(ib)%sg_transi_in%             &
00897                    sga_in_orig(ib_bis)%sg_combi%ig_mask_type = 3611
00898 
00899                 id_error = &
00900                    sasa_c_get_element_8th_level_c (id_XML_doc,      &
00901                    'component', 0, 'transient', ib, 'intent', 0,    &
00902                    'input', 0, 'origin', ib_bis,                    &
00903                    'middle_transformation', 0,                      &
00904                    'algebraic_combination', 0, 'external_mask', 0,  &
00905                    'name', 0, sda_smioc_transi(ib)%sg_transi_in%    &
00906                    sga_in_orig(ib_bis)%sg_combi%cg_ext_mask_name, il_length)
00907 
00908 
00909                 il_length = 0
00910                 id_error = &
00911                    sasa_c_get_element_8th_level_c (id_XML_doc,      &
00912                    'component', 0, 'transient', ib, 'intent', 0,    &
00913                    'input', 0, 'origin', ib_bis,                    &
00914                    'middle_transformation', 0,                      &
00915                    'algebraic_combination', 0, 'external_mask', 0,  &
00916                    'file', 0,                                       &
00917                    'name', 0, sda_smioc_transi(ib)%sg_transi_in%    &
00918                    sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%cg_file_name,&
00919                    il_length)
00920                 IF (il_length == 0) THEN
00921                     PRINT *, '*******************************************'
00922                     PRINT *, 'a name must be specified for each file     '
00923                     PRINT *, '*******************************************'
00924                     CALL PSMILe_Flushstd
00925                     CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00926                 ENDIF
00927 
00928                 il_length = 0
00929                 id_error = &
00930                    sasa_c_get_element_9th_level_c (id_XML_doc,      &
00931                    'component', 0, 'transient', ib, 'intent', 0,    &
00932                    'input', 0, 'origin', ib_bis,                    &
00933                    'middle_transformation', 0,                      &
00934                    'algebraic_combination', 0, 'external_mask', 0,  &
00935                    'file', 0,                                       &
00936                    'format', 0, cla_char, il_length)
00937                 IF (il_length == 0) THEN
00938                     PRINT *, '*******************************************'
00939                     PRINT *, 'a format must be specified for each file     '
00940                     PRINT *, '*******************************************'
00941                     CALL PSMILe_Flushstd
00942                     CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
00943                 ENDIF
00944                 sda_smioc_transi(ib)%sg_transi_in%       &
00945                    sga_in_orig(ib_bis)%sg_combi%         &
00946                    sg_ext_mask_file%ig_file_format =     &
00947                    sasa_c_convert_char2int(cla_char(1:il_length))          
00948 
00949                 id_error = &
00950                    sasa_c_get_element_9th_level_c (id_XML_doc,      &
00951                    'component', 0, 'transient', ib, 'intent', 0,    &
00952                    'input', 0, 'origin', ib_bis,                    &
00953                    'middle_transformation', 0,                      &
00954                    'algebraic_combination', 0, 'external_mask', 0,  &
00955                    'file', 0,                                       &
00956                    'suffix', 0, cla_char, il_length)
00957                 sda_smioc_transi(ib)%sg_transi_in%                         &
00958                    sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%          &
00959                    ig_suffix = sasa_c_convert_char2int(cla_char(1:il_length))
00960                 IF (sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
00961                    sg_combi%sg_ext_mask_file%ig_suffix .eq. -280177)            &
00962                    sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)%  &
00963                    sg_combi%sg_ext_mask_file%ig_suffix = 0
00964 
00965                 il_length = 0
00966                 id_error = &
00967                    sasa_c_get_element_9th_level_c (id_XML_doc,      &
00968                    'component', 0, 'transient', ib, 'intent', 0,    &
00969                    'input', 0, 'origin', ib_bis,                    &
00970                    'middle_transformation', 0,                      &
00971                    'algebraic_combination', 0, 'external_mask', 0,  &
00972                    'file', 0,                                       &
00973                    'io_mode', 0, cla_char, il_length)
00974                 IF (il_length == 0) THEN
00975 #ifdef VERBOSE
00976                     PRINT *, '************************************************************'
00977                     PRINT *, 'no io_mode for file; default value iosingle will be used    '
00978                     PRINT *, '************************************************************'
00979 #endif
00980                     sda_smioc_transi(ib)%sg_transi_in%                         &
00981                        sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%          &
00982                        ig_file_iomode = 3825
00983                 ELSE
00984                     sda_smioc_transi(ib)%sg_transi_in%                         &
00985                        sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%          &
00986                        ig_file_iomode = &
00987                        sasa_c_convert_char2int(cla_char(1:il_length))
00988                 ENDIF
00989 
00990                 id_error = &
00991                    sasa_c_get_element_9th_level_i (id_XML_doc,      &
00992                    'component', 0, 'transient', ib, 'intent', 0,    &
00993                    'input', 0, 'origin', ib_bis,                    &
00994                    'middle_transformation', 0,                      &
00995                    'algebraic_combination', 0, 'external_mask', 0,  &
00996                    'file', 0,                                       &
00997                    'packing', 0, sda_smioc_transi(ib)%sg_transi_in% &
00998                    sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%   &
00999                    ig_file_pack)  
01000 
01001                 id_error = &
01002                    sasa_c_get_element_9th_level_d (id_XML_doc,      &
01003                    'component', 0, 'transient', ib, 'intent', 0,    &
01004                    'input', 0, 'origin', ib_bis,                    &
01005                    'middle_transformation', 0,                      &
01006                    'algebraic_combination', 0, 'external_mask', 0,  &
01007                    'file', 0,                                       &
01008                    'scaling', 0, sda_smioc_transi(ib)%sg_transi_in% &
01009                    sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%   &
01010                    dg_file_scal) 
01011 
01012                 id_error = &
01013                    sasa_c_get_element_9th_level_d (id_XML_doc,      &
01014                    'component', 0, 'transient', ib, 'intent', 0,    &
01015                    'input', 0, 'origin', ib_bis,                    &
01016                    'middle_transformation', 0,                      &
01017                    'algebraic_combination', 0, 'external_mask', 0,  &
01018                    'file', 0,                                       &
01019                    'adding', 0, sda_smioc_transi(ib)%sg_transi_in%  &
01020                    sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%   &
01021                    dg_file_add)
01022 
01023                 id_error = &
01024                    sasa_c_get_element_9th_level_d (id_XML_doc,      &
01025                    'component', 0, 'transient', ib, 'intent', 0,    &
01026                    'input', 0, 'origin', ib_bis,                    &
01027                    'middle_transformation', 0,                      &
01028                    'algebraic_combination', 0, 'external_mask', 0,  &
01029                    'file', 0,                                       &
01030                    'fill_value', 0, sda_smioc_transi(ib)%sg_transi_in% &
01031                    sga_in_orig(ib_bis)%sg_combi%sg_ext_mask_file%   &
01032                    dg_fill_val)
01033 
01034             END IF
01035 
01036         END IF
01037 
01038 
01039         id_error = &
01040            sasa_c_get_number_7th_level(id_XML_doc,                    &
01041            'component', 0, 'transient', ib, 'intent', 0,         &
01042            'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
01043            'interpolation', il_nb_bis)
01044 
01045         IF (il_nb_bis .eq. 1) THEN
01046 
01047             id_error = &
01048                sasa_c_get_number_8th_level(id_XML_doc,                    &
01049                'component', 0, 'transient', ib, 'intent', 0,         &
01050                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
01051                'interpolation', 0, 'interp3D', il_nb_ter)
01052 
01053 
01054             id_error = &
01055                sasa_c_get_number_8th_level(id_XML_doc,                    &
01056                'component', 0, 'transient', ib, 'intent', 0,         &
01057                'input', 0, 'origin', ib_bis, 'middle_transformation', 0,  &
01058                'interpolation', 0, 'interp2D', il_nb_terbis)
01059 
01060 
01061 
01062 
01063 
01064 
01065 
01066 
01067 
01068 
01069 
01070 
01071             IF (il_nb_ter + il_nb_terbis .GT. 1) THEN
01072                 PRINT *, '********************************************'
01073                 PRINT *, 'Interpolation must be 3D or 2D1D !'
01074                 PRINT *, '********************************************'
01075                 CALL PSMILe_Flushstd
01076 
01077                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01078 
01079             END IF
01080 
01081 
01082             IF (il_nb_ter .eq. 1) THEN
01083 
01084                 sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01085                    sg_interp%ig_interp_type = PSMILe_3D
01086 
01087 
01088                 id_error = &
01089                    sasa_c_get_number_9th_level(id_XML_doc,                   &
01090                    'component', 0, 'transient', ib, 'intent', 0,        &
01091                    'input', 0, 'origin', ib_bis, 'middle_transformation', 0, &
01092                    'interpolation', 0, 'interp3D', 0, 'nneighbour3D',        &
01093                    il_nb_qua)
01094 
01095 
01096                 id_error = &
01097                    sasa_c_get_number_9th_level(id_XML_doc,                   &
01098                    'component', 0, 'transient', ib, 'intent', 0,        &
01099                    'input', 0, 'origin', ib_bis, 'middle_transformation', 0, &
01100                    'interpolation', 0, 'interp3D', 0, 'trilinear', il_nb_cin)
01101 
01102 
01103                 id_error = &
01104                    sasa_c_get_number_9th_level(id_XML_doc,                   &
01105                    'component', 0, 'transient', ib, 'intent', 0,        &
01106                    'input', 0, 'origin', ib_bis, 'middle_transformation', 0, &
01107                    'interpolation', 0, 'interp3D', 0, 'conservativ3D', il_nb_six)
01108 
01109 
01110                 id_error = &
01111                    sasa_c_get_number_9th_level(id_XML_doc,                   &
01112                    'component', 0, 'transient', ib, 'intent', 0,        &
01113                    'input', 0, 'origin', ib_bis, 'middle_transformation', 0, &
01114                    'interpolation', 0, 'interp3D', 0, 'user3D', il_nb_hep)
01115 
01116 
01117 
01118                 IF (il_nb_qua + il_nb_cin + il_nb_six + il_nb_hep .gt. 1) THEN
01119 
01120                     PRINT *, '*************************************************'
01121                     PRINT *, 'Only one 3D interpolation method can be chosen ! '
01122                     PRINT *, '*************************************************'
01123                     CALL PSMILe_Flushstd
01124 
01125                     CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01126 
01127                 END IF
01128 
01129 
01130                 IF (il_nb_qua .EQ. 1) THEN
01131 
01132                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01133                        sg_interp%iga_interp_meth(1) = PSMILe_nnghbr3D
01134                     il_length = 0
01135                     id_error = &
01136                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01137                        'component', 0, 'transient', ib, 'intent', 0,    &
01138                        'input', 0, 'origin', ib_bis,                    &
01139                        'middle_transformation', 0, 'interpolation', 0,  &
01140                        'interp3D', 0, 'nneighbour3D', 0,                &
01141                        'para_search', 0, cla_char, il_length)
01142                     IF (il_length == 0) THEN
01143 #ifdef VERBOSE
01144                         PRINT *, '*******************************************'
01145                         PRINT *, 'Type of search for nneighbour3D  missing '
01146                         PRINT *, 'Default value PSMILe_global will be used   '
01147                         PRINT *, '*******************************************'
01148 #endif
01149                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01150                            sg_interp%iga_arg3(1)=PSMILe_global
01151                     ELSE
01152                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01153                            sg_interp%iga_arg3(1)= &
01154                            sasa_c_convert_char2int(cla_char(1:il_length))
01155                     ENDIF
01156                     id_error = &
01157                        sasa_c_get_number_10th_level(id_XML_doc,      &
01158                        'component', 0, 'transient', ib, 'intent', 0,    &
01159                        'input', 0, 'origin', ib_bis,                    &
01160                        'middle_transformation', 0, 'interpolation', 0,  &
01161                        'interp3D', 0, 'nneighbour3D', 0,                &
01162                        'nbr_neighbours', il_nb)
01163                     IF (il_nb == 0) THEN
01164                         PRINT *, '*******************************************'
01165                         PRINT *, 'nbr_neighbours must be specified' 
01166                         PRINT *, 'for nneighbour3D interpolation'
01167                         PRINT *, '*******************************************'
01168                         CALL PSMILe_Flushstd
01169                         CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01170                     ENDIF
01171                     id_error = &
01172                        sasa_c_get_element_9th_level_i (id_XML_doc,      &
01173                        'component', 0, 'transient', ib, 'intent', 0,    &
01174                        'input', 0, 'origin', ib_bis,                    &
01175                        'middle_transformation', 0, 'interpolation', 0,  &
01176                        'interp3D', 0, 'nneighbour3D', 0,                &
01177                        'nbr_neighbours', 0,                             &
01178                        sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01179                        sg_interp%iga_arg2(1))
01180                     dl_test = PSMILe_dundef
01181                     id_error = &
01182                        sasa_c_get_element_9th_level_d (id_XML_doc,      &
01183                        'component', 0, 'transient', ib, 'intent', 0,    &
01184                        'input', 0, 'origin', ib_bis,                    &
01185                        'middle_transformation', 0, 'interpolation', 0,  &
01186                        'interp3D', 0, 'nneighbour3D', 0,                &
01187                        'gaussian_variance', 0, dl_test)
01188                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01189                        sg_interp%dg_arg8 = dl_test
01190                     il_length = 0
01191                     id_error = &
01192                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01193                        'component', 0, 'transient', ib, 'intent', 0,    &
01194                        'input', 0, 'origin', ib_bis,                    &
01195                        'middle_transformation', 0, 'interpolation', 0,  &
01196                        'interp3D', 0, 'nneighbour3D', 0,                &
01197                        'if_masked', 0,                                  &
01198                        cla_char, il_length)
01199 
01200 
01201 
01202 
01203 
01204 
01205 
01206 
01207 
01208                     IF (il_length /= 0) THEN
01209                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01210                            sg_interp%iga_arg4(1)= &
01211                            sasa_c_convert_char2int(cla_char(1:il_length))
01212                         IF (sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01213                            sg_interp%iga_arg4(1) /= PSMILE_novalue) THEN
01214                             PRINT *, '********************************************'
01215                             PRINT *, 'Only novalue is implemented for if_masked'
01216                             PRINT *, 'for nneighbour3D interpolation'
01217                             PRINT *, '********************************************'
01218                             CALL PSMILe_Flushstd
01219                             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01220                         END IF
01221                     ENDIF
01222                 ENDIF
01223 
01224                 IF (il_nb_cin .eq. 1) THEN
01225 
01226                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01227                        sg_interp%iga_interp_meth(1) = PSMILe_trilinear
01228                     il_length = 0
01229                     id_error = &
01230                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01231                        'component', 0, 'transient', ib, 'intent', 0,    &
01232                        'input', 0, 'origin', ib_bis,                    &
01233                        'middle_transformation', 0, 'interpolation', 0,  &
01234                        'interp3D', 0, 'trilinear', 0,                   &
01235                        'para_search', 0,                                &
01236                        cla_char, il_length)
01237                     IF (il_length == 0) THEN
01238 #ifdef VERBOSE
01239                         PRINT *, '*******************************************'
01240                         PRINT *, 'Type of search for trilinear missing '
01241                         PRINT *, 'Default value PSMILe_global will be used   '
01242                         PRINT *, '*******************************************'
01243 #endif
01244                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01245                            sg_interp%iga_arg3(1)=PSMILe_global
01246                     ELSE
01247                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01248                            sg_interp%iga_arg3(1)= &
01249                            sasa_c_convert_char2int(cla_char(1:il_length))
01250                     ENDIF
01251 
01252                     il_length = 0
01253                     id_error = &
01254                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01255                        'component', 0, 'transient', ib, 'intent', 0,    &
01256                        'input', 0, 'origin', ib_bis,                    &
01257                        'middle_transformation', 0, 'interpolation', 0,  &
01258                        'interp3D', 0, 'trilinear', 0,                   &
01259                        'if_masked', 0,                                  &
01260                        cla_char, il_length)
01261                     IF (il_length == 0) THEN
01262                         PRINT *, '********************************************'
01263                         PRINT *, 'if_masked must be specified'
01264                         PRINT *, 'for trilinear interpolation'
01265                         PRINT *, '********************************************'
01266                         CALL PSMILe_Flushstd
01267 
01268                         CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01269                     ENDIF
01270                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01271                        sg_interp%iga_arg4(1)= &
01272                        sasa_c_convert_char2int(cla_char(1:il_length))
01273 
01274                 END IF
01275 
01276 
01277                 IF (il_nb_six .eq. 1) THEN
01278 
01279                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01280                        sg_interp%iga_interp_meth(1) = PSMILe_conserv3D
01281 
01282                     PRINT *, '******************************************************'
01283                     PRINT *, 'The 3D conservative interpolation is not yet supported'
01284                     PRINT *, '******************************************************'
01285                     CALL PSMILe_Flushstd
01286 
01287                             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01288 
01289                 END IF
01290 
01291 
01292                 IF (il_nb_hep .eq. 1) THEN
01293 
01294                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01295                        sg_interp%iga_interp_meth(1) = PSMILe_user3D
01296 
01297 
01298 
01299                    il_length = 0
01300                    id_error = &
01301                       sasa_c_get_element_10th_level_c (id_XML_doc,        &
01302                       'component', 0, 'transient', ib, 'intent', 0,  &
01303                       'input', 0, 'origin', ib_bis,                       &
01304                       'middle_transformation', 0, 'interpolation', 0,     &
01305                       'interp3D', 0, 'user3D', 0,                         &
01306                       'file', 0,                                          &
01307                       'name', 0, sda_smioc_transi(ib)%sg_transi_in%       &
01308                       sga_in_orig(ib_bis)%sg_interp%sg_arg10%cg_file_name,&
01309                       il_length)
01310                    IF (il_length == 0) THEN
01311                        PRINT *, '*********************************************'
01312                        PRINT *, 'user3D interpolation needs a file for'
01313                        PRINT *, 'the definition of the weights and addresses'
01314                        PRINT *, '*********************************************'
01315                        CALL PSMILe_Flushstd
01316                        CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01317                    ENDIF
01318                     
01319                    il_length = 0
01320                    id_error = &
01321                        sasa_c_get_element_10th_level_c (id_XML_doc,            &
01322                        'component', 0, 'transient', ib, 'intent', 0,      &
01323                        'input', 0, 'origin', ib_bis,                           &
01324                        'middle_transformation', 0, 'interpolation', 0,         &
01325                        'interp3D', 0, 'user3D', 0,                             &
01326                        'file', 0,                                              &
01327                        'format', 0, cla_char, il_length)
01328                    IF (il_length == 0) THEN
01329                        PRINT *, '*******************************************'
01330                        PRINT *, 'a format must be specified for each file     '
01331                        PRINT *, '*******************************************'
01332                        CALL PSMILe_Flushstd
01333                        CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01334                    ENDIF
01335                     sda_smioc_transi(ib)%sg_transi_in%                         &
01336                        sga_in_orig(ib_bis)%sg_interp%sg_arg10%ig_file_format = &
01337                        sasa_c_convert_char2int(cla_char(1:il_length))
01338 
01339                     id_error = &
01340                        sasa_c_get_element_10th_level_c (id_XML_doc,            &
01341                        'component', 0, 'transient', ib, 'intent', 0,      &
01342                        'input', 0, 'origin', ib_bis,                           &
01343                        'middle_transformation', 0, 'interpolation', 0,         &
01344                        'interp3D', 0, 'user3D', 0,                             &
01345                        'file', 0,                                              &
01346                        'suffix', 0, cla_char, il_length)
01347                     sda_smioc_transi(ib)%sg_transi_in%                         &
01348                        sga_in_orig(ib_bis)%sg_interp%sg_arg10%          &
01349                        ig_suffix = sasa_c_convert_char2int(cla_char(1:il_length))
01350                     IF (sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01351                        sg_interp%sg_arg10%ig_suffix .eq. -280177)            &
01352                        sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)%  &
01353                        sg_interp%sg_arg10%ig_suffix = 0
01354 
01355                     il_length = 0
01356                     id_error = &
01357                        sasa_c_get_element_10th_level_c (id_XML_doc,            &
01358                        'component', 0, 'transient', ib, 'intent', 0,      &
01359                        'input', 0, 'origin', ib_bis,                           &
01360                        'middle_transformation', 0, 'interpolation', 0,         &
01361                        'interp3D', 0, 'user3D', 0,                             &
01362                        'file', 0,                                              &
01363                        'io_mode', 0, cla_char, il_length)
01364                     IF (il_length == 0) THEN
01365 #ifdef VERBOSE
01366                         PRINT *, '************************************************************'
01367                         PRINT *, 'no io_mode for file; default value iosingle will be used    '
01368                         PRINT *, '************************************************************'
01369 #endif
01370                         sda_smioc_transi(ib)%sg_transi_in%                     &
01371                            sga_in_orig(ib_bis)%sg_interp%sg_arg10%             &
01372                            ig_file_iomode = 3825
01373                     ELSE
01374                         sda_smioc_transi(ib)%sg_transi_in%                     &
01375                            sga_in_orig(ib_bis)%sg_interp%sg_arg10%             &
01376                            ig_file_iomode =                                    &
01377                            sasa_c_convert_char2int(cla_char(1:il_length))
01378                     ENDIF
01379 
01380                     id_error = &
01381                        sasa_c_get_element_10th_level_i (id_XML_doc,            &
01382                        'component', 0, 'transient', ib, 'intent', 0,      &
01383                        'input', 0, 'origin', ib_bis,                           &
01384                        'middle_transformation', 0, 'interpolation', 0,         &
01385                        'interp3D', 0, 'user3D', 0,                             &
01386                        'file', 0,                                              &
01387                        'packing', 0, sda_smioc_transi(ib)%sg_transi_in%        &
01388                        sga_in_orig(ib_bis)%sg_interp%sg_arg10%                 &
01389                        ig_file_pack)
01390 
01391               id_error = &
01392                   sasa_c_get_element_10th_level_d (id_XML_doc,            &
01393                   'component', 0, 'transient', ib, 'intent', 0,      &
01394                   'input', 0, 'origin', ib_bis,                           &
01395                   'middle_transformation', 0, 'interpolation', 0,         &
01396                   'interp3D', 0, 'user3D', 0,                             &
01397                   'file', 0,                                              &
01398                   'scaling', 0, sda_smioc_transi(ib)%sg_transi_in%        &
01399                   sga_in_orig(ib_bis)%sg_interp%sg_arg10%dg_file_scal)
01400 
01401 
01402               id_error = &
01403                   sasa_c_get_element_10th_level_d (id_XML_doc,            &
01404                   'component', 0, 'transient', ib, 'intent', 0,      &
01405                   'input', 0, 'origin', ib_bis,                           &
01406                   'middle_transformation', 0, 'interpolation', 0,         &
01407                   'interp3D', 0, 'user3D', 0,                             &
01408                   'file', 0,                                              &
01409                   'adding', 0, sda_smioc_transi(ib)%sg_transi_in%         &
01410                   sga_in_orig(ib_bis)%sg_interp%sg_arg10%dg_file_add)
01411 
01412               id_error = &
01413                   sasa_c_get_element_10th_level_d (id_XML_doc,            &
01414                   'component', 0, 'transient', ib, 'intent', 0,      &
01415                   'input', 0, 'origin', ib_bis,                           &
01416                   'middle_transformation', 0, 'interpolation', 0,         &
01417                   'interp3D', 0, 'user3D', 0,                             &
01418                   'file', 0,                                              &
01419                   'fill_value', 0, sda_smioc_transi(ib)%sg_transi_in%     &
01420                   sga_in_orig(ib_bis)%sg_interp%sg_arg10%dg_fill_val)
01421 
01422 
01423                     IF ( ld_userdef_details ) THEN
01424 
01425                        sga_comp_udef_idx(id_comp)%sla_driver_udef(ib)%    &
01426                                         lga_trin_orig(ib_bis) = .true.
01427 
01428                        sga_comp_udef_idx(id_comp)%sla_driver_udef(ib)%    &
01429                                         lg_trans_ud = .true.
01430 
01431                        sga_comp_udef_idx(id_comp)%sla_driver_udef(ib)%    &
01432                        cg_local_name = sda_smioc_transi(ib)%cg_local_name
01433                     ENDIF
01434 
01435                 END IF           
01436    
01437             END IF         
01438 
01439 
01440             IF (il_nb_terbis .EQ. 1) THEN
01441 
01442                 sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01443                    sg_interp%ig_interp_type = PSMILe_2D1D
01444 
01445 
01446                 id_error = &
01447                    sasa_c_get_number_9th_level(id_XML_doc,                &
01448                    'component', 0, 'transient', ib, 'intent', 0,     &
01449                    'input', 0, 'origin', ib_bis, 'middle_transformation', &
01450                    0, 'interpolation', 0, 'interp2D', 0, 'nneighbour2D',  &
01451                    il_nb_qua)
01452 
01453 
01454                 id_error = &
01455                    sasa_c_get_number_9th_level(id_XML_doc,          &
01456                    'component', 0, 'transient', ib, 'intent', 0,    &
01457                    'input', 0, 'origin', ib_bis,                    &
01458                    'middle_transformation', 0, 'interpolation', 0,  &
01459                    'interp2D', 0, 'bilinear', il_nb_cin)
01460 
01461 
01462                 id_error = &
01463                    sasa_c_get_number_9th_level(id_XML_doc,          &
01464                    'component', 0, 'transient', ib, 'intent', 0,    &
01465                    'input', 0, 'origin', ib_bis,                    &
01466                    'middle_transformation', 0, 'interpolation', 0,  &
01467                    'interp2D', 0, 'bicubic', il_nb_six)
01468 
01469 
01470                 id_error = &
01471                    sasa_c_get_number_9th_level(id_XML_doc,          &
01472                    'component', 0, 'transient', ib, 'intent', 0,    &
01473                    'input', 0, 'origin', ib_bis,                    &
01474                    'middle_transformation', 0, 'interpolation', 0,  &
01475                    'interp2D', 0, 'conservativ2D', il_nb_hep)
01476 
01477 
01478                 id_error = &
01479                    sasa_c_get_number_9th_level(id_XML_doc,          &
01480                    'component', 0, 'transient', ib, 'intent', 0,    &
01481                    'input', 0, 'origin', ib_bis,                    &
01482                    'middle_transformation', 0, 'interpolation', 0,  &
01483                    'interp2D', 0, 'user2D', il_nb_oct)
01484 
01485 
01486 
01487                 IF (il_nb_qua + il_nb_cin + il_nb_six + il_nb_hep + il_nb_oct .gt. 1) THEN
01488 
01489                     PRINT *, '*************************************************'
01490                     PRINT *, 'Only one 2D interpolation method can be chosen ! '
01491                     PRINT *, '*************************************************'
01492                     CALL PSMILe_Flushstd
01493 
01494                     CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01495 
01496                 END IF
01497 
01498 
01499                 IF (il_nb_qua .eq. 1) THEN
01500 
01501                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01502                        sg_interp%iga_interp_meth(1) = PSMILe_nnghbr2D
01503                     il_length = 0
01504                     id_error = &
01505                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01506                        'component', 0, 'transient', ib, 'intent', 0,    &
01507                        'input', 0, 'origin', ib_bis,                    &
01508                        'middle_transformation', 0, 'interpolation', 0,  &
01509                        'interp2D', 0, 'nneighbour2D', 0, 'para_search', &
01510                        0, cla_char, il_length)
01511                     IF (il_length == 0) THEN
01512 #ifdef VERBOSE
01513                         PRINT *, '*******************************************'
01514                         PRINT *, 'Type of search for nneighbour2D missing '
01515                         PRINT *, 'Default value PSMILe_global will be used   '
01516                         PRINT *, '*******************************************'
01517 #endif
01518                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01519                            sg_interp%iga_arg3(1)=PSMILe_global
01520                     ELSE
01521                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01522                            sg_interp%iga_arg3(1)= &
01523                            sasa_c_convert_char2int(cla_char(1:il_length))
01524                     ENDIF
01525 
01526                     id_error = &
01527                        sasa_c_get_number_10th_level(id_XML_doc,      &
01528                        'component', 0, 'transient', ib, 'intent', 0,    &
01529                        'input', 0, 'origin', ib_bis,                    &
01530                        'middle_transformation', 0, 'interpolation', 0,  &
01531                        'interp2D', 0, 'nneighbour2D', 0,                &
01532                        'nbr_neighbours', il_nb)
01533                     IF (il_nb == 0) THEN
01534                         PRINT *, '*******************************************'
01535                         PRINT *, 'nbr_neighbours must be specified' 
01536                         PRINT *, 'for nneighbour2D interpolation'
01537                         PRINT *, '*******************************************'
01538                         CALL PSMILe_Flushstd
01539                         CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01540                     ENDIF
01541                     id_error = &
01542                        sasa_c_get_element_9th_level_i (id_XML_doc,      &
01543                        'component', 0, 'transient', ib, 'intent', 0,    &
01544                        'input', 0, 'origin', ib_bis,                    &
01545                        'middle_transformation', 0, 'interpolation', 0,  &
01546                        'interp2D', 0, 'nneighbour2D', 0,                &
01547                        'nbr_neighbours', 0,                             &
01548                        sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01549                        sg_interp%iga_arg2(1))
01550                     dl_test = PSMILe_dundef
01551                     id_error = &
01552                        sasa_c_get_element_9th_level_d (id_XML_doc,      &
01553                        'component', 0, 'transient', ib, 'intent', 0,    &
01554                        'input', 0, 'origin', ib_bis,                    &
01555                        'middle_transformation', 0, 'interpolation', 0,  &
01556                        'interp2D', 0, 'nneighbour2D', 0,                &
01557                        'gaussian_variance', 0, dl_test)
01558                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01559                        sg_interp%dg_arg8 = dl_test
01560 
01561                     il_length = 0
01562                     id_error = &
01563                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01564                        'component', 0, 'transient', ib, 'intent', 0,    &
01565                        'input', 0, 'origin', ib_bis,                    &
01566                        'middle_transformation', 0, 'interpolation', 0,  &
01567                        'interp2D', 0,                                   &
01568                        'nneighbour2D', 0, 'if_masked', 0,              &
01569                        cla_char, il_length)
01570 
01571 
01572 
01573 
01574 
01575 
01576 
01577 
01578 
01579                     IF (il_length /= 0) THEN
01580                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01581                            sg_interp%iga_arg4(1)= &
01582                            sasa_c_convert_char2int(cla_char(1:il_length))
01583                         if (sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01584                            sg_interp%iga_arg4(1)/= PSMILE_novalue) THEN
01585                             PRINT *, '********************************************'
01586                             PRINT *, 'Only novalue is implemented for if_masked'
01587                             PRINT *, 'for nneighbour2D interpolation'
01588                             PRINT *, '********************************************'
01589                             CALL PSMILe_Flushstd
01590                             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01591                         END IF
01592                     ENDIF
01593 
01594                 END IF
01595 
01596 
01597                 IF (il_nb_cin .eq. 1) THEN
01598 
01599                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01600                        sg_interp%iga_interp_meth(1) = PSMILe_bilinear
01601                     il_length = 0
01602                     id_error = &
01603                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01604                        'component', 0, 'transient', ib, 'intent', 0,    &
01605                        'input', 0, 'origin', ib_bis,                    &
01606                        'middle_transformation', 0, 'interpolation', 0,  &
01607                        'interp2D', 0, 'bilinear', 0,                    &
01608                        'para_search', 0, cla_char, il_length)
01609                     IF (il_length == 0) THEN
01610 #ifdef VERBOSE
01611                         PRINT *, '*******************************************'
01612                         PRINT *, 'Type of search for bilinear missing '
01613                         PRINT *, 'Default value PSMILe_global will be used   '
01614                         PRINT *, '*******************************************'
01615 #endif
01616                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01617                            sg_interp%iga_arg3(1)=PSMILe_global
01618                     ELSE
01619                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01620                            sg_interp%iga_arg3(1)= &
01621                            sasa_c_convert_char2int(cla_char(1:il_length))
01622                     ENDIF
01623 
01624                     il_length = 0
01625                     id_error = &
01626                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01627                        'component', 0, 'transient', ib, 'intent', 0,    &
01628                        'input', 0, 'origin', ib_bis,                    &
01629                        'middle_transformation', 0, 'interpolation', 0,  &
01630                        'interp2D', 0, 'bilinear', 0,                    &
01631                        'if_masked', 0,                                  &
01632                        cla_char, il_length)
01633                     IF (il_length == 0) THEN
01634                         PRINT *, '********************************************'
01635                         PRINT *, 'if_masked must be specified'
01636                         PRINT *, 'for bilinear interpolation'
01637                         PRINT *, '********************************************'
01638                         CALL PSMILe_Flushstd
01639 
01640                         CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01641                     ENDIF                    
01642                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01643                        sg_interp%iga_arg4(1)= &
01644                        sasa_c_convert_char2int(cla_char(1:il_length))
01645                 END IF
01646 
01647 
01648                 IF (il_nb_six .eq. 1) THEN
01649 
01650                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01651                        sg_interp%iga_interp_meth(1) = PSMILe_bicubic
01652                     il_length = 0
01653                     id_error = &
01654                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01655                        'component', 0, 'transient', ib, 'intent', 0,    &
01656                        'input', 0, 'origin', ib_bis,                    &
01657                        'middle_transformation', 0, 'interpolation', 0,  &
01658                        'interp2D', 0, 'bicubic', 0,                     &
01659                        'para_search', 0, cla_char, il_length)
01660                     IF (il_length == 0) THEN
01661 #ifdef VERBOSE
01662                         PRINT *, '*******************************************'
01663                         PRINT *, 'Type of search for bicubic missing '
01664                         PRINT *, 'Default value PSMILe_global will be used   '
01665                         PRINT *, '*******************************************'
01666 #endif
01667                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01668                            sg_interp%iga_arg3(1)=PSMILe_global
01669                     ELSE
01670                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01671                            sg_interp%iga_arg3(1)= &
01672                            sasa_c_convert_char2int(cla_char(1:il_length))
01673                     ENDIF
01674 
01675                     il_length = 0
01676                     id_error = &
01677                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01678                        'component', 0, 'transient', ib, 'intent', 0,    &
01679                        'input', 0, 'origin', ib_bis,                    &
01680                        'middle_transformation', 0, 'interpolation', 0,  &
01681                        'interp2D', 0, 'bicubic', 0,                     &
01682                        'if_masked', 0,                                  &
01683                        cla_char, il_length)
01684                     IF (il_length == 0) THEN
01685                         PRINT *, '********************************************'
01686                         PRINT *, 'if_masked must be specified'
01687                         PRINT *, 'for bicubic interpolation'
01688                         PRINT *, '********************************************'
01689                         CALL PSMILe_Flushstd
01690 
01691                         CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01692                     ENDIF
01693                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01694                        sg_interp%iga_arg4(1)= &
01695                        sasa_c_convert_char2int(cla_char(1:il_length))
01696 
01697                     il_length = 0
01698                     id_error = &
01699                        sasa_c_get_element_9th_level_c (id_XML_doc,      &
01700                        'component', 0, 'transient', ib, 'intent', 0,    &
01701                        'input', 0, 'origin', ib_bis,                    &
01702                        'middle_transformation', 0, 'interpolation', 0,  &
01703                        'interp2D', 0, 'bicubic', 0,                     &
01704                        'bicubic_method', 0,                             &
01705                        cla_char, il_length)
01706 
01707                     IF (il_length == 0) THEN
01708                         PRINT *, '********************************************'
01709                         PRINT *, 'bicubic_method must be specified'
01710                         PRINT *, 'for bicubic interpolation'
01711                         PRINT *, '********************************************'
01712                         CALL PSMILe_Flushstd
01713                         CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01714                     ENDIF
01715 
01716                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01717                        sg_interp%iga_arg5(1)= &
01718                        sasa_c_convert_char2int(cla_char(1:il_length))
01719 
01720                 END IF
01721 
01722 
01723 
01724                 IF (il_nb_hep .EQ. 1) THEN
01725                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01726                        sg_interp%iga_interp_meth(1) = PSMILe_conserv2D
01727 
01728             
01729                     id_error = &
01730                        sasa_c_get_number_10th_level(id_XML_doc,         &
01731                        'component', 0, 'transient', ib, 'intent', 0,    &
01732                        'input', 0, 'origin', ib_bis,                    &
01733                        'middle_transformation', 0, 'interpolation', 0,  &
01734                        'interp2D', 0, 'conservativ2D', 0, 'order', il_nb)
01735                     IF (il_nb == 0) THEN
01736 #ifdef VERBOSE
01737                         PRINT *, '*************************************'
01738                         PRINT *, 'Order for conservative 2D is missing '
01739                         PRINT *, 'First order will be used by default '
01740                         PRINT *, '*************************************'
01741 #endif
01742                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01743                            sg_interp%iga_arg2(1)= PSMILe_first
01744                     ELSE
01745                         id_error = &
01746                            sasa_c_get_element_9th_level_c (id_XML_doc,      &
01747                            'component', 0, 'transient', ib, 'intent', 0,    &
01748                            'input', 0, 'origin', ib_bis,                    &
01749                            'middle_transformation', 0, 'interpolation', 0,  &
01750                            'interp2D', 0, 'conservativ2D', 0, 'order',      &
01751                            0, cla_char, il_length)
01752                         id_error = sasa_c_convert_char2int(cla_char(1:il_length))
01753                         IF (id_error == 1) THEN
01754                             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01755                                sg_interp%iga_arg2(1)= PSMILe_first
01756                         ELSE IF (id_error == 2) THEN
01757                             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01758                                sg_interp%iga_arg2(1)= PSMILe_second
01759                             PRINT *, '**********************************************'
01760                             PRINT *, '2nd order of conservative 2D not supported yet'
01761                             PRINT *, '**********************************************'
01762                             CALL PSMILe_Flushstd
01763                             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01764                         ELSE
01765                             PRINT *, '*****************************************'
01766                             PRINT *, 'Order of conservative 2D is not known'
01767                             PRINT *, '*****************************************'
01768                             CALL PSMILe_Flushstd
01769                             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)                  
01770                         ENDIF
01771                     ENDIF
01772                     
01773             
01774                     il_nb = 0
01775                     id_error = &
01776                        sasa_c_get_number_10th_level(id_XML_doc,         &
01777                        'component',0, 'transient',ib, 'intent', 0, &
01778                        'input', 0, 'origin', ib_bis,                    &
01779                        'middle_transformation', 0, 'interpolation', 0,  &
01780                        'interp2D', 0, 'conservativ2D', 0, 'para_search', il_nb)
01781                     IF (il_nb == 0) THEN
01782 #ifdef VERBOSE
01783                         PRINT *, '*******************************************'
01784                         PRINT *, 'Type of search for conservative 2D missing '
01785                         PRINT *, 'Default value PSMILe_global will be used   '
01786                         PRINT *, '*******************************************'
01787 #endif
01788                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01789                            sg_interp%iga_arg3(1)= PSMILe_global
01790                     ELSE
01791                         id_error = &
01792                            sasa_c_get_element_9th_level_c (id_XML_doc,      &
01793                            'component',0, 'transient',ib, 'intent', 0, &
01794                            'input', 0, 'origin', ib_bis,                    &
01795                            'middle_transformation', 0, 'interpolation', 0,  &
01796                            'interp2D', 0, 'conservativ2D', 0, 'para_search',&
01797                            0, cla_char, il_length)
01798                         id_error = sasa_c_convert_char2int(cla_char(1:il_length))
01799                         IF (id_error == PSMILe_global) THEN
01800                             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01801                                sg_interp%iga_arg3(1)= PSMILe_global
01802                         ELSE IF (id_error == PSMILe_local) THEN
01803                             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01804                                sg_interp%iga_arg3(1)= PSMILe_local
01805                         ELSE
01806                             PRINT *, '***********************************************'
01807                             PRINT *, 'Type of search for conservative 2D is not known'
01808                             PRINT *, '***********************************************'
01809                             CALL PSMILe_Flushstd
01810                             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error) 
01811                         ENDIF
01812                         
01813 
01814                     ENDIF
01815                     
01816             
01817                     id_error = &
01818                        sasa_c_get_number_10th_level(id_XML_doc,         &
01819                        'component', 0, 'transient', ib, 'intent', 0,    &
01820                        'input', 0, 'origin', ib_bis,                    &
01821                        'middle_transformation', 0, 'interpolation', 0,  &
01822                        'interp2D', 0, 'conservativ2D', 0, 'normalisation2D', il_nb)
01823                     IF (il_nb == 0) THEN
01824                         PRINT *, '********************************************'
01825                         PRINT *, 'No normalisation options for conservative 2D '
01826                         PRINT *, 'By default, no normalisation will be applied '
01827                         PRINT *, '********************************************'
01828                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01829                                    sg_interp%iga_arg4(1) = PSMILe_none
01830                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01831                                    sg_interp%iga_arg5(1) = PSMILe_false
01832                 ELSE
01833                         id_error = &
01834                            sasa_c_get_number_11th_level(id_XML_doc,              &
01835                            'component', 0, 'transient', ib, 'intent', 0,    &
01836                            'input', 0, 'origin', ib_bis,                         &
01837                            'middle_transformation', 0, 'interpolation', 0,       &
01838                            'interp2D', 0, 'conservativ2D', 0, 'normalisation2D', &
01839                            0, 'methodnorm2D', il_nb_bisbis)
01840                         IF (il_nb_bisbis == 0) THEN
01841                             PRINT *, '************************************'
01842                             PRINT *, 'No methodnorm2D for conservative 2D '
01843                             PRINT *, 'Default values will be used: '
01844                             PRINT *, '=> no normalisation'
01845                             PRINT *, '************************************'
01846                             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01847                                sg_interp%iga_arg4(1) = PSMILe_none
01848                         ELSE
01849                             id_error = &
01850                                sasa_c_get_element_10th_level_c (id_XML_doc,         &
01851                                'component', 0, 'transient', ib, 'intent', 0,   &
01852                                'input', 0, 'origin', ib_bis,                        &
01853                                'middle_transformation', 0, 'interpolation', 0,      &
01854                                'interp2D', 0, 'conservativ2D', 0, 'normalisation2D',&
01855                                0, 'methodnorm2D', 0, cla_char, il_length)
01856                             id_error = sasa_c_convert_char2int(cla_char(1:il_length))
01857                             IF (id_error == PSMILe_fracarea .OR. id_error == PSMILe_destarea &
01858                                .OR. id_error == PSMILe_none) THEN
01859                                 sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01860                                    sg_interp%iga_arg4(1) = id_error
01861                             ELSE
01862                                 PRINT *, '*****************************************************'
01863                                 PRINT *, 'Normalisation method for conservative 2D is not known'
01864                                 PRINT *, '*****************************************************'
01865                                 CALL PSMILe_Flushstd
01866                                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01867                             ENDIF
01868                         ENDIF
01869                         id_error = &
01870                            sasa_c_get_number_11th_level(id_XML_doc,              &
01871                            'component', 0, 'transient', ib, 'intent', 0,    &
01872                            'input', 0, 'origin', ib_bis,                         &
01873                            'middle_transformation', 0, 'interpolation', 0,       &
01874                            'interp2D', 0, 'conservativ2D', 0, 'normalisation2D', &
01875                            0, 'nearnei', il_nb_bisbis)
01876                         IF (il_nb_bisbis == 0) THEN
01877                             PRINT *, '************************************'
01878                             PRINT *, 'No nearnei for conservative 2D '
01879                             PRINT *, 'Default values will be used: '
01880                             PRINT *, '=> nearnei = false' 
01881                             PRINT *, '************************************'
01882                             sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01883                                sg_interp%iga_arg5(1) = PSMILe_false                           
01884                         ELSE
01885                             id_error = &
01886                                sasa_c_get_element_10th_level_c (id_XML_doc,         &
01887                                'component', 0, 'transient', ib, 'intent', 0,   &
01888                                'input', 0, 'origin', ib_bis,                        &
01889                                'middle_transformation', 0, 'interpolation', 0,      &
01890                                'interp2D', 0, 'conservativ2D', 0, 'normalisation2D',&
01891                                0, 'nearnei', 0, cla_char, il_length)
01892                             id_error = sasa_c_convert_char2int(cla_char(1:il_length))
01893                             IF (id_error == PSMILe_true) THEN
01894                                 PRINT *, '**********************************************'
01895                                 PRINT *, 'nearnei = true not supported yet'
01896                                 PRINT *, '**********************************************'
01897                                 CALL PSMILe_Flushstd
01898                                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01899                             ELSE IF (id_error == PSMILE_false) THEN
01900                                 sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01901                                    sg_interp%iga_arg5(1) = id_error
01902                             ELSE
01903                                 PRINT *, '**********************************************'
01904                                 PRINT *, 'Nearnei value for conservative 2D is not known'
01905                                 PRINT *, '**********************************************'
01906                                 CALL PSMILe_Flushstd
01907                                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01908                             ENDIF
01909                         ENDIF
01910                     END IF
01911                 ENDIF
01912 
01913 
01914                 IF (il_nb_oct .eq. 1) THEN
01915 
01916                     sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)% &
01917                        sg_interp%iga_interp_meth(1) = PSMILe_user2D
01918 
01919                     PRINT *, '**********************************************'
01920                     PRINT *, 'The user 2D interpolation is not yet supported'
01921                     PRINT *, '**********************************************'
01922                     CALL PSMILe_Flushstd
01923 
01924                     CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01925 
01926                 END IF
01927 
01928 
01929                 id_error = &
01930                    sasa_c_get_number_8th_level(id_XML_doc,         &
01931                    'component', 0, 'transient', ib, 'intent', 0,   &
01932                    'input', 0, 'origin', ib_bis,                   &
01933                    'middle_transformation', 0,                     &
01934                    'interpolation', 0, 'interp1D', il_nb_qua)
01935 
01936                 IF (il_nb_qua .NE. 1) THEN
01937 
01938                     PRINT *, '**********************************************'
01939                     PRINT *, 'One 1D interpolation must be defined for 2D1D '
01940                     PRINT *, '**********************************************'
01941                     CALL PSMILe_Flushstd
01942 
01943             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01944 
01945                 ELSE
01946 
01947                     il_nb_qua = 0
01948 
01949 
01950                     id_error = &
01951                        sasa_c_get_number_9th_level(id_XML_doc,         &
01952                        'component', 0, 'transient', ib, 'intent', 0,   &
01953                        'input', 0, 'origin', ib_bis,                   &
01954                        'middle_transformation', 0,                     &
01955                        'interpolation', 0, 'interp1D', 0,              &
01956                        'none', il_nb_qua)
01957 
01958                     IF (il_nb_qua == 1) THEN
01959 
01960                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)%&
01961                            sg_interp%iga_interp_meth(2) = PSMILe_none
01962                     ENDIF
01963 
01964 
01965                     id_error = &
01966                        sasa_c_get_number_9th_level(id_XML_doc,         &
01967                        'component', 0, 'transient', ib, 'intent', 0,   &
01968                        'input', 0, 'origin', ib_bis,                   &
01969                        'middle_transformation', 0,                     &
01970                        'interpolation', 0, 'interp1D', 0,              &
01971                        'linear', il_nb_cin)
01972 
01973                     IF (il_nb_cin == 1) THEN
01974 
01975                         sda_smioc_transi(ib)%sg_transi_in%sga_in_orig(ib_bis)%&
01976                            sg_interp%iga_interp_meth(2) = PSMILe_linear
01977                     ENDIF
01978                     IF (il_nb_qua == 0 .AND. il_nb_cin == 0) THEN
01979                         PRINT *, '**************************************************'
01980                         PRINT *, '1D interpolation none or linear must be specified '
01981                         PRINT *, '**************************************************'
01982                         CALL PSMILe_Flushstd
01983 
01984                         CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
01985 
01986                     END IF
01987 
01988                 END IF
01989                 
01990             END IF
01991 
01992 
01993 
01994 
01995 
01996 
01997 
01998 
01999 
02000 
02001 
02002 
02003 
02004         END IF
02005 
02006       END DO
02007 
02008 
02009 
02010       id_error = &
02011          sasa_c_get_number_4th_level(id_XML_doc,             &
02012          'component', 0, 'transient', ib, 'intent', 0,  &
02013          'output', sda_smioc_transi(ib)%ig_nb_transi_out)
02014 
02015 
02016       DO ib_bis = 1, sda_smioc_transi(ib)%ig_nb_transi_out
02017 
02018         id_error = &
02019            sasa_c_get_attri_4th_level (id_XML_doc,                         &
02020            'component', 0, 'transient', ib, 'intent', 0,              &
02021            'output', ib_bis, 'transi_out_name',                            &
02022            sda_smioc_transi(ib)%sga_transi_out(ib_bis)%cg_transi_out_name, &
02023            il_length)
02024 
02025         id_error = &
02026            sasa_c_get_element_4th_level_c (id_XML_doc,                 &
02027            'component', 0, 'transient', ib, 'intent', 0,          &
02028            'output', ib_bis, 'corresp_transi_in_name', 0,              &
02029            sda_smioc_transi(ib)%sga_transi_out(ib_bis)%cg_dest_transi, &
02030            il_length)
02031 
02032 
02033         id_error = &
02034            sasa_c_get_element_5th_level_i (id_XML_doc,          &
02035            'component', 0, 'transient', ib, 'intent', 0,   &
02036            'output', ib_bis, 'minimal_period', 0,               &
02037            'nbr_secs', 0, il_test)
02038         sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_min_period%second= &
02039            il_test
02040 
02041         id_error = &
02042            sasa_c_get_element_5th_level_i (id_XML_doc,          &
02043            'component', 0, 'transient', ib, 'intent', 0,   &
02044            'output', ib_bis, 'minimal_period', 0,               &
02045            'nbr_mins', 0,                                       &
02046            sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_min_period%minute)
02047 
02048         id_error = &
02049            sasa_c_get_element_5th_level_i (id_XML_doc,          &
02050            'component', 0, 'transient', ib, 'intent', 0,   &
02051            'output', ib_bis, 'minimal_period', 0,               &
02052            'nbr_hours', 0,                                      &
02053            sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_min_period%hour)
02054 
02055         id_error = &
02056            sasa_c_get_element_5th_level_i (id_XML_doc,          &
02057            'component', 0, 'transient', ib, 'intent', 0,   &
02058            'output', ib_bis, 'minimal_period', 0,               &
02059            'nbr_days', 0,                                       &
02060            sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_min_period%day)
02061 
02062         id_error = &
02063            sasa_c_get_element_5th_level_i (id_XML_doc,          &
02064            'component', 0, 'transient', ib, 'intent', 0,   &
02065            'output', ib_bis, 'minimal_period', 0,               &
02066            'nbr_months', 0,                                     &
02067            sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_min_period%month)
02068 
02069         id_error = & 
02070            sasa_c_get_element_5th_level_i (id_XML_doc,          &
02071            'component', 0, 'transient', ib, 'intent', 0,   &
02072            'output', ib_bis, 'minimal_period', 0,               &
02073            'nbr_years', 0,                                      &
02074            sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_min_period%year)
02075 
02076 
02077         id_error = &
02078            sasa_c_get_number_6th_level(id_XML_doc,                              &
02079            'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis, &
02080            'exchange_date', 0, 'period', il_nb)
02081 
02082 
02083         IF (il_nb .eq. 1) THEN
02084 
02085             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_exch_date_type = &
02086                PSMILe_period
02087 
02088             id_error = &
02089                sasa_c_get_element_6th_level_d (id_XML_doc,        &
02090                'component', 0, 'transient', ib, 'intent', 0, &
02091                'output', ib_bis, 'exchange_date', 0, 'period', 0, &
02092                'second', 0, dl_test)
02093             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_exch_date% &
02094                sg_period%second = dl_test
02095 
02096             id_error = &
02097                sasa_c_get_element_6th_level_i (id_XML_doc,        &
02098                'component', 0, 'transient', ib, 'intent', 0, &
02099                'output', ib_bis, 'exchange_date', 0, 'period', 0, &
02100                'minute', 0,                                       &
02101                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%       &
02102                sg_exch_date%sg_period%minute)
02103 
02104             id_error = &
02105                sasa_c_get_element_6th_level_i (id_XML_doc,        &
02106                'component', 0, 'transient', ib, 'intent', 0, &
02107                'output', ib_bis, 'exchange_date', 0, 'period', 0, &
02108                'hour', 0,                                         &
02109                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%       &
02110                sg_exch_date%sg_period%hour)
02111 
02112             id_error = &
02113                sasa_c_get_element_6th_level_i (id_XML_doc,        &
02114                'component', 0, 'transient', ib, 'intent', 0, &
02115                'output', ib_bis, 'exchange_date', 0, 'period', 0, &
02116                'day', 0,                                          &
02117                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%       &
02118                sg_exch_date%sg_period%day)
02119 
02120             id_error = &
02121                sasa_c_get_element_6th_level_i (id_XML_doc,        &
02122                'component', 0, 'transient', ib, 'intent', 0, &
02123                'output', ib_bis, 'exchange_date', 0, 'period', 0, &
02124                'month', 0,                                        &
02125                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%       &
02126                sg_exch_date%sg_period%month)
02127 
02128             id_error = &
02129                sasa_c_get_element_6th_level_i (id_XML_doc,        &
02130                'component', 0, 'transient', ib, 'intent', 0, &
02131                'output', ib_bis, 'exchange_date', 0, 'period', 0, &
02132                'year', 0,                                         &
02133                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%       &
02134                sg_exch_date%sg_period%year)
02135 
02136         END IF
02137 
02138 
02139         id_error = &
02140            sasa_c_get_number_6th_level(id_XML_doc,                               &
02141            'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis,  &
02142            'exchange_date', 0, 'once', il_nb)
02143 
02144 
02145         IF (il_nb .eq. 1) THEN
02146 
02147             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_exch_date_type = &
02148                PSMILe_once
02149 
02150             PRINT *, '******************************************************'
02151             PRINT *, 'The once format for exchange date is not yet supported'
02152             PRINT *, '******************************************************'
02153             CALL PSMILe_Flushstd
02154 
02155             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02156 
02157         END IF
02158 
02159 
02160         id_error = &
02161            sasa_c_get_number_6th_level(id_XML_doc,                               &
02162            'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis,  &
02163            'exchange_date', 0, 'precise_list', il_nb)
02164 
02165 
02166         IF (il_nb .eq. 1) THEN
02167 
02168             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_exch_date_type = &
02169                PSMILe_preciseday
02170 
02171             PRINT *, '**************************************************************'
02172             PRINT *, 'The precise_list format for exchange date is not yet supported'
02173             PRINT *, '**************************************************************'
02174             CALL PSMILe_Flushstd
02175 
02176             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02177 
02178         END IF
02179 
02180 
02181         id_error = &
02182            sasa_c_get_number_6th_level(id_XML_doc,                               &
02183            'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis,  &
02184            'exchange_date', 0, 'date_list', il_nb)
02185 
02186 
02187         IF (il_nb .eq. 1) THEN
02188 
02189             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_exch_date_type = &
02190                PSMILe_list
02191 
02192             PRINT *, '***********************************************************'
02193             PRINT *, 'The date_list format for exchange date is not yet supported'
02194             PRINT *, '***********************************************************'
02195             CALL PSMILe_Flushstd
02196 
02197             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02198 
02199         END IF
02200 
02201 
02202         id_error = &
02203            sasa_c_get_number_6th_level(id_XML_doc,                              &
02204            'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis, &
02205            'exchange_date', 0, 'lastdayinmonth', il_nb)
02206 
02207 
02208         IF (il_nb .eq. 1) THEN
02209 
02210             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_exch_date_type = &
02211                PSMILe_lastdayinmo
02212 
02213             PRINT *, '****************************************************************'
02214             PRINT *, 'The lastdayinmonth format for exchange date is not yet supported'
02215             PRINT *, '****************************************************************'
02216             CALL PSMILe_Flushstd
02217 
02218             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02219 
02220         END IF
02221 
02222 
02223         id_error = &
02224            sasa_c_get_element_4th_level_i (id_XML_doc,            &
02225            'component', 0, 'transient', ib,'intent', 0,      &
02226            'output', ib_bis, 'lag', 0, il_test)
02227            if ( il_test /= -280177 ) &
02228               sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_lag = il_test
02229 
02230 
02231         id_error = &
02232            sasa_c_get_element_4th_level_c (id_XML_doc,                &
02233            'component', 0, 'transient', ib, 'intent', 0,         &
02234            'output', ib_bis, 'debug_mode', 0, cla_char, il_length)
02235         sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_debugmode = &
02236            sasa_c_convert_char2int(cla_char(1:il_length))
02237 
02238         ll_io = .FALSE.
02239 #ifdef __PSMILE_WITH_IO
02240         ll_io = .TRUE.
02241 #endif
02242         IF (sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_debugmode  &
02243            .EQ. PSMILe_true .AND. .NOT. ll_io) THEN
02244             PRINT *, '***************************************************'
02245             PRINT *, 'The PSMILe is asked to perform I/O for debug mode'
02246             PRINT *, 'but it is compiled without __PSMILE_WITH_IO CPP key.'
02247             PRINT *, 'Calling MPI_Abort'
02248             PRINT *, '***************************************************'
02249             CALL PSMILe_Flushstd
02250             
02251             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02252         ENDIF
02253 
02254         id_error = &
02255            sasa_c_get_element_5th_level_c (id_XML_doc,         &
02256            'component', 0, 'transient', ib, 'intent', 0,  &
02257            'output', ib_bis, 'source_transformation', 0,       &
02258            'source_time_operation', 0, cla_char, il_length)
02259         sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_src_timeop = &
02260            sasa_c_convert_char2int(cla_char(1:il_length))
02261 
02262 
02263         sda_smioc_transi(ib)%sga_transi_out(ib_bis)%iga_stats = 0
02264         id_error = &
02265            sasa_c_get_number_6th_level(id_XML_doc,                              &
02266            'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis, &
02267            'source_transformation', 0, 'statistics', il_nb)
02268 
02269         IF (il_nb .eq. 1) THEN
02270 
02271             id_error = &
02272                sasa_c_get_number_7th_level(id_XML_doc,                              &
02273                'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis, &
02274                'source_transformation', 0, 'statistics', 0,                         &
02275                'masked_points', il_nb_bis)
02276 
02277             IF (il_nb_bis .eq. 1) THEN
02278                 id_error = &
02279                 sasa_c_get_element_6th_level_c (id_XML_doc,                        &
02280                'component', 0, 'transient', ib, 'intent', 0, 'output', 0,     &
02281                'source_transformation', 0, 'statistics', 0,                        &
02282                'masked_points', 0, cla_char, il_length)
02283                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%iga_stats(1) = &
02284                sasa_c_convert_char2int(cla_char(1:il_length))
02285             END IF
02286 
02287             id_error = &
02288                sasa_c_get_number_7th_level(id_XML_doc,                              &
02289                'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis, &
02290                'source_transformation', 0, 'statistics', 0,                         &
02291                'notmasked_points', il_nb_bis)
02292 
02293             IF (il_nb_bis .eq. 1) THEN
02294                 id_error = &
02295                 sasa_c_get_element_6th_level_c (id_XML_doc,                        &
02296                'component', 0, 'transient', ib, 'intent', 0, 'output', 0,     &
02297                'source_transformation', 0, 'statistics', 0,                        &
02298                'notmasked_points', 0, cla_char, il_length)
02299                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%iga_stats(2) = &
02300                sasa_c_convert_char2int(cla_char(1:il_length))
02301             END IF
02302 
02303             id_error = &
02304                sasa_c_get_number_7th_level(id_XML_doc,                              &
02305                'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis, &
02306                'source_transformation', 0, 'statistics', 0,                         &
02307                'all_points', il_nb_bis)
02308 
02309             IF (il_nb_bis .eq. 1) THEN
02310                 id_error = &
02311                 sasa_c_get_element_6th_level_c (id_XML_doc,                        &
02312                'component', 0, 'transient', ib, 'intent', 0, 'output', 0,     &
02313                'source_transformation', 0, 'statistics', 0,                        &
02314                'all_points', 0, cla_char, il_length)
02315                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%iga_stats(3) = &
02316                sasa_c_convert_char2int(cla_char(1:il_length))
02317             END IF
02318 
02319         END IF
02320 
02321 
02322 
02323         id_error = &
02324            sasa_c_get_element_6th_level_i (id_XML_doc,    &
02325            'component', 0, 'transient', ib, 'intent', 0,  &
02326            'output', ib_bis, 'source_transformation', 0,  &
02327            'source_local_transformation', 0,              &
02328            'mult_scalar', 0, il_test)
02329         IF ( il_test /= - 280177 ) THEN
02330             sda_smioc_transi(ib)%sga_transi_out(ib_bis)% &
02331                sg_src_local_trans%dg_mult_scalar = il_test
02332         ENDIF
02333 
02334         id_error = &
02335            sasa_c_get_element_6th_level_i (id_XML_doc,    &
02336            'component', 0, 'transient', ib, 'intent', 0,  &
02337            'output', ib_bis, 'source_transformation', 0,  &
02338            'source_local_transformation', 0,              &
02339            'add_scalar', 0, il_test)
02340         IF ( il_test /= - 280177 ) THEN
02341             sda_smioc_transi(ib)%sga_transi_out(ib_bis)% &
02342                sg_src_local_trans%dg_add_scalar = il_test
02343         ENDIF
02344 
02345 
02346         id_error = &
02347            sasa_c_get_element_6th_level_c (id_XML_doc,    &
02348            'component', 0, 'transient', ib, 'intent', 0,  &
02349            'output', ib_bis, 'source_transformation', 0,  &
02350            'source_local_transformation', 0,              &
02351            'scattering', 0, cla_char, il_length)
02352         sda_smioc_transi(ib)%sga_transi_out(ib_bis)%      &
02353            sg_src_local_trans%ig_scatter =                &
02354            sasa_c_convert_char2int(cla_char(1:il_length))
02355 
02356 
02357         id_error = &
02358            sasa_c_get_number_7th_level(id_XML_doc,                              &
02359            'component', 0, 'transient', ib, 'intent', 0, 'output', ib_bis, &
02360            'source_transformation', 0, 'source_local_transformation', 0,        &
02361            'reduction', il_test)
02362         IF (il_test .eq. 1) THEN
02363             PRINT *, '*********************************'
02364             PRINT *, 'Reduction not supported for now !'
02365             PRINT *, '*********************************'
02366             CALL PSMILe_Flushstd
02367             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02368         END IF
02369 
02370 
02371         id_error = &
02372            sasa_c_get_number_5th_level(id_XML_doc,              &
02373            'component', 0, 'transient', ib, 'intent', 0,   &
02374            'output', ib_bis, 'component_name', il_nb_bis)
02375 
02376         id_error = &
02377            sasa_c_get_number_5th_level(id_XML_doc,              &
02378            'component', 0, 'transient', ib, 'intent', 0,   &
02379            'output', ib_bis, 'file', il_nb_ter)
02380 
02381         IF ((il_nb_bis .eq. 1) .and. (il_nb_ter .eq. 1)) THEN
02382 
02383             PRINT *, '**********************************************'
02384             PRINT *, 'The target can not be a component and a file !'
02385             PRINT *, '**********************************************'
02386             CALL PSMILe_Flushstd
02387 
02388             CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02389 
02390         ELSE IF (il_nb_bis .eq. 1) THEN
02391 
02392 
02393             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_dest_type = &
02394                PSMILe_comp
02395 
02396             id_error = &
02397                sasa_c_get_element_4th_level_c (id_XML_doc,                    &
02398                'component', 0, 'transient', ib, 'intent', 0,             &
02399                'output', ib_bis, 'component_name', 0,                         &
02400                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%cg_dest_comp_name, &
02401                il_length)
02402 
02403         ELSE IF (il_nb_ter .eq. 1) THEN
02404             ll_io = .FALSE.
02405 #ifdef __PSMILE_WITH_IO
02406             ll_io = .TRUE.
02407 #endif
02408             IF (.NOT. ll_io) THEN
02409                 PRINT *, '***************************************************'
02410                 PRINT *, 'The PSMILe is asked to perform Output to file'
02411                 PRINT *, 'but it is compiled without __PSMILE_WITH_IO CPP key'
02412                 PRINT *, 'Calling MPI_Abort'
02413                 PRINT *, '***************************************************'
02414                 CALL PSMILe_Flushstd
02415 
02416                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02417             ENDIF
02418 
02419 
02420             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%ig_dest_type = &
02421                PSMILe_file
02422 
02423             il_length = 0
02424             id_error = &
02425                sasa_c_get_element_5th_level_c (id_XML_doc,    &
02426                'component', 0, 'transient', ib, 'intent', 0,  &
02427                'output', ib_bis, 'file', 0, 'name', 0,        &
02428                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%   &
02429                sg_dest_file%cg_file_name, il_length)  
02430             IF (il_length == 0) THEN
02431                 PRINT *, '*******************************************'
02432                 PRINT *, 'a name must be specified for each file     '
02433                 PRINT *, '*******************************************'
02434                 CALL PSMILe_Flushstd
02435                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02436             ENDIF
02437 
02438             il_length = 0
02439             id_error = &
02440                sasa_c_get_element_5th_level_c (id_XML_doc,    &
02441                'component', 0, 'transient', ib, 'intent', 0,  &
02442                'output', ib_bis, 'file', 0, 'format', 0,      &
02443                cla_char, il_length)
02444             IF (il_length == 0) THEN
02445                 PRINT *, '*******************************************'
02446                 PRINT *, 'a format must be specified for each file     '
02447                 PRINT *, '*******************************************'
02448                 CALL PSMILe_Flushstd
02449                 CALL MPI_Abort(MPI_COMM_WORLD, 1, id_error)
02450             ENDIF
02451             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%      &
02452                sg_dest_file%ig_file_format =                  &
02453                sasa_c_convert_char2int(cla_char(1:il_length))
02454 
02455             id_error = &
02456                sasa_c_get_element_5th_level_c (id_XML_doc,    &
02457                'component', 0, 'transient', ib, 'intent', 0,  &
02458                'output', ib_bis, 'file', 0, 'suffix', 0,      &
02459                cla_char, il_length)
02460             sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
02461                ig_suffix = sasa_c_convert_char2int(cla_char(1:il_length))
02462             IF (sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
02463                ig_suffix .eq. -280177) sda_smioc_transi(ib)%              &
02464                sga_transi_out(ib_bis)%sg_dest_file%ig_suffix = 0
02465 
02466             il_length = 0
02467             id_error = &
02468                sasa_c_get_element_5th_level_c (id_XML_doc,    &
02469                'component', 0, 'transient', ib, 'intent', 0,  &
02470                'output', ib_bis, 'file', 0, 'io_mode', 0,   &
02471                cla_char, il_length)
02472             IF (il_length == 0) THEN
02473 #ifdef VERBOSE
02474                 PRINT *, '************************************************************'
02475                 PRINT *, 'no io_mode for file; default value iosingle will be used    '
02476                 PRINT *, '************************************************************'
02477 #endif
02478                 sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
02479                    ig_file_iomode = 3825
02480             ELSE
02481                 sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
02482                    ig_file_iomode =                                    &
02483                    sasa_c_convert_char2int(cla_char(1:il_length))
02484             ENDIF
02485 
02486             id_error = &
02487                sasa_c_get_element_5th_level_i (id_XML_doc,    &
02488                'component', 0, 'transient', ib, 'intent', 0,  &
02489                'output', ib_bis, 'file', 0, 'packing', 0,     &
02490                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%sg_dest_file% &
02491                ig_file_pack)  
02492 
02493             id_error = &
02494                sasa_c_get_element_5th_level_d (id_XML_doc,    &
02495                'component', 0, 'transient', ib, 'intent', 0,  &
02496                'output', ib_bis, 'file', 0, 'scaling', 0,     &
02497                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%   &
02498                sg_dest_file%dg_file_scal)
02499 
02500             id_error = &
02501                sasa_c_get_element_5th_level_d (id_XML_doc,    &
02502                'component', 0, 'transient', ib, 'intent', 0,  &
02503                'output', ib_bis, 'file', 0, 'adding', 0,      &
02504                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%   &
02505                sg_dest_file%dg_file_add)
02506 
02507             id_error = &
02508                sasa_c_get_element_5th_level_d (id_XML_doc,    &
02509                'component', 0, 'transient', ib, 'intent', 0,  &
02510                'output', ib_bis, 'file', 0, 'fill_value', 0,  &
02511                sda_smioc_transi(ib)%sga_transi_out(ib_bis)%   &
02512                sg_dest_file%dg_fill_val)
02513 
02514         END IF
02515 
02516       END DO
02517 
02518     END DO
02519 
02520   END SUBROUTINE get_transi_details
02521 
02522 
02523