SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
dummy_eggangles.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 MODULE eggangles
6 USE parkind1 ,ONLY : jpim, jprb
7 TYPE lola
8  sequence
9  REAL(KIND=JPRB) :: LON, LAT
10 END TYPE lola
11 INTERFACE angle_domain
13 END INTERFACE
14 INTERFACE val_lat
15  MODULE PROCEDURE val_lat_s, val_lat_v
16 END INTERFACE
17 INTERFACE val_lon
18  MODULE PROCEDURE val_lon_s, val_lon_v
19 END INTERFACE
20 INTERFACE val_coord
21  MODULE PROCEDURE val_coord_s, val_coord_v
22 END INTERFACE
23 INTERFACE lolad
24  MODULE PROCEDURE lolad_s, lolad_v
25 END INTERFACE
26 INTERFACE lolar
27  MODULE PROCEDURE lolar_s, lolar_v
28 END INTERFACE
29 INTERFACE minimax
30  MODULE PROCEDURE minimax_s, minimax_v
31 END INTERFACE
32 INTERFACE cosin_to_angle
33  MODULE PROCEDURE cosin_to_angle_s, cosin_to_angle_v
34 END INTERFACE
35 INTERFACE p_asin
36  MODULE PROCEDURE p_asin_s, p_asin_v
37 END INTERFACE
38 INTERFACE p_acos
39  MODULE PROCEDURE p_acos_s, p_acos_v
40 END INTERFACE
41 INTERFACE dist_2ref
42  MODULE PROCEDURE dist_2ref_s, dist_2ref_v, dist_2ref_l
43 END INTERFACE
44 INTERFACE size_w2e
45  MODULE PROCEDURE size_w2e_s, size_w2e_l
46 END INTERFACE
47 
48  CONTAINS
49 REAL(KIND=JPRB) FUNCTION angle_domain_rs(ALPHA,PI,DOM,UNIT) RESULT (BETA)
50 REAL(KIND=JPRB), INTENT(IN) :: alpha
51  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: dom
52  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
53 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
54 END FUNCTION angle_domain_rs
55 TYPE (lola) function angle_domain_lolas(alpha,pi,dom,unit) result (beta)
56 TYPE (lola), INTENT(IN) :: alpha
57  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: dom
58  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
59 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
60 END FUNCTION angle_domain_lolas
61 ! -------------------------------------------------------------------------------
62 FUNCTION angle_domain_rv(ALPHA,PI,DOM,UNIT) RESULT (BETA)
63 REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: alpha
64  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: dom
65  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
66 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
67 END FUNCTION angle_domain_rv
68 ! -------------------------------------------------------------------------------
69 FUNCTION angle_domain_lolav(YL_ALPHA,PI,DOM,UNIT) RESULT (YD_BETA)
70 TYPE (lola), DIMENSION(:), INTENT(IN) :: yl_alpha
71  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: dom
72  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
73 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
74 END FUNCTION angle_domain_lolav
75 ! -------------------------------------------------------------------------------
76 INTEGER(KIND=JPIM) FUNCTION val_lat_s(LAT,NUM_ERR,PI,UNIT) RESULT(ETAT)
77 REAL(KIND=JPRB), INTENT(IN) :: lat
78  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
79 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
80 INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: num_err
81 END FUNCTION val_lat_s
82 ! -------------------------------------------------------------------------------
83 INTEGER(KIND=JPIM) FUNCTION val_lat_v(P_LAT,NUM_ERR,PI,UNIT) RESULT(ETAT)
84 REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: p_lat
85  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
86 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
87 INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: num_err
88 END FUNCTION val_lat_v
89 ! -------------------------------------------------------------------------------
90 INTEGER(KIND=JPIM) FUNCTION val_lon_s(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
91 REAL(KIND=JPRB), INTENT(IN) :: lon
92  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: dom
93  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
94 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
95 INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: num_err
96 END FUNCTION val_lon_s
97 ! -------------------------------------------------------------------------------
98 INTEGER(KIND=JPIM) FUNCTION val_lon_v(LON,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
99 REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: lon
100  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: dom
101  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
102 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
103 INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: num_err
104 END FUNCTION val_lon_v
105 ! -------------------------------------------------------------------------------
106 INTEGER(KIND=JPIM) FUNCTION val_coord_s(PT_COORD,NUM_ERR,PI,DOM,UNIT) RESULT(ETAT)
107 TYPE (lola), INTENT(IN) :: pt_coord
108  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: dom
109  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: unit
110 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
111 INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: num_err
112 END FUNCTION val_coord_s
113 ! -------------------------------------------------------------------------------
114 INTEGER(KIND=JPIM) FUNCTION val_coord_v(YD_PT_COORD,K_NUM_ERR,PI,CD_DOM,CD_UNIT) RESULT(ETAT)
115 TYPE (lola), DIMENSION(:), INTENT(IN) :: yd_pt_coord
116  CHARACTER (LEN=2), INTENT(IN), OPTIONAL :: cd_dom
117  CHARACTER (LEN=1), INTENT(IN), OPTIONAL :: cd_unit
118 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
119 INTEGER(KIND=JPIM), INTENT(IN), OPTIONAL :: k_num_err
120 END FUNCTION val_coord_v
121 ! -------------------------------------------------------------------------------
122 TYPE(lola) function lolar_s (coord_deg) result (coord_rad)
123 ! DEG => RAD for lola type
124 TYPE(lola), INTENT(IN) :: coord_deg
125 END FUNCTION lolar_s
126 
127 FUNCTION lolar_v (COORD_DEG) RESULT (COORD_RAD)
128 ! DEG => RAD for lola type
129 TYPE(lola), DIMENSION(:), INTENT(IN) :: coord_deg
130 
131 END FUNCTION lolar_v
132 ! -------------------------------------------------------------------------------
133 TYPE(lola) function lolad_s (coord_rad) result (coord_deg)
134 ! RAD => DEG for lola type
135 TYPE(lola), INTENT(IN) :: coord_rad
136 END FUNCTION lolad_s
137 
138 FUNCTION lolad_v (COORD_RAD) RESULT (COORD_DEG)
139 ! RAD => DEG for lola type
140 TYPE(lola), DIMENSION(:), INTENT(IN) :: coord_rad
141 END FUNCTION lolad_v
142 ! -------------------------------------------------------------------------------
143 REAL(KIND=JPRB) FUNCTION cosin_to_angle_s(COSINUS,SINUS) RESULT (ANGLE)
144 ! (Cosinus,Sinus) => Angle
145 REAL(KIND=JPRB), INTENT(IN) :: cosinus,sinus
146 END FUNCTION cosin_to_angle_s
147 
148 FUNCTION cosin_to_angle_v(COSINUS,SINUS) RESULT (ANGLE)
149 ! (Cosinus,Sinus) => Angle
150 REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: cosinus,sinus
151 END FUNCTION cosin_to_angle_v
152 ! -------------------------------------------------------------------------------
153 REAL(KIND=JPRB) FUNCTION p_acos_s(COSINUS) RESULT (ANGLE)
154 ! Protected ACOS
155 REAL(KIND=JPRB), INTENT(IN) :: cosinus
156 END FUNCTION p_acos_s
157 
158 FUNCTION p_acos_v(COSINUS) RESULT (ANGLE)
159 ! Protected ACOS
160 REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: cosinus
161 END FUNCTION p_acos_v
162 ! -------------------------------------------------------------------------------
163 REAL(KIND=JPRB) FUNCTION p_asin_s(SINUS) RESULT (ANGLE)
164 ! Protected ASIN
165 REAL(KIND=JPRB), INTENT(IN) :: sinus
166 END FUNCTION p_asin_s
167 
168 FUNCTION p_asin_v(SINUS) RESULT (ANGLE)
169 ! Protected ASIN
170 REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: sinus
171 END FUNCTION p_asin_v
172 REAL(KIND=JPRB) FUNCTION minimax_s(VAL,LIM) RESULT (VALO)
173 ! Return Value in [-LIM,LIM]
174 REAL(KIND=JPRB), INTENT(IN) :: val
175 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: lim
176 END FUNCTION minimax_s
177 FUNCTION minimax_v(VAL,LIM) RESULT (VALO)
178 ! Return Value in [-LIM,LIM]
179 REAL(KIND=JPRB), DIMENSION(:), INTENT(IN) :: val
180 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: lim
181 REAL(KIND=JPRB), DIMENSION(SIZE(VAL)) :: valo
182 END FUNCTION minimax_v
183 ! -------------------------------------------------------------------------------
184 REAL(KIND=JPRB) FUNCTION dist_2ref_l(COORD_LON,REF_LON,PI) RESULT(DIST)
185 REAL(KIND=JPRB), INTENT(IN) :: coord_lon, ref_lon
186 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
187 END FUNCTION dist_2ref_l
188 ! -------------------------------------------------------------------------------
189 REAL(KIND=JPRB) FUNCTION dist_2ref_s(PT_COORD,REF_COORD,PI) RESULT(DIST)
190 
191 TYPE (lola), INTENT(IN) :: pt_coord, ref_coord
192 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
193 END FUNCTION dist_2ref_s
194 ! -------------------------------------------------------------------------------
195 FUNCTION dist_2ref_v(PT_COORD,REF_COORD,PI) RESULT(DIST)
196 TYPE (lola), DIMENSION(:), INTENT(IN) :: pt_coord
197 TYPE (lola), INTENT(IN) :: ref_coord
198 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
199 REAL(KIND=JPRB), DIMENSION(SIZE(PT_COORD)) :: dist
200 END FUNCTION dist_2ref_v
201 ! -------------------------------------------------------------------------------
202 REAL(KIND=JPRB) FUNCTION size_w2e_l(WEST_LON,EAST_LON,PI) RESULT(TAILLE)
203 REAL(KIND=JPRB), INTENT(IN) :: west_lon, east_lon
204 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
205 END FUNCTION size_w2e_l
206 ! -------------------------------------------------------------------------------
207 REAL(KIND=JPRB) FUNCTION size_w2e_s(WEST_COORD,EAST_COORD,PI) RESULT(TAILLE)
208 TYPE (lola), INTENT(IN) :: west_coord, east_coord
209 REAL(KIND=JPRB), INTENT(IN), OPTIONAL :: pi
210 END FUNCTION size_w2e_s
211 ! -------------------------------------------------------------------------------
212 END MODULE eggangles
REAL(KIND=JPRB) function dist_2ref_s(PT_COORD, REF_COORD, PI)
INTEGER(KIND=JPIM) function val_lon_v(LON, NUM_ERR, PI, DOM, UNIT)
TYPE(LOLA) function lolar_s(COORD_DEG)
REAL(KIND=JPRB) function angle_domain_rs(ALPHA, PI, DOM, UNIT)
REAL(KIND=JPRB) function p_asin_s(SINUS)
INTEGER(KIND=JPIM) function val_coord_s(PT_COORD, NUM_ERR, PI, DOM, UNIT)
REAL(KIND=JPRB) function size_w2e_l(WEST_LON, EAST_LON, PI)
function angle_domain_lolav(YL_ALPHA, PI, DOM, UNIT)
REAL(KIND=JPRB) function minimax_s(VAL, LIM)
function p_asin_v(SINUS)
function lolad_v(COORD_RAD)
TYPE(LOLA) function angle_domain_lolas(ALPHA, PI, DOM, UNIT)
INTEGER(KIND=JPIM) function val_lat_s(LAT, NUM_ERR, PI, UNIT)
function p_acos_v(COSINUS)
REAL(KIND=JPRB) function cosin_to_angle_s(COSINUS, SINUS)
function cosin_to_angle_v(COSINUS, SINUS)
REAL(KIND=JPRB) function size_w2e_s(WEST_COORD, EAST_COORD, PI)
function angle_domain_rv(ALPHA, PI, DOM, UNIT)
REAL(KIND=JPRB) function dist_2ref_l(COORD_LON, REF_LON, PI)
REAL(KIND=JPRB) function p_acos_s(COSINUS)
function lolar_v(COORD_DEG)
real(kind=jprb) function, dimension(size(val)) minimax_v(VAL, LIM)
INTEGER(KIND=JPIM) function val_lat_v(P_LAT, NUM_ERR, PI, UNIT)
real(kind=jprb) function, dimension(size(pt_coord)) dist_2ref_v(PT_COORD, REF_COORD, PI)
INTEGER(KIND=JPIM) function val_lon_s(LON, NUM_ERR, PI, DOM, UNIT)
INTEGER(KIND=JPIM) function val_coord_v(YD_PT_COORD, K_NUM_ERR, PI, CD_DOM, CD_UNIT)
TYPE(LOLA) function lolad_s(COORD_RAD)