psmile.inc

Go to the documentation of this file.
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 

Generated on 1 Dec 2011 for Oasis4 by  doxygen 1.6.1