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_double_221 00010 ! 00011 ! !INTERFACE: 00012 00013 subroutine prism_set_points_3d_double_221 ( 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_double_221 00021 use psmile_user_data, only : psmile_store_data_points_3d_db 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 double precision, Intent (In) :: points_1st_array (:, :) 00039 00040 ! Array defining the longitude of the grid centers 00041 00042 double precision, Intent (In) :: points_2nd_array (:, :) 00043 00044 ! Array defining the latitude of the grid centers 00045 00046 double precision, 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 ! Specifies the shape for the "n_dim"-dimensional 00053 ! (including halo/overlap regions) with 00054 00055 ! points_actual_shape (1, 1) = Lowest first dimension of points_1st_array, ... 00056 ! points_actual_shape (2, 1) = Highest first dimension of points_1st_array, ... 00057 ! points_actual_shape (1, 2) = Lowest second dimension of points_1st_array, ... 00058 ! points_actual_shape (2, 2) = Highest second dimension of points_1st_array, ... 00059 ! ... 00060 ! points_actual_shape (1, i) = Lowest i-th dimension of points_1st_array, ... 00061 ! points_actual_shape (2, i) = Highest i-th dimension of points_1st_array, ... 00062 ! points_actual_shape (1, n_dim) = Lowest n_dim-th dimension of points_1st_array, ... 00063 ! points_actual_shape (2, n_dim) = Highest n_dim-th dimension of points_1st_array, ... 00064 00065 ! where n_dim corresponds to value of input parameter of n_dim 00066 ! of corresponding subroutine call prism_def_grid. 00067 00068 logical, Intent (In) :: new_points 00069 00070 ! Logical to indicate whether new points are specified (.true.) or old points 00071 ! shall be overwritten 00072 ! 00073 ! !INPUT/OUTPUT PARAMETERS: 00074 ! 00075 integer, intent (InOut) :: method_id 00076 00077 ! handle to the defined coordinate points 00078 ! 00079 ! !OUTPUT PARAMETERS: 00080 ! 00081 integer, intent (Out) :: ierror 00082 00083 ! Returns the error code of prism_set_points_3d_double_221; 00084 ! ierror = 0 : No error 00085 ! ierror > 0 : Severe error 00086 ! 00087 ! !DESCRIPTION: 00088 ! 00089 ! Subroutine "prism_set_points_3d_double_221" defines the localisation 00090 ! of the center 3 coordinate arrays of a grid covering a 3D physical space 00091 ! for the grid which has grid id "grid_id". It's a simple driver 00092 ! interface in order to support overloadig for the silly Fortran 95 00093 ! standard. 00094 ! 00095 ! 00096 ! !REVISION HISTORY: 00097 ! 00098 ! Date Programmer Description 00099 ! ---------- ---------- ----------- 00100 ! 01.12.03 H. Ritzdorf created 00101 ! 00102 !EOP 00103 !---------------------------------------------------------------------- 00104 ! 00105 ! $Id: prism_set_points_3d_double_221.F90 2740 2010-11-17 17:03:49Z hanke $ 00106 ! $Author: hanke $ 00107 ! 00108 Character(len=len_cvs_string), save :: mycvs = 00109 '$Id: prism_set_points_3d_double_221.F90 2740 2010-11-17 17:03:49Z hanke $' 00110 ! 00111 !---------------------------------------------------------------------- 00112 00113 #ifdef VERBOSE 00114 print 9990, trim(ch_id) 00115 call psmile_flushstd 00116 #endif /* VERBOSE */ 00117 00118 call psmile_store_data_points_3d_db ( method_id, point_name, & 00119 grid_id, points_actual_shape, & 00120 points_1st_array, points_2nd_array, points_3rd_array, & 00121 (/size(points_1st_array), size(points_2nd_array), & 00122 size(points_3rd_array)/), new_points, ierror ) 00123 00124 #ifdef VERBOSE 00125 print 9980, trim(ch_id), ierror 00126 call psmile_flushstd 00127 #endif /* VERBOSE */ 00128 00129 9990 format (1x, a, ': prism_set_points_3d_double_221: ') 00130 9980 format (1x, a, ': prism_set_points_3d_double_221: eof ierror =', i5) 00131 00132 end subroutine prism_set_points_3d_double_221