psmile.inc

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

Generated on 18 Mar 2011 for Oasis4 by  doxygen 1.6.1