Changeset 599 for codes/icosagcm/trunk/src/diagnostics
- Timestamp:
- 10/19/17 17:04:26 (7 years ago)
- Location:
- codes/icosagcm/trunk/src/diagnostics
- Files:
-
- 1 added
- 2 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/diagnostics/check_conserve.f90
r548 r599 299 299 REAL(rstd),INTENT(INOUT) :: e, s, AAM_mass, AAM_vel, rmsv 300 300 301 REAL(rstd) :: ucenter(iim*jjm, 3,llm)301 REAL(rstd) :: ucenter(iim*jjm,llm,3) 302 302 REAL(rstd) :: ulon(iim*jjm,llm) 303 303 REAL(rstd) :: ulat(iim*jjm,llm) -
codes/icosagcm/trunk/src/diagnostics/observable.f90
r581 r599 6 6 TYPE(t_field),POINTER, SAVE :: f_buf_i(:), & 7 7 f_buf_Fel(:), f_buf_uh(:), & ! horizontal velocity, different from prognostic velocity if NH 8 f_buf_ulon(:), f_buf_ulat(:), & 9 f_buf_u3d(:) ! unused, remove ? 8 f_buf_ulon(:), f_buf_ulat(:) 10 9 TYPE(t_field),POINTER, SAVE :: f_buf1_i(:), f_buf2_i(:) 11 10 TYPE(t_field),POINTER, SAVE :: f_buf_v(:), f_buf_s(:), f_buf_p(:) … … 24 23 CALL allocate_field(f_buf2_i, field_t,type_real,llm,name="buffer2_i") 25 24 CALL allocate_field(f_buf_p, field_t,type_real,llm+1) 26 CALL allocate_field(f_buf_u3d, field_t,type_real,3,llm) ! 3D vel at cell centers27 25 CALL allocate_field(f_buf_ulon,field_t,type_real,llm, name="buf_ulon") 28 26 CALL allocate_field(f_buf_ulat,field_t,type_real,llm, name="buf_ulat") … … 49 47 USE theta2theta_rhodz_mod 50 48 USE omega_mod 49 USE diagflux_mod 51 50 LOGICAL, INTENT(IN) :: init 52 51 INTEGER :: l … … 160 159 END IF 161 160 161 IF(.NOT. init) THEN 162 IF(diagflux_on) THEN 163 CALL flux_centered_lonlat(1./(itau_out*dt) , f_massfluxt, f_buf_ulon, f_buf_ulat) 164 CALL output_field("mass_t", f_masst) 165 CALL output_field("massflux_lon",f_buf_ulon) 166 CALL output_field("massflux_lat",f_buf_ulat) 167 168 CALL transfert_request(f_epotfluxt,req_e1_vect) 169 CALL flux_centered_lonlat(1./(itau_out*dt) , f_epotfluxt, f_buf_ulon, f_buf_ulat) 170 CALL output_field("epot_t", f_epot) 171 CALL output_field("epotflux_lon",f_buf_ulon) 172 CALL output_field("epotflux_lat",f_buf_ulat) 173 174 CALL transfert_request(f_ekinfluxt,req_e1_vect) 175 CALL flux_centered_lonlat(1./(itau_out*dt) , f_ekinfluxt, f_buf_ulon, f_buf_ulat) 176 CALL output_field("ekin_t", f_ekin) 177 CALL output_field("ekinflux_lon",f_buf_ulon) 178 CALL output_field("ekinflux_lat",f_buf_ulat) 179 180 CALL transfert_request(f_enthalpyfluxt,req_e1_vect) 181 CALL flux_centered_lonlat(1./(itau_out*dt) , f_enthalpyfluxt, f_buf_ulon, f_buf_ulat) 182 CALL output_field("enthalpy_t", f_enthalpy) 183 CALL output_field("enthalpyflux_lon",f_buf_ulon) 184 CALL output_field("enthalpyflux_lat",f_buf_ulat) 185 186 CALL qflux_centered_lonlat(1./(itau_out*dt) , f_qfluxt, f_qfluxt_lon, f_qfluxt_lat) 187 CALL output_field("qmass_t", f_qmasst) 188 CALL output_field("qflux_lon",f_qfluxt_lon) 189 CALL output_field("qflux_lat",f_qfluxt_lat) 190 CALL zero_qfluxt ! restart accumulating fluxes 191 END IF 192 END IF 162 193 END SUBROUTINE write_output_fields_basic 163 194 -
codes/icosagcm/trunk/src/diagnostics/wind.F90
r581 r599 1 1 MODULE wind_mod 2 3 CONTAINS 4 5 SUBROUTINE un2ulonlat(f_u, f_ulon, f_ulat) 2 USE omp_para 6 3 USE icosa 7 4 IMPLICIT NONE 5 PRIVATE 6 7 PUBLIC :: compute_wind_centered, compute_flux_centered, & 8 compute_wind_centered_lonlat_compound, compute_wind2d_perp_from_lonlat_compound, & 9 compute_wind_centered_from_lonlat_compound, compute_wind_perp_from_lonlat_compound, & 10 un2ulonlat, ulonlat2un 11 12 CONTAINS 13 14 SUBROUTINE un2ulonlat(f_u, f_ulon, f_ulat) 8 15 TYPE(t_field), POINTER :: f_u(:) ! IN : normal velocity components on edges 9 TYPE(t_field), POINTER :: f_ulon(:), f_ulat(:) ! OUT : velocity reconstructed at hexagons 10 16 TYPE(t_field), POINTER :: f_ulon(:), f_ulat(:) ! OUT : velocity reconstructed at hexagons 11 17 REAL(rstd),POINTER :: u(:,:), ulon(:,:), ulat(:,:) 12 18 INTEGER :: ind … … 25 31 26 32 SUBROUTINE ulonlat2un(f_ulon, f_ulat,f_u) 27 USE icosa28 IMPLICIT NONE29 33 TYPE(t_field), POINTER :: f_ulon(:), f_ulat(:) ! IN : velocity reconstructed at hexagons 30 34 TYPE(t_field), POINTER :: f_u(:) ! OUT : normal velocity components on edges … … 46 50 47 51 SUBROUTINE compute_wind_centered(ue,ucenter) 48 USE icosa49 USE omp_para50 IMPLICIT NONE51 52 REAL(rstd) :: ue(3*iim*jjm,llm) 52 REAL(rstd) :: ucenter(iim*jjm,3,llm) 53 INTEGER :: i,j,ij,l 54 53 REAL(rstd) :: ucenter(iim*jjm,llm,3) 54 INTEGER :: ij,l 55 REAL(rstd), PARAMETER :: scale=1. 56 REAL(rstd) :: fac, ue_le, cx,cy,cz, ux,uy,uz 57 #include "../kernels/wind_centered.k90" 58 END SUBROUTINE compute_wind_centered 59 60 SUBROUTINE compute_flux_centered(scale,ue,ucenter) 61 REAL(rstd), INTENT(IN) :: scale 62 REAL(rstd) :: ue(3*iim*jjm,llm) 63 REAL(rstd) :: ucenter(iim*jjm,llm,3) 64 INTEGER :: ij,l 65 REAL(rstd) :: fac, ue_le, cx,cy,cz, ux,uy,uz 66 #include "../kernels/flux_centered.k90" 67 END SUBROUTINE compute_flux_centered 68 69 70 SUBROUTINE compute_wind_on_edge(ue,uedge) 71 REAL(rstd) :: ue(3*iim*jjm,llm) 72 REAL(rstd) :: uedge(3*iim*jjm,llm,3) 73 74 REAL(rstd) :: ut(3*iim*jjm,llm) 75 INTEGER :: i,j,ij,l 76 77 CALL compute_tangential_compound(ue,ut) 78 55 79 DO l=ll_begin,ll_end 56 80 DO j=jj_begin,jj_end 57 81 DO i=ii_begin,ii_end 58 82 ij=(j-1)*iim+i 59 ucenter(ij,:,l)=1/Ai(ij)* & 60 ( ne(ij,right)*ue(ij+u_right,l)*le(ij+u_right)*((xyz_v(ij+z_rdown,:)+xyz_v(ij+z_rup,:))/2-centroid(ij,:)) & 61 + ne(ij,rup)*ue(ij+u_rup,l)*le(ij+u_rup)*((xyz_v(ij+z_rup,:)+xyz_v(ij+z_up,:))/2-centroid(ij,:)) & 62 + ne(ij,lup)*ue(ij+u_lup,l)*le(ij+u_lup)*((xyz_v(ij+z_up,:)+xyz_v(ij+z_lup,:))/2-centroid(ij,:)) & 63 + ne(ij,left)*ue(ij+u_left,l)*le(ij+u_left)*((xyz_v(ij+z_lup,:)+xyz_v(ij+z_ldown,:))/2-centroid(ij,:)) & 64 + ne(ij,ldown)*ue(ij+u_ldown,l)*le(ij+u_ldown)*((xyz_v(ij+z_ldown,:)+xyz_v(ij+z_down,:))/2-centroid(ij,:))& 65 + ne(ij,rdown)*ue(ij+u_rdown,l)*le(ij+u_rdown)*((xyz_v(ij+z_down,:)+xyz_v(ij+z_rdown,:))/2-centroid(ij,:))) 66 ENDDO 67 ENDDO 68 ENDDO 69 70 END SUBROUTINE compute_wind_centered 71 72 73 SUBROUTINE compute_wind_on_edge(ue,uedge) 74 USE icosa 75 USE omp_para 76 77 IMPLICIT NONE 78 REAL(rstd) :: ue(3*iim*jjm,llm) 79 REAL(rstd) :: uedge(3*iim*jjm,3,llm) 80 81 REAL(rstd) :: ut(3*iim*jjm,llm) 82 INTEGER :: i,j,ij,l 83 84 CALL compute_tangential_compound(ue,ut) 85 86 DO l=ll_begin,ll_end 87 DO j=jj_begin,jj_end 88 DO i=ii_begin,ii_end 89 ij=(j-1)*iim+i 90 uedge(ij+u_right,:,l)=ue(ij+u_right,l)*ep_e(ij+u_right,:)*ne(ij,right) + ut(ij+u_right,l)*et_e(ij+u_right,:)*ne(ij,right) 91 uedge(ij+u_lup,:,l)=ue(ij+u_lup,l)*ep_e(ij+u_lup,:)*ne(ij,lup) + ut(ij+u_lup,l)*et_e(ij+u_lup,:)*ne(ij,lup) 92 uedge(ij+u_ldown,:,l)=ue(ij+u_ldown,l)*ep_e(ij+u_ldown,:)*ne(ij,ldown) + ut(ij+u_ldown,l)*et_e(ij+u_ldown,:)*ne(ij,ldown) 83 uedge(ij+u_right,l,:)=ue(ij+u_right,l)*ep_e(ij+u_right,:)*ne(ij,right) + ut(ij+u_right,l)*et_e(ij+u_right,:)*ne(ij,right) 84 uedge(ij+u_lup,l,:)=ue(ij+u_lup,l)*ep_e(ij+u_lup,:)*ne(ij,lup) + ut(ij+u_lup,l)*et_e(ij+u_lup,:)*ne(ij,lup) 85 uedge(ij+u_ldown,l,:)=ue(ij+u_ldown,l)*ep_e(ij+u_ldown,:)*ne(ij,ldown) + ut(ij+u_ldown,l)*et_e(ij+u_ldown,:)*ne(ij,ldown) 93 86 ENDDO 94 87 ENDDO … … 100 93 101 94 SUBROUTINE compute_tangential_compound(ue,ut) 102 USE icosa103 USE omp_para104 IMPLICIT NONE105 95 REAL(rstd) :: ue(3*iim*jjm,llm) 106 96 REAL(rstd) :: ut(3*iim*jjm,llm) … … 155 145 END SUBROUTINE compute_tangential_compound 156 146 157 SUBROUTINE compute_wind_lonlat_compound(u, ulon, ulat) 158 USE icosa 159 USE omp_para 160 161 IMPLICIT NONE 162 REAL(rstd) :: u(3*iim*jjm,3,llm) 163 REAL(rstd) :: ulon(3*iim*jjm,3,llm) 164 REAL(rstd) :: ulat(3*iim*jjm,3,llm) 165 166 INTEGER :: i,j,ij,l 167 147 ! SUBROUTINE compute_wind_lonlat_compound(u, ulon, ulat) 148 ! REAL(rstd) :: u(3*iim*jjm,3,llm) 149 ! REAL(rstd) :: ulon(3*iim*jjm,3,llm) 150 ! REAL(rstd) :: ulat(3*iim*jjm,3,llm) 151 ! 152 ! INTEGER :: i,j,ij,l 153 ! 154 ! 155 ! DO l=ll_begin,ll_end 156 ! DO j=jj_begin-1,jj_end+1 157 ! DO i=ii_begin-1,ii_end+1 158 ! ij=(j-1)*iim+i 159 ! ulon(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elon_e(ij+u_right,:))*elon_e(ij+u_right,:) 160 ! ulon(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elon_e(ij+u_lup,:))*elon_e(ij+u_lup,:) 161 ! ulon(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elon_e(ij+u_ldown,:))*elon_e(ij+u_ldown,:) 162 ! 163 ! ulat(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elat_e(ij+u_right,:))*elat_e(ij+u_right,:) 164 ! ulat(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elat_e(ij+u_lup,:))*elat_e(ij+u_lup,:) 165 ! ulat(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elat_e(ij+u_ldown,:))*elat_e(ij+u_ldown,:) 166 ! 167 ! ENDDO 168 ! ENDDO 169 ! ENDDO 170 ! 171 ! END SUBROUTINE compute_wind_lonlat_compound 172 173 SUBROUTINE compute_wind_from_lonlat_compound(ulon, ulat, u) 174 REAL(rstd) :: u(3*iim*jjm,llm,3) 175 REAL(rstd) :: ulon(3*iim*jjm,llm) 176 REAL(rstd) :: ulat(3*iim*jjm,llm) 177 178 INTEGER :: i,j,ij,l 168 179 169 180 DO l=ll_begin,ll_end … … 171 182 DO i=ii_begin-1,ii_end+1 172 183 ij=(j-1)*iim+i 173 ulon(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elon_e(ij+u_right,:))*elon_e(ij+u_right,:) 174 ulon(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elon_e(ij+u_lup,:))*elon_e(ij+u_lup,:) 175 ulon(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elon_e(ij+u_ldown,:))*elon_e(ij+u_ldown,:) 176 177 ulat(ij+u_right,:,l)=sum(u(ij+u_right,:,l)*elat_e(ij+u_right,:))*elat_e(ij+u_right,:) 178 ulat(ij+u_lup,:,l)=sum(u(ij+u_lup,:,l)*elat_e(ij+u_lup,:))*elat_e(ij+u_lup,:) 179 ulat(ij+u_ldown,:,l)=sum(u(ij+u_ldown,:,l)*elat_e(ij+u_ldown,:))*elat_e(ij+u_ldown,:) 180 181 ENDDO 182 ENDDO 183 ENDDO 184 185 END SUBROUTINE compute_wind_lonlat_compound 186 187 SUBROUTINE compute_wind_from_lonlat_compound(ulon, ulat, u) 188 USE icosa 189 USE omp_para 190 191 IMPLICIT NONE 192 REAL(rstd) :: u(3*iim*jjm,3,llm) 193 REAL(rstd) :: ulon(3*iim*jjm,llm) 194 REAL(rstd) :: ulat(3*iim*jjm,llm) 195 196 INTEGER :: i,j,ij,l 197 198 DO l=ll_begin,ll_end 199 DO j=jj_begin-1,jj_end+1 200 DO i=ii_begin-1,ii_end+1 201 ij=(j-1)*iim+i 202 u(ij+u_right,:,l)=ulon(ij+u_right,l)*elon_e(ij+u_right,:)+ ulat(ij+u_right,l)*elat_e(ij+u_right,:) 203 u(ij+u_lup,:,l)=ulon(ij+u_lup,l)*elon_e(ij+u_lup,:) + ulat(ij+u_lup,l)*elat_e(ij+u_lup,:) 204 u(ij+u_ldown,:,l)=ulon(ij+u_ldown,l)*elon_e(ij+u_ldown,:) + ulat(ij+u_ldown,l)*elat_e(ij+u_ldown,:) 184 u(ij+u_right,l,:)=ulon(ij+u_right,l)*elon_e(ij+u_right,:)+ ulat(ij+u_right,l)*elat_e(ij+u_right,:) 185 u(ij+u_lup,l,:)=ulon(ij+u_lup,l)*elon_e(ij+u_lup,:) + ulat(ij+u_lup,l)*elat_e(ij+u_lup,:) 186 u(ij+u_ldown,l,:)=ulon(ij+u_ldown,l)*elon_e(ij+u_ldown,:) + ulat(ij+u_ldown,l)*elat_e(ij+u_ldown,:) 205 187 ENDDO 206 188 ENDDO … … 210 192 211 193 SUBROUTINE compute_wind_centered_from_lonlat_compound(ulon, ulat, u) 212 USE icosa 213 USE omp_para 214 215 IMPLICIT NONE 216 REAL(rstd) :: u(iim*jjm,3,llm) 194 REAL(rstd) :: u(iim*jjm,llm,3) 217 195 REAL(rstd) :: ulon(iim*jjm,llm) 218 196 REAL(rstd) :: ulat(iim*jjm,llm) 219 220 197 INTEGER :: i,j,ij,l 221 198 DO l=ll_begin,ll_end … … 223 200 DO i=ii_begin-1,ii_end+1 224 201 ij=(j-1)*iim+i 225 u(ij,:,l)=ulon(ij,l)*elon_i(ij,:)+ ulat(ij,l)*elat_i(ij,:) 226 ENDDO 227 ENDDO 228 ENDDO 229 202 u(ij,l,:)=ulon(ij,l)*elon_i(ij,:)+ ulat(ij,l)*elat_i(ij,:) 203 ENDDO 204 ENDDO 205 ENDDO 230 206 END SUBROUTINE compute_wind_centered_from_lonlat_compound 231 207 232 208 SUBROUTINE compute_wind2D_from_lonlat_compound(ulon, ulat, u) 233 USE icosa234 235 IMPLICIT NONE236 209 REAL(rstd) :: u(3*iim*jjm,3) 237 210 REAL(rstd) :: ulon(3*iim*jjm) … … 252 225 253 226 SUBROUTINE compute_wind_perp_from_lonlat_compound(ulon, ulat, up) 254 USE icosa255 USE omp_para256 257 IMPLICIT NONE258 227 REAL(rstd) :: up(3*iim*jjm,llm) 259 228 REAL(rstd) :: ulon(3*iim*jjm,llm) 260 229 REAL(rstd) :: ulat(3*iim*jjm,llm) 261 REAL(rstd) :: u(3*iim*jjm, 3,llm)230 REAL(rstd) :: u(3*iim*jjm,llm,3) 262 231 263 232 INTEGER :: i,j,ij,l … … 269 238 DO i=ii_begin-1,ii_end+1 270 239 ij=(j-1)*iim+i 271 up(ij+u_right,l)=sum(u(ij+u_right, :,l)*ep_e(ij+u_right,:))272 up(ij+u_lup,l)=sum(u(ij+u_lup, :,l)*ep_e(ij+u_lup,:))273 up(ij+u_ldown,l)=sum(u(ij+u_ldown, :,l)*ep_e(ij+u_ldown,:))240 up(ij+u_right,l)=sum(u(ij+u_right,l,:)*ep_e(ij+u_right,:)) 241 up(ij+u_lup,l)=sum(u(ij+u_lup,l,:)*ep_e(ij+u_lup,:)) 242 up(ij+u_ldown,l)=sum(u(ij+u_ldown,l,:)*ep_e(ij+u_ldown,:)) 274 243 ENDDO 275 244 ENDDO … … 279 248 280 249 SUBROUTINE compute_wind2D_perp_from_lonlat_compound(ulon, ulat, up) 281 USE icosa282 283 IMPLICIT NONE284 250 REAL(rstd) :: up(3*iim*jjm) 285 251 REAL(rstd) :: ulon(3*iim*jjm) … … 302 268 303 269 SUBROUTINE compute_wind_centered_lonlat_compound(uc, ulon, ulat) 304 USE icosa 305 USE omp_para 306 307 IMPLICIT NONE 308 REAL(rstd) :: uc(iim*jjm,3,llm) 270 REAL(rstd) :: uc(iim*jjm,llm,3) 309 271 REAL(rstd) :: ulon(iim*jjm,llm) 310 272 REAL(rstd) :: ulat(iim*jjm,llm) 311 273 312 274 INTEGER :: i,j,ij,l 313 314 275 315 276 DO l=ll_begin,ll_end … … 317 278 DO i=ii_begin,ii_end 318 279 ij=(j-1)*iim+i 319 ulon(ij,l)=sum(uc(ij, :,l)*elon_i(ij,:))320 ulat(ij,l)=sum(uc(ij, :,l)*elat_i(ij,:))280 ulon(ij,l)=sum(uc(ij,l,:)*elon_i(ij,:)) 281 ulat(ij,l)=sum(uc(ij,l,:)*elat_i(ij,:)) 321 282 ENDDO 322 283 ENDDO … … 326 287 327 288 SUBROUTINE compute_wind_centered_from_wind_lonlat_centered(ulon, ulat,uc) 328 USE icosa329 USE omp_para330 331 IMPLICIT NONE332 289 REAL(rstd) :: ulon(iim*jjm,llm) 333 290 REAL(rstd) :: ulat(iim*jjm,llm) 334 REAL(rstd) :: uc(iim*jjm, 3,llm)291 REAL(rstd) :: uc(iim*jjm,llm,3) 335 292 336 293 INTEGER :: i,j,ij,l … … 341 298 DO i=ii_begin,ii_end 342 299 ij=(j-1)*iim+i 343 uc(ij, :,l)=ulon(ij,l)*elon_i(ij,:)+ulat(ij,l)*elat_i(ij,:)300 uc(ij,l,:)=ulon(ij,l)*elon_i(ij,:)+ulat(ij,l)*elat_i(ij,:) 344 301 ENDDO 345 302 ENDDO … … 348 305 END SUBROUTINE compute_wind_centered_from_wind_lonlat_centered 349 306 350 351 352 307 SUBROUTINE compute_wind_perp_from_wind_centered(uc,un) 353 USE icosa 354 USE omp_para 355 308 356 309 IMPLICIT NONE 357 REAL(rstd),INTENT(IN) :: uc(iim*jjm, 3,llm)310 REAL(rstd),INTENT(IN) :: uc(iim*jjm,llm,3) 358 311 REAL(rstd),INTENT(OUT) :: un(3*iim*jjm,llm) 359 312 … … 365 318 DO i=ii_begin,ii_end 366 319 ij=(j-1)*iim+i 367 un(ij+u_right,l) = sum(0.5*(uc(ij, :,l) + uc(ij+t_right,:,l))*ep_e(ij+u_right,:))368 un(ij+u_lup,l) = sum(0.5*(uc(ij, :,l) + uc(ij+t_lup,:,l))*ep_e(ij+u_lup,:))369 un(ij+u_ldown,l) = sum(0.5*(uc(ij, :,l) + uc(ij+t_ldown,:,l))*ep_e(ij+u_ldown,:))320 un(ij+u_right,l) = sum(0.5*(uc(ij,l,:) + uc(ij+t_right,l,:))*ep_e(ij+u_right,:)) 321 un(ij+u_lup,l) = sum(0.5*(uc(ij,l,:) + uc(ij+t_lup,l,:))*ep_e(ij+u_lup,:)) 322 un(ij+u_ldown,l) = sum(0.5*(uc(ij,l,:) + uc(ij+t_ldown,l,:))*ep_e(ij+u_ldown,:)) 370 323 ENDDO 371 324 ENDDO … … 376 329 377 330 SUBROUTINE compute_un2ulonlat(un, ulon, ulat) 378 USE icosa379 380 IMPLICIT NONE381 331 REAL(rstd),INTENT(IN) :: un(3*iim*jjm,llm) 382 332 REAL(rstd),INTENT(OUT) :: ulon(iim*jjm,llm) 383 333 REAL(rstd),INTENT(OUT) :: ulat(iim*jjm,llm) 384 334 385 REAL(rstd) :: uc(iim*jjm, 3,llm)335 REAL(rstd) :: uc(iim*jjm,llm,3) 386 336 387 337 CALL compute_wind_centered(un,uc) … … 391 341 392 342 SUBROUTINE compute_ulonlat2un(ulon, ulat,un) 393 USE icosa394 395 IMPLICIT NONE396 343 REAL(rstd),INTENT(IN) :: ulon(iim*jjm,llm) 397 344 REAL(rstd),INTENT(IN) :: ulat(iim*jjm,llm) 398 345 REAL(rstd),INTENT(OUT) :: un(3*iim*jjm,llm) 399 346 400 REAL(rstd) :: uc(iim*jjm, 3,llm)347 REAL(rstd) :: uc(iim*jjm,llm,3) 401 348 402 349 CALL compute_wind_centered_from_wind_lonlat_centered(ulon, ulat, uc)
Note: See TracChangeset
for help on using the changeset viewer.