00001
00002 ! ------------------- PSMILe include file psmile.inc -------------------
00003 !
00004 ! $Id: psmile.inc 3246 2011-06-23 12:43:21Z coquart $
00005 ! $Author: coquart $
00006 !
00007 !-----------------------------------------------------------------------
00008 ! Copyright 2006-2010, CERFACS, Toulouse, France.
00009 ! Copyright 2006-2010, SGI Germany, Munich, Germany.
00010 ! Copyright 2006-2010, NEC Europe Ltd., London, UK.
00011 ! All rights reserved. Use is subject to OASIS4 license terms.
00012 !-----------------------------------------------------------------------
00013 !BOP
00014 !
00015 ! !INCLUDE: psmile.inc
00016 !
00017 ! !DESCRIPTION:
00018 !
00019 ! Declaration of all PSMILe internal named parameters. This file is included
00020 ! by the driver and PSMILe library routines via use of psmile_common module.
00021 !
00022 !
00023 ! !REVISION HISTORY:
00024 !
00025 ! Date Programmer Description
00026 ! ---------- ---------- -----------
00027 ! 03.09.23 R. Redler created
00028 !
00029 !
00030 !EOP
00031 !-----------------------------------------------------------------------
00032 !
00033 ! PSMILe internal parameters:
00034 ! ---------------------------
00035 !
00036 ! PRISM_root : Local rank of application root process
00037 ! PRISMdrv_root : Global rank of driver root process
00038 !
00039 ! PSMILe_Init_tag : Tag in order to transfer with the coupler the
00040 ! initial data.
00041 ! The tag is used in PRISM_enddef.
00042 ! The tags are used in within communcator "comm_psmile".
00043 !
00044 ! noDatatypes : Number of PRISM datatypes supported
00045 ! (cf. include file prism.inc)
00046 !
00047 ! max_name : Maximal length (number of characters) of a name
00048 ! max_dim : Maximal number of dimensions of a block
00049 !
00050 ! ndim_2d : Number of dimensions in a 2-dimensional grid
00051 ! ndim_3d : Number of dimensions in a 3-dimensional grid
00052 !
00053 ! len_cvs_string : Length of the character string in order to save
00054 ! the CVS Id within the object file.
00055 !
00056 ! .... Parameters used in PRISM_Enddef ()
00057 !
00058 ! msg_extra_size = Dimension of buffer "extra_msg"
00059 ! in order to send extra search requests.
00060 ! nd_msgsel = Dimension of receive buffer "msg_sel"
00061 ! in order to send/receive messages on
00062 ! selected nearest neighbour points.
00063 ! num_req_types = number of distinct message types handled by
00064 ! psmile_get_intersect and psmile_enddef_action
00065 ! nd_msgint = Dimension of send buffer msgint/msgreq.
00066 ! ind_msgint_tag = Index in integer send buffer msgint/msgreq
00067 ! where the relative tag is stored.
00068 ! ip_msgint_inter = Position-1 in integer send buffer msgint/msgreq
00069 ! where intersection is stored.
00070 !
00071 ! nd_extent_infos = Number of extent info's per grid extent
00072 ! = 1 : Local grid id (extent id)
00073 ! = 2 : PRISM Grid type
00074 ! = 3 : Transformation code
00075 ! = 4 : Global grid id
00076 !
00077 ! Send buffer msgint/msgreq:
00078 ! See routines psmile_pack_msg_intersections and psmile_unpack_msg_intersections
00079 ! for more details on the content of these buffers.
00080 !
00081 ! Send buffer extra_msg:
00082 !
00083 ! extra_msg (1) = Type of request
00084 ! PSMILE_Trilinear : Search additional points for
00085 ! trilinear interpolation.
00086 ! extra_msg (2) = Datatype
00087 ! extra_msg (3) = Length of buffer "ibuf" containing the integer data.
00088 ! extra_msg (4) = Length of buffer "buf" containing the
00089 ! real/double precision data.
00090 ! extra_msg (5) = Global comp id of component
00091 ! extra_msg (6) = Global var id
00092 ! extra_msg (7) = Grid Type of sending grid
00093 ! (PRISM_Reglonlatvrt, ...)
00094 ! extra_msg (8) = Number of control volumes sent
00095 ! extra_msg (9) = Number of integer data items per control
00096 ! volume sent
00097 ! extra_msg (10) = Number of real/double data items per control
00098 ! volume sent
00099 ! extra_msg (11) = Is data on global offset available ?
00100 ! extra_msg (12) = I-Index of global offset (partition)
00101 ! extra_msg (13) = J-Index of global offset (partition)
00102 ! extra_msg (14) = K-Index of global offset (partition)
00103 !
00104 ! Send buffer msg_sel:
00105 !
00106 ! msg_sel (1) = Interpolation code
00107 ! msg_sel (2) = Number of entries in original compact list
00108 ! msg_sel (3) = Number of entries in new compact list
00109 ! msg_sel (4) = Send info index (of sending process)
00110 ! msg_sel (5) = Method id (in sending process)
00111 !
00112 integer, parameter :: PRISM_root = 0
00113 integer, save :: PRISMdrv_root = 0
00114
00115 integer, parameter :: PSMILe_Init_tag = 0
00116
00117 integer, parameter :: PSMILe_latest_protocol_version = 5
00118 integer, parameter :: noDatatypes = 9
00119 !
00120 integer, parameter :: max_name = 256
00121 !
00122 integer, parameter :: ndim_1d = 1
00123 integer, parameter :: ndim_2d = 2
00124 integer, parameter :: ndim_3d = 3
00125 integer, parameter :: max_dim = 5
00126 !
00127 integer, parameter :: len_cvs_string = 100
00128 !
00129 ! Start mode (equivalent to DRV_MPI1 and DRV_MPI2 in prismdrv.F90)
00130 !
00131 integer, parameter :: PSMILe_notspawn = 1
00132 integer, parameter :: PSMILe_spawn = 2
00133 !
00134 ! "Logical" flags
00135 !
00136 integer, parameter :: PSMILe_true = 1
00137 integer, parameter :: PSMILe_false = 0
00138 !
00139 ! Undefined values
00140 !
00141 integer, parameter :: PSMILe_undef = -280177
00142 real, parameter :: PSMILe_rundef = -280177.0
00143 double precision, parameter :: PSMILe_dundef = -280177.0
00144
00145 integer, parameter :: PSMILe_undef2 = -240266
00146 real, parameter :: PSMILe_rundef2 = -240266.0
00147 double precision, parameter :: PSMILe_dundef2 = -240266.0
00148 !
00149 ! General PSMILe datatype for floating point variables
00150 ! which are NOT dependent on variables/fields at the user interface
00151 ! Examples are the extents which are computed in PRISM_Enddef().
00152 ! Currently, these values are computed in Double Precision
00153 ! which corresponds to SELECTED_REAL_KIND(12,307) by the Fortran 90 Standard.
00154 !
00155 integer, parameter :: PSMILe_float_kind = &
00156 SELECTED_REAL_KIND(12,307)
00157 integer, parameter :: PSMILe_float_datatype = &
00158 MPI_DOUBLE_PRECISION
00159 ! integer, parameter :: PSMILe_int_kind = &
00160 ! SELECTED_INT_KIND(9)
00161 ! integer, parameter :: PSMILe_sglereal_kind = &
00162 ! SELECTED_REAL_KIND(6,37)
00163 ! integer, parameter :: PSMILe_dblereal_kind = &
00164 ! SELECTED_REAL_KIND(12,307)
00165 !
00166 ! PSMILe statuses
00167 !
00168 ! PSMILe_status_undefined: Undefined component information
00169 ! PSMILe_status_free : Free (i.e. unused) component information
00170 ! PSMILe_status_defined : Not commited component information
00171 ! PSMILe_status_commited : Commited component information
00172
00173 integer, parameter :: PSMILe_Status_undefined = -1
00174 integer, parameter :: PSMILe_Status_free = 0
00175 integer, parameter :: PSMILe_Status_defined = 1
00176 integer, parameter :: PSMILe_Status_commited = 2
00177 !
00178 ! PSMILe grid types
00179 !
00180 integer, parameter :: PSMILe_Grid_Unstruct = 1
00181 integer, parameter :: PSMILe_Grid_Block = 2
00182 integer, parameter :: PSMILe_positive_up = 1
00183 integer, parameter :: PSMILe_positive_down = 2
00184 !
00185 ! PSMILe method types
00186 !
00187 integer, parameter :: PSMILe_PointMethod = 1
00188 integer, parameter :: PSMILe_VectorPointMethod = 2
00189 integer, parameter :: PSMILe_SubgridMethod = 3
00190 !
00191 ! PSMILe mask types
00192 !
00193 integer, parameter :: PSMILe_PointMask = 11
00194 integer, parameter :: PSMILe_VectorMask = 22
00195 !
00196 ! Parameters used in PRISM_Enddef ()
00197 !
00198 Integer, Parameter :: msg_extra_size = 16
00199 Integer, Parameter :: nd_msgsel = 5
00200 Integer, Parameter :: num_req_types = 6
00201 !
00202 Integer, parameter :: ind_msgint_tag = 17
00203 Integer, parameter :: maxpart = 3 * 3 * 3
00204 Integer, parameter :: ip_msgint_inter = ind_msgint_tag
00205 Integer, parameter :: nd_msgint = ip_msgint_inter + &
00206 (2*ndim_3d + 2)*maxpart
00207 Integer, Parameter :: msgloc_size = 15
00208 Integer, Parameter :: nd_extent_infos = 4
00209 Integer, Parameter :: nd_field_list = 6
00210 !
00211 ! Units
00212 !
00213 integer, parameter :: PSMILe_meters = 3000
00214 integer, parameter :: PSMILe_bar = 3001
00215 integer, parameter :: PSMILe_millibar = 3002
00216 integer, parameter :: PSMILe_decibar = 3003
00217 integer, parameter :: PSMILe_atmosphere = 3004
00218 integer, parameter :: PSMILe_pascal = 3005
00219 integer, parameter :: PSMILe_hpa = 3006
00220 integer, parameter :: PSMILe_unitless = 3007
00221 integer, parameter :: PSMILe_degrees_east = 3008
00222 integer, parameter :: PSMILe_degrees_north = 3009
00223 !
00224 ! Grid volume type
00225 !
00226 integer, parameter :: PSMILe_voltype1 = 3032
00227 integer, parameter :: PSMILe_voltype2 = 3033
00228
00229 ! For transient variable type
00230 !
00231 integer, parameter :: PSMILe_single = 3500
00232 integer, parameter :: PSMILe_vector = 3501
00233 integer, parameter :: PSMILe_bundle = 3502
00234 integer, parameter :: PSMILe_bunvec = 3503
00235 !
00236 ! For transient method_type and reduction type for reduction_type
00237 !
00238 integer, parameter :: PSMIle_mean = 3530
00239 integer, parameter :: PSMIle_max = 3531
00240 integer, parameter :: PSMIle_min = 3532
00241 integer, parameter :: PSMIle_med = 3533
00242 integer, parameter :: PSMIle_variance = 3534
00243 integer, parameter :: PSMILe_integral = 3535
00244
00245 integer, parameter :: PSMIle_ave = 3536
00246 integer, parameter :: PSMIle_wgt_ave = 3537
00247 integer, parameter :: PSMIle_subgrid_ave = 3538
00248 !
00249 ! Destination or origin type in transient_in or transient_out
00250 !
00251 integer, parameter :: PSMILe_comp = 3800
00252 integer, parameter :: PSMILe_file = 3810
00253 ! integer, parameter :: PSMILe_combi = 3811
00254 !
00255 ! File formats
00256 !
00257 integer, parameter :: PSMILe_mpp_ascii = 3821
00258 integer, parameter :: PSMILe_mpp_ieee32 = 3822
00259 integer, parameter :: PSMILe_mpp_native = 3823
00260 integer, parameter :: PSMILe_mpp_netcdf = 3824
00261 !
00262 ! File iomode
00263 !
00264 integer, parameter :: PSMILe_iosingle = 3825
00265 integer, parameter :: PSMILe_parallel = 3826
00266 integer, parameter :: PSMILe_distributed = 3827
00267 !
00268 ! File pack modes
00269 !
00270 integer, parameter :: PSMILe_one = 1
00271 integer, parameter :: PSMILe_two = 2
00272 integer, parameter :: PSMILe_four = 4
00273 integer, parameter :: PSMILe_eight = 8
00274 !
00275 ! Transient exchange date type
00276 !
00277 integer, parameter :: PSMILe_period = 3540
00278 integer, parameter :: PSMILe_preciseday = 3541
00279 integer, parameter :: PSMILe_list = 3542
00280 integer, parameter :: PSMIle_beg = 3543
00281 integer, parameter :: PSMIle_end = 3544
00282 integer, parameter :: PSMIle_beg_and_end = 3545
00283 integer, parameter :: PSMIle_lastdayinmo = 3546
00284 integer, parameter :: PSMILe_once = 3547
00285 !
00286 ! Time operation type (ig_source_timeop, ig_target_timeop)
00287 !
00288 integer, parameter :: PSMILe_tave = 3600
00289 integer, parameter :: PSMILe_tacc = 3601
00290 integer, parameter :: PSMILe_tmin = 3602
00291 integer, parameter :: PSMILe_tmax = 3603
00292 integer, parameter :: PSMILe_time_nnghbr = 3604
00293 integer, parameter :: PSMILe_time_linear = 3605
00294 !
00295 ! Local operations
00296 !
00297 integer, parameter :: PSMILe_add = 3606
00298 integer, parameter :: PSMILe_mul = 3607
00299 !
00300 ! Scatter or gather operation (scat_gath)
00301 !
00302 integer, parameter :: PSMILe_scat = 3700
00303 integer, parameter :: PSMILe_gath = 3701
00304 !
00305 ! Bundle combine or masking type (bndl_combi_type or mask_type)
00306 !
00307 integer, parameter :: PSMILe_var_mask = 3610
00308 integer, parameter :: PSMILe_ext_mask = 3611
00309 !
00310 ! Interpolation type (interp_type)
00311 !
00312 integer, parameter :: PSMILe_3D = 3620
00313 integer, parameter :: PSMILe_2D1D = 3621
00314 integer, parameter :: PSMILe_1D1D1D = 3622
00315 !
00316 ! 3D interpolation methods (iga_interp_meth)
00317 !
00318 integer, parameter :: PSMILe_nnghbr3D = 3630
00319 integer, parameter :: PSMILe_conserv3D = 3631
00320 integer, parameter :: PSMILe_user3D = 3632
00321 integer, parameter :: PSMILe_trilinear = 3643
00322 integer, parameter :: PSMILe_gauswg3D = 3644
00323 !
00324 ! 2D interpolation type (iga_interp_meth)
00325 !
00326 integer, parameter :: PSMILe_nnghbr2D = 3633
00327 integer, parameter :: PSMILe_bilinear = 3634
00328 integer, parameter :: PSMILe_bicubic = 3635
00329 integer, parameter :: PSMILe_conserv2D = 3636
00330 integer, parameter :: PSMILe_user2D = 3637
00331 !
00332 ! 1D interpolation type (iga_interp_meth)
00333 !
00334 integer, parameter :: PSMILe_nnghbr1D = 3638
00335 integer, parameter :: PSMILe_linear = 3639
00336 integer, parameter :: PSMILe_cubic = 3640
00337 integer, parameter :: PSMILe_conserv1D = 3641
00338 integer, parameter :: PSMILe_user1D = 3642
00339 !
00340 integer, parameter :: PSMILe_none = -1
00341
00342 ! interpolation first argument
00343 !
00344 integer, parameter :: PSMILE_novalue = 3643
00345 integer, parameter :: PSMILE_tneighbour = 3644
00346 integer, parameter :: PSMILe_nneighbour = 3645
00347 integer, parameter :: PSMILe_vneighbour = 3646
00348 !
00349 ! interpolation third argument
00350 !
00351 integer, parameter :: PSMILe_first = 3651
00352 integer, parameter :: PSMILe_second = 3652
00353 integer, parameter :: PSMILe_third = 3653
00354 integer, parameter :: PSMILe_fourth = 3654
00355 integer, parameter :: PSMILe_approx = 3657
00356 integer, parameter :: PSMILe_precise = 3658
00357 !
00358 ! interpolation fourth argument
00359 !
00360 integer, parameter :: PSMIle_gradient = 3660
00361 integer, parameter :: PSMILe_sixteen = 3661
00362 integer, parameter :: PSMILe_norma3D = 3662
00363 integer, parameter :: PSMILe_normb3D = 3663
00364 integer, parameter :: PSMILe_normc3D = 3664
00365 integer, parameter :: PSMILe_fracarea = 3665
00366 integer, parameter :: PSMILe_destarea = 3666
00367 integer, parameter :: PSMILe_norma1D = 3668
00368 integer, parameter :: PSMILe_normb1D = 3669
00369 integer, parameter :: PSMILe_normc1D = 3670
00370 !
00371 ! For conservation (ig_conserv)
00372 !
00373 integer, parameter :: PSMILe_glob_conserv = 3675
00374 integer, parameter :: CONSERVTAG = 200
00375 !
00376 ! For operand (ig_operand)
00377 !
00378 integer, parameter :: PSMIle_sin = 3680
00379 integer, parameter :: PSMILe_cos = 3681
00380 integer, parameter :: PSMILe_log = 3682
00381 !
00382 ! For combination location (ig_location)
00383 !
00384 integer, parameter :: PSMILe_source = 3695
00385 integer, parameter :: PSMILe_target = 3696
00386 !
00387 ! For combination method (ig_combi_meth)
00388 !
00389 integer, parameter :: PSMIle_smooth = 3685
00390 integer, parameter :: PSMILe_raw = 3686
00391 !
00392 ! Persistent type
00393 !
00394 integer, parameter :: PSMILe_local = 3710
00395 integer, parameter :: PSMILe_global = 3711
00396 !
00397 ! Actions performed in the transformer
00398 !
00399 integer, parameter :: PSMILe_trans_Init = 4000
00400 integer, parameter :: PSMILe_trans_Finalize = 4001
00401 integer, parameter :: PSMILe_trans_Put = 4002
00402 integer, parameter :: PSMILe_trans_Get = 4003
00403 integer, parameter :: PSMILe_trans_Set_neighbors_info = 4004
00404 integer, parameter :: PSMILe_trans_Set_src_epio_info = 4005
00405 integer, parameter :: PSMILe_trans_Set_tgt_epio_info = 4006
00406 integer, parameter :: PSMILe_trans_Set_triple_links = 4007
00407 integer, parameter :: PSMILe_trans_Get_rank = 4008
00408 integer, parameter :: PSMILe_trans_Set_epio_trans = 4009
00409 integer, parameter :: PSMILe_trans_Finalize_trans = 4010
00410 integer, parameter :: PSMILe_trans_End_trans = 4011
00411 integer, parameter :: PSMILe_trans_set_src_process = 4012
00412 integer, parameter :: PSMILe_trans_Abort = 4013
00413 integer, parameter :: PSMILe_trans_Set_rank_trans = 4014
00414 !
00415 ! Parameters used for the transformer management
00416 !
00417 integer, parameter :: PSMILe_trans_Header_length = 11
00418 integer, parameter :: PSMILe_trans_Max_iter = 100
00419
00420 integer, parameter :: PSMILe_trans_unset = 4020
00421 integer, parameter :: PSMILe_trans_notbegun = 4021
00422 integer, parameter :: PSMILe_trans_notrequested = 4022
00423 integer, parameter :: PSMILe_trans_complete = 4023
00424 !
00425 ! For reduced gauss grid initialisation
00426 !
00427 integer, parameter :: GAUSSNEIGHTAG = 300
00428 !
00429 ! Codes for global (extra) search messages:
00430 ! Note: PSMILe_Finalize_extra_search must be different from
00431 ! code for interpolation_methods such as
00432 ! "PSMILe_trilinear, PSMILe_bilinear, ..."
00433 !
00434 Integer, Parameter :: PSMILe_Finalize_extra_search = -1000
00435 !
00436 ! Message tags used in PSMILe_Enddef:
00437 ! The tags are used in within communcator "comm_psmile".
00438 !
00439 ! PSMILe_Enddef_tag = Tag used to exchange data within applications.
00440 ! REQTAG = Tag used to request the send of grid coordinates.
00441 ! GRDTAG = Tag used to send the grid coordinates.
00442 ! VARTAG = Tag used to send data on additional fields.
00443 ! EXTTAG = Tag used to request extra search of interpolation
00444 ! neighbours or to signal end of extra search.
00445 ! CELLTAG = Tag used to request extra search of cells
00446 ! or to signal end of extra search.
00447 !
00448 ! REXTTAG = Tag used to receive answer for extra search.
00449 ! SELTAG = Tag used to receive the selected points
00450 ! for lobal nearest neighbour search.
00451 ! LOCTAG = Tag used to return the locations found.
00452 ! (plus additional tags depending on number of
00453 ! intersections)
00454 ! DATATAG = Base Tag used to exchange the data on the fields.
00455 ! (plus additional field dependent parameters)
00456 ! HALOTAG = Tag used to exchange halo information in the routine
00457 ! psmile_get_halo_points
00458 !
00459 Integer, Parameter :: PSMILe_Enddef_tag = 100
00460 Integer, Parameter :: reqtag = 101
00461 Integer, Parameter :: grdtag = 102
00462 Integer, Parameter :: vartag = 103
00463 Integer, Parameter :: exttag = 104
00464 Integer, Parameter :: rexttag = 105
00465 Integer, Parameter :: seltag = 106
00466 Integer, Parameter :: celltag = 107
00467 !
00468 Integer, Parameter :: loctag = 110
00469 !
00470 Integer, Parameter :: datatag = 120
00471 !
00472 Integer, Parameter :: halotag = 130
00473
00474 ! ----------------------------------------------------------------------------
00475 !
00476 ! PSMILe internal global variables:
00477 ! ---------------------------------
00478 !
00479 ! ch_id : Character string containing the id of the process.
00480 ! The id has the form: "[global_rank] comp_name"
00481 !
00482 !
00483 ! comm_coupler : PSMILe internal communicator for communication
00484 ! with the coupler
00485 ! comm_trans : PSMILe internal communicator for communication
00486 ! with the transformer
00487 !
00488 ! comm_global : Communicator containing all processes
00489 !
00490 ! comm_psmile : Communicator containing all application processes
00491 ! i.e. all processes connected to the PSMILe library
00492 !
00493 ! coupler_rank : Rank in communicator "comm_coupler"
00494 ! global_rank : Rank in communicator "comm_global"
00495 ! psmile_rank : Rank in communicator "comm_psmile"
00496 ! trans_rank : Rank of the transformer in communicator "comm_trans"
00497 !
00498 ! psmile_size : Size of communicator "comm_psmile"
00499 !
00500 ! datatypes2MPI : Translation table from PRISM datatypes
00501 ! into MPI datatypes
00502 !
00503 ! Number_of_Fields_allocated : Length of the grid function vector
00504 ! Number_of_Grids_allocated : Length of the grid types vector
00505 ! Number_of_Methods_allocated: Length of the method types vector
00506 ! Number_of_cpls_allocated: Length of the cpl types vector
00507 ! Number_of_Userdefs_allocated : Length of userdef types vector
00508 !
00509 ! length_of_integer : Length of an integer variable in Bytes
00510 !
00511 ! noApplication : Number of PRISM applications.
00512 ! noComponents : Number of components for all applications.
00513 !
00514 ! MPI_was_initialized : Was MPI initialized by PRISM_Init ?
00515 ! = .false. : MPI was initialized by application
00516 ! program
00517 ! = .true. : MPI was initialized by PRISM_Init
00518 !
00519 ! protocol_version : Protocol version used for communication with coupler
00520 !
00521 ! PRISM_is_initialized : Was the PRISM environment initialized ?
00522 !
00523 ! TimeSteps : Time steps
00524 ! TimeSteps_info : Info to the time steps
00525 ! Number_of_Timesteps : Number of time steps where data has
00526 ! to be exchanged or to be written
00527 !
00528 ! all_comp_infos : Info's on all components to be coupled.
00529 ! Used in PRISM_Enddef ()
00530 ! Number_of_coll_comps : Total number of components to be coupled.
00531 ! Dimension of all_comp_infos (:).
00532 !
00533 ! comp_infos : Infos on the components (located on the actual process).
00534 ! The entries of "comp_info" are sorted by the
00535 ! global comp id.
00536 ! n_act_comp : Number of active components on the actual process.
00537 ! : Dimension of comp_infos(:).
00538 !
00539 ! name_coord
00540 !
00541 ! Important constants :
00542 ! ---------------------
00543 !
00544 ! real_pi : PI (real precision)
00545 ! real_pi2 : 2.0 * PI
00546 ! real_pih : PI / 2
00547 ! real_deg2rad : PI / 180
00548 ! ----------------------------------------------------------------------------
00549
00550 logical :: MPI_was_initialized = .false.
00551 logical :: PRISM_is_initialized = .false.
00552 logical :: PRISM_is_terminated = .false.
00553 logical :: PRISM_comp_init = .false.
00554
00555 integer, dimension(0:1) :: PRISM_Redirect
00556 integer :: PRISM_outputLevel = 1
00557 integer :: PRISM_noCompsPerProc = 0
00558 integer :: Number_of_Comps_allocated = 0
00559 integer :: Number_of_Masks_allocated = 0
00560 integer :: Number_of_Grids_allocated = 0
00561 integer :: Number_of_Methods_allocated = 0
00562 integer :: Number_of_Fields_allocated = 0
00563 integer :: Number_of_Cpls_allocated = 0
00564 integer :: Number_of_Userdefs_allocated = 0
00565 integer :: Number_of_Timesteps = 0
00566 integer :: Number_of_coll_comps = 0
00567 integer :: n_act_comp = 0
00568 integer :: noApplication = 0
00569 integer :: noComponents = 0
00570 integer :: noRanksets = 0
00571
00572 integer :: comm_coupler = MPI_COMM_NULL
00573 integer :: comm_trans = MPI_COMM_NULL
00574 integer :: comm_global = MPI_COMM_NULL
00575 integer :: comm_psmile = MPI_COMM_NULL
00576
00577 integer :: global_rank = -1
00578 integer :: coupler_rank = -1
00579 integer :: trans_rank = -1
00580 integer :: psmile_rank = -1
00581
00582 integer :: psmile_size = 0
00583
00584 integer :: protocol_version
00585 integer :: length_of_integer
00586
00587 integer :: datatype_enddef_comp
00588
00589 integer, parameter :: int64 = SELECTED_INT_KIND(14)
00590
00591 integer, dimension(1:NoDatatypes) :: datatypes2MPI
00592
00593 character(len=max_name) :: ch_id = '[?] undefined'
00594 character(len=3) :: name_coord (ndim_3d)
00595 !
00596 real :: real_pi, real_pi2, real_pih, real_deg2rad
00597 double precision :: dble_pi, dble_pi2, dble_pih, dble_deg2rad
00598 !
00599 ! shift of longitude range by +- 360 deg (psmile_overlap)
00600 !
00601 double precision :: shlon(0:2)
00602
00603 double precision, parameter :: zero = 0.0d0
00604 double precision, parameter :: one = 1.0d0
00605 double precision, parameter :: two = 2.0d0
00606 double precision, parameter :: three = 3.0d0
00607 double precision, parameter :: four = 4.0d0
00608 double precision, parameter :: half = 0.5d0
00609 double precision, parameter :: bignum = 1.0d20
00610 double precision, parameter :: tiny = 1.0d-14
00611 double precision, parameter :: baby = 1.1d-3
00612 double precision, parameter :: quart = 0.25d0
00613 double precision, parameter :: north_thresh = 1.45d0 ! threshold for coord transf.
00614 double precision, parameter :: south_thresh =-2.00d0 ! threshold for coord transf.
00615
00616 double precision, parameter :: def_init_val = 1.d36
00617
00618 data name_coord /'1st', '2nd', '3rd'/
00619