prism.F90

Go to the documentation of this file.
00001 ! --------------------  PRISM module file prism.F90 -------------------- 
00002 !
00003 ! $Id: prism.F90 2773 2010-11-25 14:48:32Z hanke $
00004 ! $Author: hanke $
00005 !
00006 !-----------------------------------------------------------------------
00007 ! Copyright 2006-2010, CERFACS, Toulouse, France.
00008 ! Copyright 2006-2010, SGI Germany, Munich, Germany.
00009 ! Copyright 2006-2010, NEC Europe Ltd., London, UK.
00010 ! All rights reserved. Use is subject to OASIS4 license terms.
00011 !-----------------------------------------------------------------------
00012 !BOP
00013 !
00014 ! !MODULE: PRISM
00015 !
00016 module PRISM
00017 !
00018 ! !USES:
00019 !
00020   use PRISM_Constants
00021   use psmile_user_data, only : prism_remove_mask => psmile_store_data_rm_mask
00022 
00023   implicit none
00024 !
00025 ! !DESCRIPTION:
00026 !
00027 ! The main purpose of the PRISM module is to provide an interface description of
00028 ! all PRISM routines, excluding PRISM_Put and PRISM_Get.
00029 !
00030 ! !REVISION HISTORY:
00031 !
00032 !   Date      Programmer   Description
00033 ! ----------  ----------   -----------
00034 ! 01.12.03    H. Ritzdorf  created
00035 ! 06.02.09    S. Valcke    split prism.F90 and prism_constants.F90
00036 !
00037 !EOP
00038 !
00039 ! ----------------------------------------------------------------------------
00040 ! Overloading routines used for specifications of Grid Definitions
00041 ! ----------------------------------------------------------------------------
00042 
00043 ! Fortran 90 is the dead of library programmers ! 
00044 ! (C might have been a better option)
00045 
00046   Interface prism_set_corners
00047 
00048      subroutine prism_set_corners_3d_double_333(grid_id, nbr_corners, corners_actual_shape, &
00049             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00050 
00051        Integer, Intent (In)                :: grid_id
00052        Integer, Intent (In)                :: nbr_corners
00053        Double Precision, Intent (In)       :: corners_1st_array (:, :, :, :)
00054        Double Precision, Intent (In)       :: corners_2nd_array (:, :, :, :)
00055        Double Precision, Intent (In)       :: corners_3rd_array (:, :, :, :)
00056        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00057        Integer, Intent(Out)                :: ierror
00058      end subroutine prism_set_corners_3d_double_333
00059 
00060      subroutine prism_set_corners_3d_double_221(grid_id, nbr_corners, corners_actual_shape, &
00061             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00062 
00063        Integer, Intent (In)                :: grid_id
00064        Integer, Intent (In)                :: nbr_corners
00065        Double Precision, Intent (In)       :: corners_1st_array (:, :, :)
00066        Double Precision, Intent (In)       :: corners_2nd_array (:, :, :)
00067        Double Precision, Intent (In)       :: corners_3rd_array (:, :)
00068        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00069        Integer, Intent(Out)                :: ierror
00070      end subroutine prism_set_corners_3d_double_221
00071 
00072      subroutine prism_set_corners_3d_double_223(grid_id, nbr_corners, corners_actual_shape, &
00073             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00074 
00075        Integer, Intent (In)                :: grid_id
00076        Integer, Intent (In)                :: nbr_corners
00077        Double Precision, Intent (In)       :: corners_1st_array (:, :, :)
00078        Double Precision, Intent (In)       :: corners_2nd_array (:, :, :)
00079        Double Precision, Intent (In)       :: corners_3rd_array (:, :, :, :)
00080        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00081        Integer, Intent(Out)                :: ierror
00082      end subroutine prism_set_corners_3d_double_223
00083 
00084      subroutine prism_set_corners_3d_double_112(grid_id, nbr_corners, corners_actual_shape, &
00085             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00086 
00087        Integer, Intent (In)                :: grid_id
00088        Integer, Intent (In)                :: nbr_corners
00089        Double Precision, Intent (In)       :: corners_1st_array (:, :)
00090        Double Precision, Intent (In)       :: corners_2nd_array (:, :)
00091        Double Precision, Intent (In)       :: corners_3rd_array (:, :, :)
00092        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00093        Integer, Intent(Out)                :: ierror
00094      end subroutine prism_set_corners_3d_double_112
00095 
00096      subroutine prism_set_corners_3d_double_113(grid_id, nbr_corners, corners_actual_shape, &
00097             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00098 
00099        Integer, Intent (In)                :: grid_id
00100        Integer, Intent (In)                :: nbr_corners
00101        Double Precision, Intent (In)       :: corners_1st_array (:, :)
00102        Double Precision, Intent (In)       :: corners_2nd_array (:, :)
00103        Double Precision, Intent (In)       :: corners_3rd_array (:, :, :, :)
00104        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00105        Integer, Intent(Out)                :: ierror
00106      end subroutine prism_set_corners_3d_double_113
00107 
00108      subroutine prism_set_corners_3d_double_111(grid_id, nbr_corners, corners_actual_shape, &
00109             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00110 
00111        Integer, Intent (In)                :: grid_id
00112        Integer, Intent (In)                :: nbr_corners
00113        Double Precision, Intent (In)       :: corners_1st_array (:, :)
00114        Double Precision, Intent (In)       :: corners_2nd_array (:, :)
00115        Double Precision, Intent (In)       :: corners_3rd_array (:, :)
00116        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00117        Integer, Intent(Out)                :: ierror
00118      end subroutine prism_set_corners_3d_double_111
00119 
00120 #ifndef PRISM_EXTENDED_WIDTH
00121 
00122      subroutine prism_set_corners_3d_real_333(grid_id, nbr_corners, corners_actual_shape, &
00123             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00124 
00125        Integer, Intent (In)                :: grid_id
00126        Integer, Intent (In)                :: nbr_corners
00127        Real, Intent (In)                   :: corners_1st_array (:, :, :, :)
00128        Real, Intent (In)                   :: corners_2nd_array (:, :, :, :)
00129        Real, Intent (In)                   :: corners_3rd_array (:, :, :, :)
00130        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00131        Integer, Intent(Out)                            :: ierror
00132      end subroutine prism_set_corners_3d_real_333
00133 
00134      subroutine prism_set_corners_3d_real_223(grid_id, nbr_corners, corners_actual_shape, &
00135             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00136 
00137        Integer, Intent (In)                :: grid_id
00138        Integer, Intent (In)                :: nbr_corners
00139        Real, Intent (In)                   :: corners_1st_array (:, :, :)
00140        Real, Intent (In)                   :: corners_2nd_array (:, :, :)
00141        Real, Intent (In)                   :: corners_3rd_array (:, :, :, :)
00142        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00143        Integer, Intent(Out)                :: ierror
00144      end subroutine prism_set_corners_3d_real_223
00145 
00146      subroutine prism_set_corners_3d_real_221(grid_id, nbr_corners, corners_actual_shape, &
00147             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00148 
00149        Integer, Intent (In)                :: grid_id
00150        Integer, Intent (In)                :: nbr_corners
00151        Real, Intent (In)                   :: corners_1st_array (:, :, :)
00152        Real, Intent (In)                   :: corners_2nd_array (:, :, :)
00153        Real, Intent (In)                   :: corners_3rd_array (:, :)
00154        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00155        Integer, Intent(Out)                :: ierror
00156      end subroutine prism_set_corners_3d_real_221
00157 
00158      subroutine prism_set_corners_3d_real_111(grid_id, nbr_corners, corners_actual_shape, &
00159             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00160 
00161        Integer, Intent (In)                :: grid_id
00162        Integer, Intent (In)                :: nbr_corners
00163        Real, Intent (In)                   :: corners_1st_array (:, :)
00164        Real, Intent (In)                   :: corners_2nd_array (:, :)
00165        Real, Intent (In)                   :: corners_3rd_array (:, :)
00166        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00167        Integer, Intent(Out)                :: ierror
00168      end subroutine prism_set_corners_3d_real_111
00169 
00170      subroutine prism_set_corners_3d_real_112(grid_id, nbr_corners, corners_actual_shape, &
00171             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00172 
00173        Integer, Intent (In)                :: grid_id
00174        Integer, Intent (In)                :: nbr_corners
00175        Real, Intent (In)                   :: corners_1st_array (:, :)
00176        Real, Intent (In)                   :: corners_2nd_array (:, :)
00177        Real, Intent (In)                   :: corners_3rd_array (:, :, :)
00178        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00179        Integer, Intent(Out)                :: ierror
00180      end subroutine prism_set_corners_3d_real_112
00181 
00182      subroutine prism_set_corners_3d_real_113(grid_id, nbr_corners, corners_actual_shape, &
00183             corners_1st_array, corners_2nd_array, corners_3rd_array, ierror)
00184 
00185        Integer, Intent (In)                :: grid_id
00186        Integer, Intent (In)                :: nbr_corners
00187        Real, Intent (In)                   :: corners_1st_array (:, :)
00188        Real, Intent (In)                   :: corners_2nd_array (:, :)
00189        Real, Intent (In)                   :: corners_3rd_array (:, :, :, :)
00190        Integer, Intent (In)                :: corners_actual_shape (1:2, *)
00191        Integer, Intent(Out)                :: ierror
00192      end subroutine prism_set_corners_3d_real_113
00193 #endif
00194 
00195   End Interface prism_set_corners
00196 
00197   Interface prism_set_points
00198 
00199      subroutine prism_set_points_3d_double_333 (method_id, point_name, grid_id, points_actual_shape, &
00200                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00201        Character (len=*), Intent(In)                   :: point_name
00202        Integer, Intent(In)                             :: grid_id
00203        Integer, Intent(InOut)                          :: method_id
00204        Double Precision, Intent(In), dimension (:,:,:) :: points_1st_array, points_2nd_array, points_3rd_array
00205        Integer, Intent(In)                             :: points_actual_shape (2, *)
00206        Logical, Intent(In)                             :: new_points
00207        Integer, Intent(Out)                            :: ierror 
00208      end subroutine prism_set_points_3d_double_333
00209 
00210      subroutine prism_set_points_3d_double_223 (method_id, point_name, grid_id, points_actual_shape, &
00211                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00212        Character (len=*), Intent(In)                   :: point_name
00213        Integer, Intent(In)                             :: grid_id
00214        Integer, Intent(InOut)                          :: method_id
00215        Double Precision, Intent(In), dimension (:,:)   :: points_1st_array, points_2nd_array
00216        Double Precision, Intent(In), dimension (:,:,:) :: points_3rd_array
00217        Integer, Intent(In)                             :: points_actual_shape (2, *)
00218        Logical, Intent(In)                             :: new_points
00219        Integer, Intent(Out)                            :: ierror 
00220      end subroutine prism_set_points_3d_double_223
00221 
00222      subroutine prism_set_points_3d_double_221 (method_id, point_name, grid_id, points_actual_shape, &
00223                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00224        Character (len=*), Intent(In)                   :: point_name
00225        Integer, Intent(In)                             :: grid_id
00226        Integer, Intent(InOut)                          :: method_id
00227        Double Precision, Intent(In), dimension (:,:)   :: points_1st_array, points_2nd_array
00228        Double Precision, Intent(In), dimension (:)     :: points_3rd_array
00229        Integer, Intent(In)                             :: points_actual_shape (2, *)
00230        Logical, Intent(In)                             :: new_points
00231        Integer, Intent(Out)                            :: ierror 
00232      end subroutine prism_set_points_3d_double_221
00233 
00234      subroutine prism_set_points_3d_double_113 (method_id, point_name, grid_id, points_actual_shape, &
00235                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00236        Character (len=*), Intent(In)                   :: point_name
00237        Integer, Intent(In)                             :: grid_id
00238        Integer, Intent(InOut)                          :: method_id
00239        Double Precision, Intent(In), dimension (:)     :: points_1st_array, points_2nd_array
00240        Double Precision, Intent(In), dimension (:,:,:) :: points_3rd_array
00241        Integer, Intent(In)                             :: points_actual_shape (2, *)
00242        Logical, Intent(In)                             :: new_points
00243        Integer, Intent(Out)                            :: ierror 
00244      end subroutine prism_set_points_3d_double_113
00245 
00246      subroutine prism_set_points_3d_double_112 (method_id, point_name, grid_id, points_actual_shape, &
00247                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00248        Character (len=*), Intent(In)                 :: point_name
00249        Integer, Intent(In)                           :: grid_id
00250        Integer, Intent(InOut)                        :: method_id
00251        Double Precision, Intent(In), dimension (:)   :: points_1st_array, points_2nd_array
00252        Double Precision, Intent(In), dimension (:,:) :: points_3rd_array
00253        Integer, Intent(In)                           :: points_actual_shape (2, *)
00254        Logical, Intent(In)                           :: new_points
00255        Integer, Intent(Out)                          :: ierror 
00256      end subroutine prism_set_points_3d_double_112
00257 
00258      subroutine prism_set_points_3d_double_111 (method_id, point_name, grid_id, points_actual_shape, &
00259                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00260        Character (len=*), Intent(In)                 :: point_name
00261        Integer, Intent(In)                           :: grid_id
00262        Integer, Intent(InOut)                        :: method_id
00263        Double Precision, Intent(In), dimension (:)   :: points_1st_array, points_2nd_array
00264        Double Precision, Intent(In), dimension (:)   :: points_3rd_array
00265        Integer, Intent(In)                           :: points_actual_shape (2, *)
00266        Logical, Intent(In)                           :: new_points
00267        Integer, Intent(Out)                          :: ierror
00268      end subroutine prism_set_points_3d_double_111
00269 
00270 
00271 #ifndef PRISM_EXTENDED_WIDTH
00272 
00273      subroutine prism_set_points_3d_real_333 (method_id, point_name, grid_id, points_actual_shape, &
00274                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00275        Character (len=*), Intent(In)                 :: point_name
00276        Integer, Intent(In)                           :: grid_id
00277        Integer, Intent(InOut)                        :: method_id
00278        Real,    Intent(In), dimension (:,:,:)        :: points_1st_array, points_2nd_array, points_3rd_array
00279        Integer, Intent(In)                           :: points_actual_shape (2, *)
00280        Logical, Intent(In)                           :: new_points
00281        Integer, Intent(Out)                          :: ierror 
00282      end subroutine prism_set_points_3d_real_333
00283 
00284      subroutine prism_set_points_3d_real_223 (method_id, point_name, grid_id, points_actual_shape, &
00285                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00286        Character (len=*), Intent(In)                 :: point_name
00287        Integer, Intent(In)                           :: grid_id
00288        Integer, Intent(InOut)                        :: method_id
00289        Real, Intent(In), dimension (:,:)             :: points_1st_array, points_2nd_array
00290        Real, Intent(In), dimension (:,:,:)           :: points_3rd_array
00291        Integer, Intent(In)                           :: points_actual_shape (2, *)
00292        Logical, Intent(In)                           :: new_points
00293        Integer, Intent(Out)                          :: ierror 
00294      end subroutine prism_set_points_3d_real_223
00295 
00296      subroutine prism_set_points_3d_real_221 (method_id, point_name, grid_id, points_actual_shape, &
00297                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00298        Character (len=*), Intent(In)                 :: point_name
00299        Integer, Intent(In)                           :: grid_id
00300        Integer, Intent(InOut)                        :: method_id
00301        Real, Intent(In), dimension (:,:)             :: points_1st_array, points_2nd_array
00302        Real, Intent(In), dimension (:)               :: points_3rd_array
00303        Integer, Intent(In)                           :: points_actual_shape (2, *)
00304        Logical, Intent(In)                           :: new_points
00305        Integer, Intent(Out)                          :: ierror 
00306      end subroutine prism_set_points_3d_real_221
00307 
00308      subroutine prism_set_points_3d_real_122 (method_id, point_name, grid_id, points_actual_shape, &
00309                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00310        Character (len=*), Intent(In)                 :: point_name
00311        Integer, Intent(In)                           :: grid_id
00312        Integer, Intent(InOut)                        :: method_id
00313        Real, Intent(In), dimension (:)               :: points_1st_array
00314        Real, Intent(In), dimension (:,:)             :: points_2nd_array, points_3rd_array
00315        Integer, Intent(In)                           :: points_actual_shape (2, *)
00316        Logical, Intent(In)                           :: new_points
00317        Integer, Intent(Out)                          :: ierror 
00318      end subroutine prism_set_points_3d_real_122
00319 
00320      subroutine prism_set_points_3d_real_113 (method_id, point_name, grid_id, points_actual_shape, &
00321                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00322        Character (len=*), Intent(In)                 :: point_name
00323        Integer, Intent(In)                           :: grid_id
00324        Integer, Intent(InOut)                        :: method_id
00325        Real, Intent(In), dimension (:)               :: points_1st_array, points_2nd_array
00326        Real, Intent(In), dimension (:,:,:)           :: points_3rd_array
00327        Integer, Intent(In)                           :: points_actual_shape (2, *)
00328        Logical, Intent(In)                           :: new_points
00329        Integer, Intent(Out)                          :: ierror 
00330      end subroutine prism_set_points_3d_real_113
00331 
00332      subroutine prism_set_points_3d_real_112 (method_id, point_name, grid_id, points_actual_shape, &
00333                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00334        Character (len=*), Intent(In)                 :: point_name
00335        Integer, Intent(In)                           :: grid_id
00336        Integer, Intent(InOut)                        :: method_id
00337        Real, Intent(In), dimension (:)               :: points_1st_array, points_2nd_array
00338        Real, Intent(In), dimension (:,:)             :: points_3rd_array
00339        Integer, Intent(In)                           :: points_actual_shape (2, *)
00340        Logical, Intent(In)                           :: new_points
00341        Integer, Intent(Out)                          :: ierror 
00342      end subroutine prism_set_points_3d_real_112
00343 
00344      subroutine prism_set_points_3d_real_111 (method_id, point_name, grid_id, points_actual_shape, &
00345                           points_1st_array, points_2nd_array, points_3rd_array, new_points, ierror)
00346        Character (len=*), Intent(In)                 :: point_name
00347        Integer, Intent(In)                           :: grid_id
00348        Integer, Intent(InOut)                        :: method_id
00349        Real, Intent(In), dimension (:)               :: points_1st_array, points_2nd_array
00350        Real, Intent(In), dimension (:)               :: points_3rd_array
00351        Integer, Intent(In)                           :: points_actual_shape (2, *)
00352        Logical, Intent(In)                           :: new_points
00353        Integer, Intent(Out)                          :: ierror
00354      end subroutine prism_set_points_3d_real_111
00355 
00356 #endif /* PRISM_EXTENDED_WIDTH */
00357 
00358   End Interface prism_set_points
00359 
00360 ! ----------------------------------------------------------------------------
00361 ! Overloading PRISM_Calc_newdate
00362 ! ----------------------------------------------------------------------------
00363 
00364   Interface  PRISM_Calc_newdate
00365 
00366      subroutine prism_calc_newdate_int ( date, date_incr, ierror )
00367        use PRISM_Constants, only : PRISM_Time_struct
00368        Integer, Intent(In)                     :: date_incr
00369        Type (PRISM_Time_struct), Intent(InOut) :: date
00370        Integer, Intent(Out)                    :: ierror
00371      end subroutine prism_calc_newdate_int
00372 
00373 #ifndef PRISM_EXTENDED_WIDTH
00374      subroutine prism_calc_newdate_real ( date, date_incr, ierror )
00375        use PRISM_Constants, only : PRISM_Time_struct
00376        Real, Intent(In)                        :: date_incr
00377        Type (PRISM_Time_struct), Intent(InOut) :: date
00378        Integer, Intent(Out)                    :: ierror
00379      end subroutine prism_calc_newdate_real
00380 #endif
00381 
00382      subroutine prism_calc_newdate_double ( date, date_incr, ierror )
00383        use PRISM_Constants, only : PRISM_Time_struct
00384        Double Precision, Intent(In)            :: date_incr
00385        Type (PRISM_Time_struct), Intent(InOut) :: date
00386        Integer, Intent(Out)                    :: ierror
00387      end subroutine prism_calc_newdate_double
00388 
00389   End Interface
00390 
00391 ! ----------------------------------------------------------------------------
00392 ! Interfaces of PRISM routines
00393 ! ----------------------------------------------------------------------------
00394 
00395   Interface
00396 
00397      subroutine prism_init ( appl_name, ierror )
00398        Character (len=*), Intent(In) :: appl_name
00399        Integer, Intent (Out)         :: ierror
00400      end subroutine prism_init
00401 
00402      subroutine prism_initialized ( flag, ierror )
00403        Logical, Intent (Out) :: flag
00404        Integer, Intent (Out) :: ierror
00405      end subroutine prism_initialized
00406 
00407      subroutine prism_init_comp ( comp_id, comp_name, ierror )
00408        Character (len=*), Intent(In) :: comp_name
00409        Integer, Intent (Out) :: comp_id, ierror
00410      end subroutine prism_init_comp
00411 
00412      subroutine prism_enddef ( ierror )
00413        Integer, Intent (Out) :: ierror
00414      end subroutine prism_enddef
00415 
00416      subroutine prism_terminate ( ierror )
00417        Integer, Intent (Out) :: ierror
00418      end subroutine prism_terminate
00419 
00420      subroutine prism_terminated ( flag, ierror )
00421        Logical, Intent (Out) :: flag
00422        Integer, Intent (Out) :: ierror
00423      end subroutine prism_terminated
00424 
00425      subroutine prism_abort ( comp_id, file, mesg )
00426        Integer, Intent (InOut)      :: comp_id
00427        Character(len=*), Intent(In) :: file
00428        Character(len=*), Intent(In) :: mesg
00429      end subroutine prism_abort
00430 
00431      subroutine prism_error ( ierror, error_message )
00432        Character(len=*), Intent (Out) :: error_message
00433        Integer, Intent (In)           :: ierror
00434      end subroutine prism_error
00435 
00436      subroutine prism_message ( comp_id, string )
00437        Integer, Intent (In)          :: comp_id
00438        Character (len=*), Intent(In) :: string
00439      end subroutine prism_message
00440 
00441      subroutine prism_version ()
00442      end subroutine prism_version
00443 
00444      subroutine prism_get_localcomm ( comp_id, local_comm, ierror )
00445        Integer, Intent (In)  :: comp_id
00446        Integer, Intent (Out) :: local_comm, ierror
00447      end subroutine prism_get_localcomm
00448 
00449      subroutine prism_get_selected_real_type ( prec, range, type, ierror)
00450        Integer, Intent (In)  :: prec, range
00451        Integer, Intent (Out) :: type, ierror
00452      end subroutine prism_get_selected_real_type
00453 
00454      subroutine prism_get_real_kind_type ( kindr, type, ierror)
00455        Integer, Intent (In)  :: kindr
00456        Integer, Intent (Out) :: type, ierror
00457      end subroutine prism_get_real_kind_type
00458 
00459      subroutine prism_get_calendar_type ( calendar_name, calendar_type_id, ierror )
00460        Character(len=132), Intent(Out) :: calendar_name
00461        Integer, Intent (Out)           :: calendar_type_id
00462        Integer, Intent (Out)           :: ierror
00463      end subroutine prism_get_calendar_type
00464 
00465      subroutine prism_get_nb_ranklists ( comp_name, nb_ranklists, ierror )
00466        Character(len=*), Intent(In)    :: comp_name
00467        Integer, Intent (Out)           :: nb_ranklists
00468        Integer, Intent (Out)           :: ierror
00469      end subroutine prism_get_nb_ranklists
00470 
00471      subroutine prism_get_ranklists ( comp_name, nb_ranklists, ranklists, ierror )
00472        Character(len=*), Intent(In)    :: comp_name
00473        Integer, Intent(In)             :: nb_ranklists
00474        Integer, Dimension(nb_ranklists,3), Intent (Out) :: ranklists
00475        Integer, Intent (Out)           :: ierror
00476      end subroutine prism_get_ranklists
00477 
00478 ! ----------------------------------------------------------------------------
00479 ! Grid definition and specifications for grid definitions
00480 ! ----------------------------------------------------------------------------
00481 
00482       subroutine prism_def_grid (grid_id, grid_name, comp_id, &
00483                                  grid_valid_shape, grid_type, ierror )
00484 
00485          character(len=*), intent(in) :: grid_name
00486          integer, intent (in)         :: comp_id
00487          integer, intent (in)         :: grid_valid_shape (1:2,*)
00488          integer, intent (in)         :: grid_type
00489          integer, intent (out)        :: grid_id
00490          integer, intent (out)        :: ierror
00491       end subroutine prism_def_grid
00492 
00493       subroutine prism_def_partition (grid_id, nbr_blocks, &
00494                                       partition_array, extent_array, ierror )
00495          integer, intent (in)  :: grid_id
00496          integer, intent (in)  :: nbr_blocks
00497          integer, intent (in)  :: partition_array(1:nbr_blocks,*)
00498          integer, intent (in)  :: extent_array(1:nbr_blocks,*)
00499          integer, intent (out) :: ierror
00500       end subroutine prism_def_partition
00501 
00502       subroutine prism_set_mask (mask_id, grid_id, mask_actual_shape, &
00503                                  mask_array, new_mask, ierror)
00504          integer, intent(inout) :: mask_id
00505          integer, intent(in)    :: grid_id
00506          integer, intent(in)    :: mask_actual_shape(2, *)
00507          logical, intent(in)    :: mask_array (*)
00508          logical, intent(in)    :: new_mask
00509          integer, intent(out)   :: ierror
00510       end subroutine prism_set_mask
00511 
00512       subroutine prism_def_var (var_id, var_name, grid_id, point_id, mask_id, &
00513                                 var_nodims, var_actual_shape, var_type, ierror)
00514          character (len=*), intent (in) :: var_name
00515          integer, intent (in)           :: mask_id
00516          integer, intent (in)           :: point_id
00517          integer, intent (in)           :: grid_id
00518          integer, intent (in)           :: var_nodims(2)
00519          integer, intent (in)           :: var_actual_shape(1:2,1:var_nodims(1))
00520          integer, intent (in)           :: var_type
00521          integer, intent (out)          :: var_id
00522          integer, intent (out)          :: ierror
00523       end subroutine prism_def_var
00524 
00525       subroutine prism_reducedgrid_map (grid_id, nbr_latitudes, &
00526                                         nbr_points_per_lat, ierror)
00527          integer, intent (in)  :: grid_id
00528          integer, intent (in)  :: nbr_latitudes
00529          integer, intent (in)  :: nbr_points_per_lat(nbr_latitudes)
00530          integer, intent (out) :: ierror
00531       end subroutine prism_reducedgrid_map
00532 
00533       subroutine prism_set_points_gridless (point_id, point_name, grid_id, &
00534                                             new_points, ierror)
00535          character (len=*), intent(in)    :: point_name
00536          integer,           intent(in)    :: grid_id
00537          integer,           intent(inout) :: point_id
00538          logical,           intent(in)    :: new_points
00539          integer,           intent(out)   :: ierror
00540       end subroutine prism_set_points_gridless
00541 
00542 ! ----------------------------------------------------------------------------
00543 ! Routines related to file I/O
00544 ! ----------------------------------------------------------------------------
00545 
00546      subroutine prism_get_io_units ( no_of_remaining_units, units, ierror )
00547        Integer, Intent (Out)               :: units(:)
00548        Integer, Intent (Out)               :: no_of_remaining_units
00549        Integer, Intent (Out)               :: ierror
00550      end subroutine PRISM_Get_IO_Units
00551 
00552      subroutine prism_put_inquire ( field_id, date, date_bounds, info, ierror )
00553        use PRISM_Constants, only : PRISM_Time_struct
00554        Integer, Intent (In)                 :: field_id
00555        Type(PRISM_Time_Struct), Intent (In) :: date
00556        Type(PRISM_Time_Struct), Intent (In) :: date_bounds(2)
00557        Integer, Intent (Out)                :: info
00558        Integer, Intent (Out)                :: ierror
00559      end subroutine prism_put_inquire
00560 
00561   End Interface
00562 
00563 end module PRISM

Generated on 18 Mar 2011 for Oasis4 by  doxygen 1.6.1