Changeset 592 for codes/icosagcm/devel/src/diagnostics/diagflux.f90
- Timestamp:
- 10/17/17 23:11:14 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/diagnostics/diagflux.f90
r590 r592 4 4 SAVE 5 5 6 TYPE(t_field),POINTER :: f_qfluxt(:), f_qfluxt_lon(:), f_qfluxt_lat(:) ! time-integrated flux of scalars and its reconstruction at cell centers 6 TYPE(t_field),POINTER :: & 7 f_masst(:), f_qmasst(:), & ! time-integrated mass, tracer mass, 8 f_massfluxt(:), f_qfluxt(:), & ! mass flux and tracer flux 9 f_qfluxt_lon(:), f_qfluxt_lat(:) ! scalar flux reconstructed cell centers 7 10 LOGICAL :: diagflux_on 8 11 !$OMP THREADPRIVATE(diagflux_on) … … 15 18 CALL getin("diagflux", diagflux_on) 16 19 IF(diagflux_on) THEN 20 CALL allocate_field(f_masst, field_t,type_real,llm, name="masst") 21 CALL allocate_field(f_qmasst, field_t,type_real,llm,nqtot, name="qmasst") 22 CALL allocate_field(f_massfluxt, field_u,type_real,llm, name="massfluxt") 17 23 CALL allocate_field(f_qfluxt, field_u,type_real,llm,nqtot, name="qfluxt") 18 24 CALL allocate_field(f_qfluxt_lon, field_t,type_real,llm,nqtot, name="qfluxt_lon") … … 20 26 CALL zero_qfluxt 21 27 ELSE 28 CALL allocate_field(f_masst, field_t,type_real,0, name="masst") 29 CALL allocate_field(f_qmasst, field_t,type_real,llm,0, name="qmasst") 30 CALL allocate_field(f_massfluxt, field_u,type_real,0, name="massfluxt") 22 31 CALL allocate_field(f_qfluxt, field_u,type_real,llm,0, name="qfluxt") 23 32 CALL allocate_field(f_qfluxt_lon, field_t,type_real,llm,0, name="qfluxt_lon") … … 30 39 USE omp_para 31 40 INTEGER :: ind 32 REAL(rstd), POINTER :: qfluxt(:,:,:)41 REAL(rstd), POINTER :: buf2(:,:),buf3(:,:,:) 33 42 DO ind=1,ndomain 34 43 IF (.NOT. assigned_domain(ind)) CYCLE 35 44 CALL swap_dimensions(ind) 36 qfluxt=f_qfluxt(ind) 37 qfluxt(:,ll_begin:ll_end,:)=0. 45 buf2=f_masst(ind) 46 buf2(:,ll_begin:ll_end)=0. 47 buf2=f_massfluxt(ind) 48 buf2(:,ll_begin:ll_end)=0. 49 buf3=f_qmasst(ind) 50 buf3(:,ll_begin:ll_end,:)=0. 51 buf3=f_qfluxt(ind) 52 buf3(:,ll_begin:ll_end,:)=0. 38 53 END DO 39 54 END SUBROUTINE zero_qfluxt 40 55 41 SUBROUTINE flux_centered_lonlat(scale, f_ flux, f_flux_lon, f_flux_lat)56 SUBROUTINE flux_centered_lonlat(scale, f_massflux, f_flux, f_massflux_lon, f_massflux_lat, f_flux_lon, f_flux_lat) 42 57 REAL(rstd), INTENT(IN) :: scale 43 TYPE(t_field),POINTER :: f_flux(:), f_flux_lon(:), f_flux_lat(:) 44 REAL(rstd), POINTER :: flux(:,:,:), flux_lon(:,:,:), flux_lat(:,:,:) 58 TYPE(t_field),POINTER :: f_flux(:), f_flux_lon(:), f_flux_lat(:), & 59 f_massflux(:), f_massflux_lon(:), f_massflux_lat(:) 60 REAL(rstd), POINTER :: flux(:,:,:), flux_lon(:,:,:), flux_lat(:,:,:), & 61 massflux(:,:), massflux_lon(:,:), massflux_lat(:,:) 45 62 INTEGER :: ind, itrac 46 63 DO ind=1,ndomain … … 54 71 CALL compute_flux_centered_lonlat(scale, flux(:,:,itrac), flux_lon(:,:,itrac), flux_lat(:,:,itrac)) 55 72 END DO 73 massflux=f_massflux(ind) 74 massflux_lon=f_massflux_lon(ind) 75 massflux_lat=f_massflux_lat(ind) 76 CALL compute_flux_centered_lonlat(scale, massflux, massflux_lon, massflux_lat) 56 77 END DO 57 78 END SUBROUTINE flux_centered_lonlat
Note: See TracChangeset
for help on using the changeset viewer.