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