00001 !----------------------------------------------------------------------- 00002 ! Copyright 2006-2010, CERFACS, Toulouse, France. 00003 ! Copyright 2006-2010, SGI Germany, Munich, Germany. 00004 ! Copyright 2006-2010, NEC Europe Ltd., London, UK. 00005 ! All rights reserved. Use is subject to OASIS4 license terms. 00006 !----------------------------------------------------------------------- 00007 !BOP 00008 ! 00009 ! !ROUTINE: PRISM_Set_points_3d_real_223 00010 ! 00011 ! !INTERFACE: 00012 00013 subroutine prism_set_points_3d_real_223 ( method_id, point_name, & 00014 grid_id, points_actual_shape, & 00015 points_1st_array, points_2nd_array, points_3rd_array, & 00016 new_points, ierror ) 00017 ! 00018 ! !USES: 00019 ! 00020 use PRISM, dummy_interface => prism_set_points_3d_real_223 00021 use psmile_user_data, only : psmile_store_data_points_3d_re 00022 use PSMILe 00023 00024 implicit none 00025 ! 00026 ! !INPUT PARAMETERS: 00027 ! 00028 integer, Intent (In) :: grid_id 00029 00030 ! Specifies handle to the grid information created by routine 00031 ! prism_def_grid. 00032 00033 character(len=*), Intent (In) :: point_name 00034 00035 ! Specifies the name of the set of points specified, unique on each 00036 ! process within each component. 00037 00038 real, Intent (In) :: points_1st_array (:, :) 00039 00040 ! Array defining the longitude of the grid centers 00041 00042 real, Intent (In) :: points_2nd_array (:, :) 00043 00044 ! Array defining the latitude of the grid centers 00045 00046 real, Intent (In) :: points_3rd_array (:, :, :) 00047 00048 ! Array defining the depth of the grid centers 00049 00050 integer, Intent (In) :: points_actual_shape (1:2, *) 00051 00052 ! Array defining the depth of the grid centers 00053 00054 ! Specifies the shape for the "n_dim"-dimensional 00055 ! (including halo/overlap regions) with 00056 00057 ! points_actual_shape (1, 1) = Lowest first dimension of points_1st_array, ... 00058 ! points_actual_shape (2, 1) = Highest first dimension of points_1st_array, ... 00059 ! points_actual_shape (1, 2) = Lowest second dimension of points_1st_array, ... 00060 ! points_actual_shape (2, 2) = Highest second dimension of points_1st_array, ... 00061 ! ... 00062 ! points_actual_shape (1, i) = Lowest i-th dimension of points_1st_array, ... 00063 ! points_actual_shape (2, i) = Highest i-th dimension of points_1st_array, ... 00064 ! points_actual_shape (1, n_dim) = Lowest n_dim-th dimension of points_1st_array, ... 00065 ! points_actual_shape (2, n_dim) = Highest n_dim-th dimension of points_1st_array, ... 00066 00067 ! where n_dim corresponds to value of input parameter of n_dim 00068 ! of corresponding subroutine call prism_def_grid. 00069 ! for e.g. irregular lat-lon grid with sigma or isopycnic coordinates. 00070 00071 logical, Intent (In) :: new_points 00072 00073 ! Logical to indicate whether new points are specified (.true.) or old points 00074 ! shall be overwritten 00075 ! 00076 ! !INPUT/OUTPUT PARAMETERS: 00077 ! 00078 integer, intent (InOut) :: method_id 00079 00080 ! handle to the defined coordinate points 00081 ! 00082 ! !OUTPUT PARAMETERS: 00083 ! 00084 integer, Intent (Out) :: ierror 00085 00086 ! Returns the error code of prism_set_points_3d_real_223; 00087 ! ierror = 0 : No error 00088 ! ierror > 0 : Severe error 00089 ! 00090 ! !DESCRIPTION: 00091 ! 00092 ! Subroutine "prism_set_points_3d_real_223" defines the localisation 00093 ! of center 3 coordinate arrays of a grid covering a 3D physical space 00094 ! for the grid which has grid id "grid_id". It's a simple driver 00095 ! interface in order to support overloadig for the silly Fortran 95 00096 ! standard. 00097 ! 00098 ! 00099 ! !REVISION HISTORY: 00100 ! 00101 ! Date Programmer Description 00102 ! ---------- ---------- ----------- 00103 ! 01.12.03 H. Ritzdorf created 00104 ! 00105 !EOP 00106 !---------------------------------------------------------------------- 00107 ! 00108 ! $Id: prism_set_points_3d_real_223.F90 2740 2010-11-17 17:03:49Z hanke $ 00109 ! $Author: hanke $ 00110 ! 00111 Character(len=len_cvs_string), save :: mycvs = 00112 '$Id: prism_set_points_3d_real_223.F90 2740 2010-11-17 17:03:49Z hanke $' 00113 ! 00114 !---------------------------------------------------------------------- 00115 00116 #ifdef VERBOSE 00117 print 9990, trim(ch_id) 00118 call psmile_flushstd 00119 #endif /* VERBOSE */ 00120 00121 call psmile_store_data_points_3d_re ( method_id, point_name, & 00122 grid_id, points_actual_shape, & 00123 points_1st_array, points_2nd_array, points_3rd_array, & 00124 (/size(points_1st_array), size(points_2nd_array), & 00125 size(points_3rd_array)/), new_points, ierror ) 00126 00127 #ifdef VERBOSE 00128 print 9980, trim(ch_id), ierror 00129 call psmile_flushstd 00130 #endif /* VERBOSE */ 00131 00132 9990 format (1x, a, ': prism_set_points_3d_real_223: ') 00133 9980 format (1x, a, ': prism_set_points_3d_real_223: eof ierror =', i5) 00134 00135 end subroutine prism_set_points_3d_real_223