Changeset 585
- Timestamp:
- 10/16/17 13:07:30 (7 years ago)
- Location:
- codes/icosagcm/devel/src
- Files:
-
- 2 added
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/diagnostics/diagflux.f90
r583 r585 37 37 END DO 38 38 END SUBROUTINE zero_qfluxt 39 40 SUBROUTINE flux_centered_lonlat(f_flux, f_flux_lon, f_flux_lat) 41 TYPE(t_field),POINTER :: f_flux(:), f_flux_lon(:), f_flux_lat(:) 42 REAL(rstd), POINTER :: flux(:,:,:), flux_lon(:,:,:), flux_lat(:,:,:) 43 INTEGER :: ind, itrac 44 DO ind=1,ndomain 45 IF (.NOT. assigned_domain(ind)) CYCLE 46 CALL swap_dimensions(ind) 47 CALL swap_geometry(ind) 48 flux=f_flux(ind) 49 DO itrac=1,nqtot 50 CALL compute_flux_centered_lonlat(flux(:,:,itrac), flux_lon(:,:,itrac), flux_lat(:,:,itrac)) 51 END DO 52 END DO 53 END SUBROUTINE flux_centered_lonlat 39 54 55 SUBROUTINE compute_flux_centered_lonlat(flux, flux_lon, flux_lat) 56 REAL(rstd), INTENT(IN) :: flux(3*iim*jjm,llm) 57 REAL(rstd), INTENT(OUT) :: flux_lon(iim*jjm,llm), flux_lat(iim*jjm,llm) 58 REAL(rstd) :: flux_3d(iim*jjm,llm,3) 59 CALL compute_flux_centered(flux, flux_3d) 60 CALL compute_wind_centered_lonlat_compound(flux_3d, flux_lon, flux_lat) 61 END SUBROUTINE compute_flux_centered_lonlat 62 40 63 END MODULE diagflux_mod -
codes/icosagcm/devel/src/diagnostics/wind.F90
r584 r585 5 5 PRIVATE 6 6 7 PUBLIC :: compute_wind_centered, compute_wind_centered_lonlat_compound, & 7 PUBLIC :: compute_wind_centered, compute_flux_centered, & 8 compute_wind_centered_lonlat_compound, compute_wind2d_perp_from_lonlat_compound, & 8 9 compute_wind_centered_from_lonlat_compound, compute_wind_perp_from_lonlat_compound, & 9 un2ulonlat, ulonlat2un , compute_wind2d_perp_from_lonlat_compound10 un2ulonlat, ulonlat2un 10 11 11 12 CONTAINS … … 51 52 REAL(rstd) :: ue(3*iim*jjm,llm) 52 53 REAL(rstd) :: ucenter(iim*jjm,llm,3) 53 INTEGER :: i,j,ij,l 54 55 DO l=ll_begin,ll_end 56 DO j=jj_begin,jj_end 57 DO i=ii_begin,ii_end 58 ij=(j-1)*iim+i 59 ! Perot reconstruction based on Gauss' theorem 60 ! u = sum( u.edge_normal * edge_length * (edge_midpoint-cell_centroid) ) /cell_area 61 ucenter(ij,l,:)=1/Ai(ij)* & 62 ( 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,:)) & 63 + 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,:)) & 64 + 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,:)) & 65 + 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,:)) & 66 + 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,:))& 67 + 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,:))) 68 ENDDO 69 ENDDO 70 ENDDO 71 54 INTEGER :: ij,l 55 REAL(rstd) :: ue_le, cx,cy,cz, ux,uy,uz 56 #include "../kernels/wind_centered.k90" 72 57 END SUBROUTINE compute_wind_centered 58 59 SUBROUTINE compute_flux_centered(ue,ucenter) 60 REAL(rstd) :: ue(3*iim*jjm,llm) 61 REAL(rstd) :: ucenter(iim*jjm,llm,3) 62 INTEGER :: ij,l 63 REAL(rstd) :: ue_le, cx,cy,cz, ux,uy,uz 64 #include "../kernels/flux_centered.k90" 65 END SUBROUTINE compute_flux_centered 73 66 74 67
Note: See TracChangeset
for help on using the changeset viewer.