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