Changeset 585


Ignore:
Timestamp:
10/16/17 13:07:30 (7 years ago)
Author:
dubos
Message:

devel : reconstruct fluxes at cell centers

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  
    3737    END DO 
    3838  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 
    3954   
     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 
    4063END MODULE diagflux_mod 
  • codes/icosagcm/devel/src/diagnostics/wind.F90

    r584 r585  
    55  PRIVATE 
    66 
    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, & 
    89       compute_wind_centered_from_lonlat_compound, compute_wind_perp_from_lonlat_compound, & 
    9        un2ulonlat, ulonlat2un, compute_wind2d_perp_from_lonlat_compound 
     10       un2ulonlat, ulonlat2un 
    1011        
    1112CONTAINS 
     
    5152  REAL(rstd) :: ue(3*iim*jjm,llm) 
    5253  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" 
    7257 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 
    7366  
    7467   
Note: See TracChangeset for help on using the changeset viewer.