From 767d144415715898b558c11b696431b246bfe203 Mon Sep 17 00:00:00 2001 From: Mikyung Lee Date: Mon, 30 Dec 2019 09:56:04 -0500 Subject: [PATCH 1/9] revisions to agree with gitlab atmos_cubed_sphere --- GFDL_tools/DIFF_cmip_diag | 204 ++++++++ GFDL_tools/fv_cmip_diag.F90 | 54 +- driver/GFDL/DIFF_atmosphere | 135 +++++ driver/GFDL/atmosphere.F90 | 101 ++-- model/DIFF_ALL | 967 ++++++++++++++++++++++++++++++++++++ model/DIFF_FV_ARRAYS | 56 +++ model/DIFF_FV_CMP | 339 +++++++++++++ tools/DIFF_FV_DIAGONISTCS | 394 +++++++++++++++ tools/fv_diagnostics.F90 | 20 +- 9 files changed, 2226 insertions(+), 44 deletions(-) create mode 100644 GFDL_tools/DIFF_cmip_diag create mode 100644 driver/GFDL/DIFF_atmosphere create mode 100644 model/DIFF_ALL create mode 100644 model/DIFF_FV_ARRAYS create mode 100644 model/DIFF_FV_CMP create mode 100644 tools/DIFF_FV_DIAGONISTCS diff --git a/GFDL_tools/DIFF_cmip_diag b/GFDL_tools/DIFF_cmip_diag new file mode 100644 index 000000000..f29f19766 --- /dev/null +++ b/GFDL_tools/DIFF_cmip_diag @@ -0,0 +1,204 @@ +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +31c11 +< use diag_manager_mod, only: register_diag_field, & +--- +> use diag_manager_mod, only: register_diag_field, diag_axis_init, & +39c19 +< use constants_mod, only: GRAV +--- +> use constants_mod, only: GRAV, RDGAS +44,45c24,25 +< get_height_given_pressure, & +< rh_calc, get_height_field +--- +> get_height_given_pressure, rh_calc, & +> get_height_field, get_vorticity +61c41 +< integer :: sphum +--- +> integer :: sphum, nql, nqi, nqa +74c54,55 +< ID_uwap, ID_vwap, ID_twap +--- +> ID_uwap, ID_vwap, ID_twap, ID_wa, & +> ID_cls, ID_clws, ID_clis +79a61 +> integer :: id_rv200, id_rv500, id_rv850, id_vortmean +109a92 +> integer :: id_pl700, id_pl700_bnds, id_nv +153a137,139 +> nql = get_tracer_index (MODEL_ATMOS, 'liq_wat') +> nqi = get_tracer_index (MODEL_ATMOS, 'ice_wat') +> nqa = get_tracer_index (MODEL_ATMOS, 'cld_amt') +175a162,164 +> ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & +> 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') +> +218a208,226 +> ! stratiform cloud tracers +> +> if (nql > 0) then +> ID_clws = register_cmip_diag_field_3d (mod_name, 'clws', Time, & +> 'Mass Fraction of Stratiform Cloud Liquid Water', '1.0', & +> standard_name='mass_fraction_of_stratiform_cloud_liquid_water_in_air') +> endif +> if (nqi > 0) then +> ID_clis = register_cmip_diag_field_3d (mod_name, 'clis', Time, & +> 'Mass Fraction of Stratiform Cloud Ice', '1.0', & +> standard_name='mass_fraction_of_convective_cloud_ice_in_air') +> endif +> if (nqa > 0) then +> ID_cls = register_cmip_diag_field_3d (mod_name, 'cls', Time, & +> 'Percentage Cover of Stratiform Cloud', '%', & +> standard_name='stratiform_cloud_area_fraction_in_atmosphere_layer') +> endif +> +> !----------------------------------------------------------------------- +235c243 +< area=area_id) +--- +> area=area_id, interp_method='conserve_order1') +242c250 +< ! area=area_id) +--- +> ! area=area_id, interp_method='conserve_order1') +261a270,286 +> id_pl700 = register_static_field (mod_name, 'pl700', (/null_axis_id/), & +> '700 hPa Average', 'Pa', standard_name='air_pressure') +> if (id_pl700 > 0) then +> call diag_field_add_attribute (id_pl700, 'axis', 'Z') +> call diag_field_add_attribute (id_pl700, 'positive', 'down' ) +> call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) +> ! add bounds +> id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') +> id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & +> '700 hPa boundaries', 'Pa', standard_name='air_pressure') +> if (id_pl700_bnds > 0) then +> call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) +> used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) +> endif +> used = send_data (id_pl700, 700.e2, Time) +> endif +> +313a339,363 +> !---- relative vorticity at 200, 500, 850 hPa ---- +> +> id_rv200 = register_cmip_diag_field_2d (mod_name, 'rv200', Time, & +> 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +> if (id_rv200 > 0 .and. id_plevels(id_p200) > 0) & +> call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') +> +> id_rv500 = register_cmip_diag_field_2d (mod_name, 'rv500', Time, & +> 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +> if (id_rv500 > 0 .and. id_plevels(id_p500) > 0) & +> call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') +> +> id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & +> 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +> if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & +> call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') +> +> !---- mean relative vorticity 600, 700, 850 hPa ---- +> +> id_vortmean = register_cmip_diag_field_2d (mod_name, 'vortmean', Time, & +> 'Mean Relative Vorticity over 600-850 hPa', 's-1', & +> standard_name='atmosphere_relative_vorticity') +> if (id_vortmean > 0 .and. id_pl700 > 0) & +> call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') +> +359a410 +> logical :: compute_rh, compute_wa +362c413,414 +< Atm(1)%bd%jsc:Atm(1)%bd%jec) :: pfull, dat2 +--- +> Atm(1)%bd%jsc:Atm(1)%bd%jec) :: pfull, dat2, & +> rv850, rv700, rv600 +368c420 +< Atm(1)%npz) :: rhum +--- +> Atm(1)%npz) :: rhum, wa, rv +386a439,444 +> ! set flags for computing quantities +> compute_rh = .false. +> compute_wa = .false. +> if (count(ID_hur%field_id(:)>0) > 0) compute_rh = .true. +> if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. +> +388c446 +< if (count(ID_hur%field_id(:)>0) > 0) then +--- +> if (compute_rh .or. compute_wa) then +395c453,455 +< call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & +--- +> ! compute relative humidity +> if (compute_rh) then +> call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & +396a457,462 +> endif +> ! compute vertical velocity +> if (compute_wa) then +> wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & +> pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) +> endif +406a473,478 +> ! relative vorticity +> if (any((/id_rv200,id_rv500,id_rv850,id_vortmean/) > 0)) then +> call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & +> Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) +> endif +> +433a506,509 +> ! vertical velocity +> if (query_cmip_diag_id(ID_wa)) & +> used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) +> +481a558,564 +> ! stratiform cloud tracers (only on model levels) +> +> if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) +> if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) +> if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) +> +> !---------------------------------------------------------------------- +541a625,644 +> endif +> +> if (id_rv200 > 0) then +> call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) +> used = send_data (id_rv200, dat2, Time) +> endif +> +> if (id_rv500 > 0) then +> call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) +> used = send_data (id_rv500, dat2, Time) +> endif +> +> if (id_rv850 > 0 .or. id_vortmean > 0) then +> call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) +> if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) +> if (id_vortmean > 0) then +> call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) +> call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) +> used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) +> endif diff --git a/GFDL_tools/fv_cmip_diag.F90 b/GFDL_tools/fv_cmip_diag.F90 index 16096ce5c..240b450f2 100644 --- a/GFDL_tools/fv_cmip_diag.F90 +++ b/GFDL_tools/fv_cmip_diag.F90 @@ -36,13 +36,13 @@ module fv_cmip_diag_mod use diag_data_mod, only: CMOR_MISSING_VALUE, null_axis_id use tracer_manager_mod, only: get_tracer_index use field_manager_mod, only: MODEL_ATMOS -use constants_mod, only: GRAV +use constants_mod, only: GRAV, RDGAS !:MKL - December 26 2019 use fv_mapz_mod, only: E_Flux use fv_arrays_mod, only: fv_atmos_type use fv_diagnostics_mod, only: interpolate_vertical, & get_height_given_pressure, & - rh_calc, get_height_field + rh_calc, get_height_field, get_vorticity !:MKL - December 27 2019, also made public in fv_diagnostics use atmos_cmip_diag_mod, only: register_cmip_diag_field_2d, & register_cmip_diag_field_3d, & @@ -71,12 +71,13 @@ module fv_cmip_diag_mod type(cmip_diag_id_type) :: ID_ta, ID_ua, ID_va, ID_hus, ID_hur, ID_wap, ID_zg, & ID_u2, ID_v2, ID_t2, ID_wap2, ID_uv, ID_ut, ID_vt, & - ID_uwap, ID_vwap, ID_twap + ID_uwap, ID_vwap, ID_twap, ID_wa !:MKL December 26 2019 integer :: id_ps, id_orog integer :: id_ua200, id_va200, id_ua850, id_va850, & id_ta500, id_ta700, id_ta850, id_zg500, & id_zg100, id_zg10, id_zg1000, & id_hus850, id_wap500, id_ua10 +integer :: id_rv850 !:MKL December 27 2019 character(len=5) :: mod_name = 'atmos' @@ -164,6 +165,10 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) ID_va = register_cmip_diag_field_3d (mod_name, 'va', Time, & 'Northward Wind', 'm s-1', standard_name='northward_wind') + !:MKL December 26 2019 + ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & + 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') + ID_hus = register_cmip_diag_field_3d (mod_name, 'hus', Time, & 'Specific Humidity', '1.0', standard_name='specific_humidity') @@ -232,7 +237,7 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) id_orog = register_static_field (mod_name, 'orog', axes(1:2), & 'Surface Altitude', 'm', & standard_name='surface_altitude', & - area=area_id) + area=area_id, interp_method='conserve_order1') !:MKL December 27 2019 if (id_orog > 0) used = send_data (id_orog, Atm(n)%phis(isc:iec,jsc:jec)/GRAV, Time) #else !--- for now output this as 'zsurf' from fv_diagnostics --- @@ -311,6 +316,12 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) if (id_hus850 > 0 .and. id_plevels(id_p850) > 0) & call diag_field_add_attribute (id_hus850, 'coordinates', 'p850') + !---- relative vorticity at 850 hPa ---- !:MKL December 27 2019 + id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & !:MKL December 27 2019 + 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') !:MKL December 27 2019 + if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & !:MKL December 27 2019 + call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') !:MKL December 27 2019 + !---- omega at 500 hPa ---- id_wap500 = register_cmip_diag_field_2d (mod_name, 'wap500', Time, & @@ -357,15 +368,18 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) integer :: isc, iec, jsc, jec, n, i, j, k, id integer :: ngc, npz logical :: used +logical :: compute_wa !:MKL December 26 2019 real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & - Atm(1)%bd%jsc:Atm(1)%bd%jec) :: pfull, dat2 + Atm(1)%bd%jsc:Atm(1)%bd%jec) :: pfull, dat2, & + rv850 !:MKL December 27 2018 + real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec,1) :: dat3 real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec, & - Atm(1)%npz) :: rhum + Atm(1)%npz) :: rhum, wa, rv !:MKL December 26 2019 real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec, & @@ -384,8 +398,12 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) call set_domain(Atm(n)%domain) + ! set flags for computing quantities !:MKL December 26 2019 + compute_wa = .false. !:MKL December 26 2019 + if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. !:MKL December 26 2019 + ! compute relative humidity at model levels (if needed) - if (count(ID_hur%field_id(:)>0) > 0) then + if (count(ID_hur%field_id(:)>0) > 0 .or. compute_wa ) then !:MKL December 26 2019 do k=1,npz do j=jsc,jec do i=isc,iec @@ -394,16 +412,26 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) enddo call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) + if (compute_wa) then !:MKL December 26 2019 + wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & !:MKL December 26 2019 + pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) !:MKL December 26 2019 + end if !:MKL December 26 2019 enddo endif - ! height field (wz) if needed if (count(ID_zg%field_id(:)>0) > 0 .or. any((/id_zg10,id_zg100,id_zg500,id_zg1000/) > 0)) then call get_height_field(isc, iec, jsc, jec, ngc, npz, Atm(n)%flagstruct%hydrostatic, Atm(n)%delz, & wz, Atm(n)%pt, Atm(n)%q, Atm(n)%peln, zvir) endif + ! relative vorticity !:MKL December 27 2019 + if (id_rv850 > 0) then !:MKL December 27 2019 + call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & !:MKL December 27 2019 + Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) !:MKL December 27 2019 + endif !:MKL December 27 2019 + + !---------------------------------------------------------------------- ! process 2D fields @@ -431,6 +459,10 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) if (query_cmip_diag_id(ID_hur)) & used = send_cmip_data_3d (ID_hur, rhum(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) + ! vertical velocity !:MKL December 26 2019 + if (query_cmip_diag_id(ID_wa)) & !:MKL December 26 2019 + used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) !:MKL December 26 2019 + ! geopotential height if (query_cmip_diag_id(ID_zg)) & used = send_cmip_data_3d (ID_zg, wz, Time, phalf=Atm(n)%peln, opt=1, ext=.true.) @@ -541,6 +573,12 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) used = send_data (id_wap500, dat2, Time) endif + + if (id_rv850 > 0 ) then !:MKL December 27 2019 + call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) !:MKL December 27 2019 + if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) !:MKL December 27 2019 + endif !:MKL December 27 2019 + if (id_zg10 > 0) then call get_height_given_pressure (isc, iec, jsc, jec, ngc, npz, wz, 1, (/id_zg10/), & (/log(10.e2)/), Atm(n)%peln, dat3) diff --git a/driver/GFDL/DIFF_atmosphere b/driver/GFDL/DIFF_atmosphere new file mode 100644 index 000000000..714b6f603 --- /dev/null +++ b/driver/GFDL/DIFF_atmosphere @@ -0,0 +1,135 @@ +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +153c133,134 +< type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa +--- +> type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus +> integer :: nqv, nql, nqi, nqa +362a344,349 +> ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & +> 'Tendency of Air Temperature', 'K s-1', & +> standard_name='tendency_of_air_temperature') +> ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & +> 'Tendency of Specific Humidity', 's-1', & +> standard_name='tendency_of_specific_humidity') +377c364,365 +< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) allocate(ttend(isc:iec, jsc:jec, 1:npz)) +--- +> if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & +> allocate(ttend(isc:iec, jsc:jec, 1:npz)) +379c367 +< query_cmip_diag_id(ID_tnhusa) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) +--- +> query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) +381a370,381 +> ! get tracer number for common moisture tracers +> nqv = get_tracer_index(MODEL_ATMOS,'sphum') +> nql = get_tracer_index(MODEL_ATMOS,'liq_wat') +> nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') +> nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') +> ! could zero out diagnostics if nXX = 0 +> if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & +> 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) +> if (nqv > size(qtend,4)) id_qdt_dyn = 0 +> if (nql > size(qtend,4)) id_qldt_dyn = 0 +> if (nqi > size(qtend,4)) id_qidt_dyn = 0 +> if (nqa > size(qtend,4)) id_qadt_dyn = 0 +409,411c409,411 +< Surf_diff%qdt_dyn(:,:,:) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1) + & +< Atm(mytile)%q (isc:iec, jsc:jec, :, 2) + & +< Atm(mytile)%q (isc:iec, jsc:jec, :, 3) +--- +> Surf_diff%qdt_dyn(:,:,:) = Atm(mytile)%q (isc:iec, jsc:jec, :, nqv) + & +> Atm(mytile)%q (isc:iec, jsc:jec, :, nql) + & +> Atm(mytile)%q (isc:iec, jsc:jec, :, nqi) +415c415,416 +< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) +--- +> if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & +> ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) +417c418,419 +< query_cmip_diag_id(ID_tnhusa) ) qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, :) +--- +> query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & +> qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) +461,463c463,465 +< Surf_diff%qdt_dyn(:,:,:) =(Atm(mytile)%q (isc:iec,jsc:jec,:,1) + & +< Atm(mytile)%q (isc:iec,jsc:jec,:,2) + & +< Atm(mytile)%q (isc:iec,jsc:jec,:,3) - Surf_diff%qdt_dyn(:,:,:))/dt_atmos +--- +> Surf_diff%qdt_dyn(:,:,:) =(Atm(mytile)%q (isc:iec,jsc:jec,:,nqv) + & +> Atm(mytile)%q (isc:iec,jsc:jec,:,nql) + & +> Atm(mytile)%q (isc:iec,jsc:jec,:,nqi) - Surf_diff%qdt_dyn(:,:,:))/dt_atmos +466,481c468,469 +< if ( id_udt_dyn>0 ) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) +< if ( id_vdt_dyn>0 ) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) +< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) then +< ttend = (Atm(mytile)%pt(isc:iec, jsc:jec, :) - ttend(:, :, : ))/dt_atmos +< if (id_tdt_dyn>0) used = send_data(id_tdt_dyn, ttend(:,:,:), Time) +< if (query_cmip_diag_id(ID_tnta)) used = send_cmip_data_3d (ID_tnta, ttend(:,:,:), Time) +< endif +< +< if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. query_cmip_diag_id(ID_tnhusa) ) then +< qtend = (Atm(mytile)%q (isc:iec, jsc:jec, :, :)- qtend(:, :, :, :))/dt_atmos +< if (id_qdt_dyn > 0) used = send_data(id_qdt_dyn, qtend(:,:,:,1), Time) +< if (id_qldt_dyn > 0) used = send_data(id_qldt_dyn, qtend(:,:,:,2), Time) +< if (id_qidt_dyn > 0) used = send_data(id_qidt_dyn, qtend(:,:,:,3), Time) +< if (id_qadt_dyn > 0) used = send_data(id_qadt_dyn, qtend(:,:,:,4), Time) +< if (query_cmip_diag_id(ID_tnhusa)) used = send_cmip_data_3d (ID_tnhusa, qtend(:,:,:,1), Time) +< endif +--- +> if (id_udt_dyn > 0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) +> if (id_vdt_dyn > 0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) +482a471,480 +> if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) +> if (query_cmip_diag_id(ID_tnta)) & +> used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) +> +> if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) +> if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) +> if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) +> if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) +> if (query_cmip_diag_id(ID_tnhusa)) & +> used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) +736c734 +< z_bot(i,j) = rrg*t_bot(i,j)*(1.+zvir*Atm(mytile)%q(i,j,npz,1)) * & +--- +> z_bot(i,j) = rrg*t_bot(i,j)*(1.+zvir*Atm(mytile)%q(i,j,npz,nqv)) * & +822,824c820,822 +< wm(i,j) = wm(i,j) + Atm(mytile)%delp(i,j,k) * ( Atm(mytile)%q(i,j,k,1) + & +< Atm(mytile)%q(i,j,k,2) + & +< Atm(mytile)%q(i,j,k,3) ) +--- +> wm(i,j) = wm(i,j) + Atm(mytile)%delp(i,j,k) * ( Atm(mytile)%q(i,j,k,nqv) + & +> Atm(mytile)%q(i,j,k,nql) + & +> Atm(mytile)%q(i,j,k,nqi) ) +932a931,936 +> !--- cmip6 total tendencies of temperature and specific humidity +> if (query_cmip_diag_id(ID_tnt)) & +> used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) +> if (query_cmip_diag_id(ID_tnhus)) & +> used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) +> +1170a1175,1177 +> !++VAN +> call compute_g_avg(Time, 'ch4', Radiation, Atm_block) +> !--VAN diff --git a/driver/GFDL/atmosphere.F90 b/driver/GFDL/atmosphere.F90 index 9168ddc5b..c36f5a543 100644 --- a/driver/GFDL/atmosphere.F90 +++ b/driver/GFDL/atmosphere.F90 @@ -150,7 +150,8 @@ module atmosphere_mod real, allocatable :: qtend(:,:,:,:) real :: mv = -1.e10 !miz - type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa + type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus !:MKL December 30 2019 + integer :: nqv, nql, nqi, nqa !:MKL December 30 2019 integer :: mytile = 1 integer :: p_split = 1 @@ -360,6 +361,13 @@ subroutine atmosphere_init (Time_init, Time, Time_step, Surf_diff, Grid_box) ID_tnhusa = register_cmip_diag_field_3d (mod_name, 'tnhusa', Time, & 'Tendency of Specific Humidity due to Advection', 's-1', & standard_name='tendency_of_specific_humidity_due_to_advection') + ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & !:MKL December 30 2019 + 'Tendency of Air Temperature', 'K s-1', & !:MKL December 30 2019 + standard_name='tendency_of_air_temperature') !:MKL December 30 2019 + ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & !:MKL December 30 2019 + 'Tendency of Specific Humidity', 's-1', & !:MKL December 30 2019 + standard_name='tendency_of_specific_humidity') !:MKL December 30 2019 + !---allocate id_tracer_* allocate (id_tracerdt_dyn (num_tracers)) @@ -374,11 +382,24 @@ subroutine atmosphere_init (Time_init, Time, Time_step, Surf_diff, Grid_box) endif enddo if (any(id_tracerdt_dyn(:)>0)) allocate(qtendyyf(isc:iec, jsc:jec,1:npz,num_tracers)) - if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) allocate(ttend(isc:iec, jsc:jec, 1:npz)) + if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & !:MKL December 30 2019 + allocate(ttend(isc:iec, jsc:jec, 1:npz)) if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. & - query_cmip_diag_id(ID_tnhusa) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) + query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) !:MKL December 30 2019 !miz +! get tracer number for common moisture tracers !:MKL December 30 2019 + nqv = get_tracer_index(MODEL_ATMOS,'sphum') !:MKL December 30 2019 + nql = get_tracer_index(MODEL_ATMOS,'liq_wat') !:MKL December 30 2019 + nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') !:MKL December 30 2019 + nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') !:MKL December 30 2019 +! could zero out diagnostics if nXX = 0 !:MKL December 30 2019 + if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & !:MKL December 30 2019 + 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) !:MKL December 30 2019 + if (nqv > size(qtend,4)) id_qdt_dyn = 0 !:MKL December 30 2019 + if (nql > size(qtend,4)) id_qldt_dyn = 0 !:MKL December 30 2019 + if (nqi > size(qtend,4)) id_qidt_dyn = 0 !:MKL December 30 2019 + if (nqa > size(qtend,4)) id_qadt_dyn = 0 !:MKL December 30 2019 ! --- initialize clocks for dynamics, physics_down and physics_up id_dynam = mpp_clock_id ('FV dy-core', flags = clock_flag_default, grain=CLOCK_SUBCOMPONENT ) id_subgridz = mpp_clock_id ('FV subgrid_z',flags = clock_flag_default, grain=CLOCK_SUBCOMPONENT ) @@ -406,15 +427,18 @@ subroutine atmosphere_dynamics ( Time, surf_diff ) #ifndef use_AM3_physics Surf_diff%ddp_dyn(:,:,:) = Atm(mytile)%delp(isc:iec, jsc:jec, :) Surf_diff%tdt_dyn(:,:,:) = Atm(mytile)%pt(isc:iec, jsc:jec, :) - Surf_diff%qdt_dyn(:,:,:) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1) + & - Atm(mytile)%q (isc:iec, jsc:jec, :, 2) + & - Atm(mytile)%q (isc:iec, jsc:jec, :, 3) + Surf_diff%qdt_dyn(:,:,:) = Atm(mytile)%q (isc:iec, jsc:jec, :, nqv) + & + Atm(mytile)%q (isc:iec, jsc:jec, :, nql) + & + Atm(mytile)%q (isc:iec, jsc:jec, :, nqi) #endif !miz[M d0 - if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) + if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & !:MKL December 30 2019 + ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. & - query_cmip_diag_id(ID_tnhusa) ) qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, :) + query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & !:MKL December 30 2019 + qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) !:MKL December 30 2019 + !:MKL qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, :) !miz do itrac = 1, num_tracers if (id_tracerdt_dyn (itrac) >0 ) & @@ -458,27 +482,39 @@ subroutine atmosphere_dynamics ( Time, surf_diff ) #ifndef use_AM3_physics Surf_diff%ddp_dyn(:,:,:) =(Atm(mytile)%delp(isc:iec,jsc:jec,:)-Surf_diff%ddp_dyn(:,:,:))/dt_atmos Surf_diff%tdt_dyn(:,:,:) =(Atm(mytile)%pt(isc:iec,jsc:jec,:) -Surf_diff%tdt_dyn(:,:,:))/dt_atmos - Surf_diff%qdt_dyn(:,:,:) =(Atm(mytile)%q (isc:iec,jsc:jec,:,1) + & - Atm(mytile)%q (isc:iec,jsc:jec,:,2) + & - Atm(mytile)%q (isc:iec,jsc:jec,:,3) - Surf_diff%qdt_dyn(:,:,:))/dt_atmos + Surf_diff%qdt_dyn(:,:,:) =(Atm(mytile)%q (isc:iec,jsc:jec,:,nqv) + & + Atm(mytile)%q (isc:iec,jsc:jec,:,nql) + & + Atm(mytile)%q (isc:iec,jsc:jec,:,nqi) - Surf_diff%qdt_dyn(:,:,:))/dt_atmos #endif !miz if ( id_udt_dyn>0 ) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) if ( id_vdt_dyn>0 ) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) - if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) then - ttend = (Atm(mytile)%pt(isc:iec, jsc:jec, :) - ttend(:, :, : ))/dt_atmos - if (id_tdt_dyn>0) used = send_data(id_tdt_dyn, ttend(:,:,:), Time) - if (query_cmip_diag_id(ID_tnta)) used = send_cmip_data_3d (ID_tnta, ttend(:,:,:), Time) - endif - - if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. query_cmip_diag_id(ID_tnhusa) ) then - qtend = (Atm(mytile)%q (isc:iec, jsc:jec, :, :)- qtend(:, :, :, :))/dt_atmos - if (id_qdt_dyn > 0) used = send_data(id_qdt_dyn, qtend(:,:,:,1), Time) - if (id_qldt_dyn > 0) used = send_data(id_qldt_dyn, qtend(:,:,:,2), Time) - if (id_qidt_dyn > 0) used = send_data(id_qidt_dyn, qtend(:,:,:,3), Time) - if (id_qadt_dyn > 0) used = send_data(id_qadt_dyn, qtend(:,:,:,4), Time) - if (query_cmip_diag_id(ID_tnhusa)) used = send_cmip_data_3d (ID_tnhusa, qtend(:,:,:,1), Time) - endif + if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) !:MKL December 30 2019 + if (query_cmip_diag_id(ID_tnta)) & !:MKL December 30 2019 + used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) !:MKL December 30 2019 + + !if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) then !:MKL December 30 2019 + ! ttend = (Atm(mytile)%pt(isc:iec, jsc:jec, :) - ttend(:, :, : ))/dt_atmos !:MKL December 30 2019 + ! if (id_tdt_dyn>0) used = send_data(id_tdt_dyn, ttend(:,:,:), Time) !:MKL December 30 2019 + ! if (query_cmip_diag_id(ID_tnta)) used = send_cmip_data_3d (ID_tnta, ttend(:,:,:), Time) !:MKL December 30 2019 + !endif + + if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) !:MKL December 30 2019 + if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) !:MKL December 30 2019 + if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) !:MKL December 30 2019 + if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) !:MKL December 30 2019 + if (query_cmip_diag_id(ID_tnhusa)) & !:MKL December 30 2019 + used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) !:MKL December 30 2019 + + + !if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. query_cmip_diag_id(ID_tnhusa) ) then !:MKL December 30 2019 + ! ttend = (Atm(mytile)%q (isc:iec, jsc:jec, :, :)- qtend(:, :, :, :))/dt_atmos !:MKL December 30 2019 + ! if (id_qdt_dyn > 0) used = send_data(id_qdt_dyn, qtend(:,:,:,1), Time) !:MKL December 30 2019 + ! if (id_qldt_dyn > 0) used = send_data(id_qldt_dyn, qtend(:,:,:,2), Time) !:MKL December 30 2019 + ! if (id_qidt_dyn > 0) used = send_data(id_qidt_dyn, qtend(:,:,:,3), Time) !:MKL December 30 2019 + ! if (id_qadt_dyn > 0) used = send_data(id_qadt_dyn, qtend(:,:,:,4), Time) !:MKL December 30 2019 + ! if (query_cmip_diag_id(ID_tnhusa)) used = send_cmip_data_3d (ID_tnhusa, qtend(:,:,:,1), Time) !:MKL December 30 2019 + ! endif !miz do itrac = 1, num_tracers @@ -733,7 +769,7 @@ subroutine get_bottom_mass ( t_bot, tr_bot, p_bot, z_bot, p_surf, slp ) p_surf(i,j) = Atm(mytile)%ps(i,j) t_bot(i,j) = Atm(mytile)%pt(i,j,npz) p_bot(i,j) = Atm(mytile)%delp(i,j,npz)/(Atm(mytile)%peln(i,npz+1,j)-Atm(mytile)%peln(i,npz,j)) - z_bot(i,j) = rrg*t_bot(i,j)*(1.+zvir*Atm(mytile)%q(i,j,npz,1)) * & + z_bot(i,j) = rrg*t_bot(i,j)*(1.+zvir*Atm(mytile)%q(i,j,npz,nqv)) * & (1. - Atm(mytile)%pe(i,npz,j)/p_bot(i,j)) enddo enddo @@ -819,9 +855,9 @@ subroutine get_stock_pe(index, value) do k=1,npz do i=isc,iec ! Warning: the following works only with AM2 physics: water vapor; cloud water, cloud ice. - wm(i,j) = wm(i,j) + Atm(mytile)%delp(i,j,k) * ( Atm(mytile)%q(i,j,k,1) + & - Atm(mytile)%q(i,j,k,2) + & - Atm(mytile)%q(i,j,k,3) ) + wm(i,j) = wm(i,j) + Atm(mytile)%delp(i,j,k) * ( Atm(mytile)%q(i,j,k,nqv) + & + Atm(mytile)%q(i,j,k,nql) + & + Atm(mytile)%q(i,j,k,nqi) ) enddo enddo enddo @@ -930,6 +966,13 @@ subroutine atmosphere_state_update (Time, Physics_tendency, Physics, Atm_block) call timing_off('TWOWAY_UPDATE') endif +!--- cmip6 total tendencies of temperature and specific humidity + if (query_cmip_diag_id(ID_tnt)) & !:MKL December 30 2019 + used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) !:MKL December 30 2019 + if (query_cmip_diag_id(ID_tnhus)) & !:MKL December 30 2019 + used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) !:MKL December 30 2019 + + #if !defined(ATMOS_NUDGE) && !defined(CLIMATE_NUDGE) && !defined(ADA_NUDGE) if ( .not.forecast_mode .and. Atm(mytile)%flagstruct%nudge .and. Atm(mytile)%flagstruct%na_init>0 ) then if(mod(seconds, 21600)==0) call adiabatic_init_drv (Time_prev, Time_next) diff --git a/model/DIFF_ALL b/model/DIFF_ALL new file mode 100644 index 000000000..b684dcc52 --- /dev/null +++ b/model/DIFF_ALL @@ -0,0 +1,967 @@ +a2b_edge.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +boundary.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +dyn_core.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_arrays.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +57c56 +< id_pfhy, id_pfnh, & +--- +> id_pfhy, id_pfnh, & +59c58,63 +< id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km +--- +> id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km, & +> id_uq, id_vq, id_wq, id_iuq, id_ivq, id_iwq, & ! moisture flux & vertical integral +> id_ut, id_vt, id_wt, id_iut, id_ivt, id_iwt, & ! heat flux +> id_uu, id_uv, id_uw, id_vv, id_vw, id_ww, & ! momentum flux +> id_iuu, id_iuv, id_iuw, id_ivv, id_ivw, id_iww ! vertically integral of momentum flux +> +71,72c75,76 +< integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & +< id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 +--- +> integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & +> id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 +fv_cmp.F90 +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +24d3 +< use fms_mod, only: error_mesg, FATAL +28a8,35 +> real, parameter:: cv_vap = 3.*rvgas ! 1384.8 +> real, parameter:: cv_air = cp_air - rdgas ! = rdgas * (7/2-1) = 2.5*rdgas=717.68 +> ! 2050 at 0 deg C; 1972 at -15 C; 1818. at -40 C +> ! real, parameter:: c_ice = 2106. ! heat capacity of ice at 0.C (same as IFS) +> ! real, parameter:: c_liq = 4218. ! ECMWF-IFS at 0 deg C +> real, parameter:: c_ice = 1972. ! -15 C +> real, parameter:: c_liq = 4.1855e+3 ! GFS, at 15 deg C +> real, parameter:: cp_vap = cp_vapor ! 4*rv_gas=1846. +> real, parameter:: dc_vap = cp_vap - c_liq ! = -2344. isobaric heating/cooling +> real, parameter:: dc_ice = c_liq - c_ice ! = 2084 +> real, parameter:: tice = 273.16 +> real, parameter:: t_wfr = tice - 40. +> ! Values at 0 Deg C +> real, parameter:: hlv0 = 2.5e6 +> real, parameter:: hlf0 = 3.3358e5 +> ! Latent heat at absolute zero: +> real, parameter:: Lv0 = hlv0 - dc_vap*tice ! = 3.141264e6 +> real, parameter:: li00 = hlf0 - dc_ice*tice ! = -2.355446e5 +> ! Li (T=113) ~ 0. +> !!! real(kind=R_GRID), parameter:: e00 = 610.71 ! saturation vapor pressure at T0 +> real(kind=R_GRID), parameter:: e00 = 611.21 ! IFS: saturation vapor pressure at T0 +> real(kind=R_GRID), parameter:: d2ice = cp_vap - c_ice +> real(kind=R_GRID), parameter:: Li2 = hlv0+hlf0 - d2ice*tice +> ! Local: +> real:: dw_ocean = 0.12 ! This parameter is different from that in major MP +> real:: crevp(5), lat2 +> real, allocatable:: table(:), table2(:), tablew(:), des2(:), desw(:) +> real:: d0_vap, lv00 +30,31c37,40 +< private +< public fv_sat_adj, qs_init +--- +> logical:: mp_initialized = .false. +> +> private +> public fv_sat_adj, qs_init +37a47,49 +> ! This is designed for 6-class micro-physics schemes; handles the heat release +> ! due to in situ phase changes +> ! input pt is T_vir +52a65,178 +> !--- +> real, dimension(is:ie):: wqsat, dq2dt, qpz, cvm, t0, pt1, icp2, lcp2, tcp2, tcp3, & +> den, q_liq, q_sol, src, hvar +> real, dimension(is:ie):: mc_air, lhl, lhi ! latent heat +> real:: sink, qsw, rh, fac_v2l, fac_l2v +> real:: tc, qsi, dqsdt, dq, dq0, pidep, qi_crt, tmp, dtmp +> real:: condensates, tin, qstar, rqi, q_plus, q_minus +> real:: sdt, dt_Bigg, adj_fac, fac_s, fac_r, fac_i2s, fac_mlt, fac_l2r +> real:: factor, qim, tice0, c_air, c_vap +> integer i,j +> +> +> end subroutine fv_sat_adj +> +> +> real function wqs1(ta, den) +> ! Pure water phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = tablew(it) + (ap1-it)*desw(it) +> wqs1 = es / (rvgas*ta*den) +> +> end function wqs1 +> +> real function iqs1(ta, den) +> ! water-ice phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = table2(it) + (ap1-it)*des2(it) +> iqs1 = es / (rvgas*ta*den) +> +> end function iqs1 +> +> +> real function wqs2(ta, den, dqdt) +> ! Pure water phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> real, intent(out):: dqdt +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = tablew(it) + (ap1-it)*desw(it) +> wqs2 = es / (rvgas*ta*den) +> it = ap1 - 0.5 +> ! Finite diff, del_T = 0.1: +> dqdt = 10.*(desw(it) + (ap1-it)*(desw(it+1)-desw(it))) / (rvgas*ta*den) +> +> end function wqs2 +> +> subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt) +> ! Pure water phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> integer, intent(in):: is, ie +> real, intent(in), dimension(is:ie):: ta, den +> real, intent(out), dimension(is:ie):: wqsat, dqdt +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer i, it +> +> do i=is, ie +> ap1 = 10.*dim(ta(i), tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = tablew(it) + (ap1-it)*desw(it) +> wqsat(i) = es / (rvgas*ta(i)*den(i)) +> it = ap1 - 0.5 +> ! Finite diff, del_T = 0.1: +> dqdt(i) = 10.*(desw(it)+(ap1-it)*(desw(it+1)-desw(it)))/(rvgas*ta(i)*den(i)) +> enddo +> +> end subroutine wqs2_vect +> +> +> +> real function iqs2(ta, den, dqdt) +> ! water-ice phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> real, intent(out):: dqdt +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = table2(it) + (ap1-it)*des2(it) +> iqs2 = es / (rvgas*ta*den) +> it = ap1 - 0.5 +> dqdt = 10.*(des2(it) + (ap1-it)*(des2(it+1)-des2(it))) / (rvgas*ta*den) +54,56c180 +< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) +< +< end subroutine fv_sat_adj +--- +> end function iqs2 +60a185,230 +> integer, parameter:: length=2621 +> real, parameter:: rhor = 1.0e3 ! LFO83 +> real, parameter:: vdifu = 2.11e-5 +> real, parameter:: tcond = 2.36e-2 +> real, parameter:: visk = 1.259e-5 +> real, parameter:: hltc = 2.5e6 +> real, parameter:: gam290 = 1.827363 +> real, parameter:: gam380 = 4.694155 +> real, parameter:: alin = 842.0 +> !Intercept parameters +> real, parameter:: rnzr = 8.0e6 +> real, parameter:: c_cracw = 0.9 ! rain accretion efficiency +> real:: scm3, act2 +> integer i +> +> if ( mp_initialized ) return +> if (is_master()) write(*,*) 'Top layer for GFDL_MP=', kmp +> +> lat2 = (hlv + hlf) ** 2 +> +> scm3 = (visk/vdifu)**(1./3.) +> act2 = pi * rnzr * rhor +> +> crevp(1) = 2.*pi*vdifu*tcond*rvgas*rnzr +> crevp(2) = 0.78/sqrt(act2) +> crevp(3) = 0.31*scm3*gam290*sqrt(alin/visk)/act2**0.725 +> crevp(4) = tcond*rvgas +> crevp(5) = hltc**2*vdifu +> +> ! generate es table (dt = 0.1 deg. c) +> allocate ( table (length) ) +> allocate ( table2(length) ) +> allocate ( tablew(length) ) +> allocate ( des2(length) ) +> allocate ( desw(length) ) +> +> call qs_table (length ) +> call qs_table2(length ) +> call qs_tablew(length ) +> +> do i=1,length-1 +> des2(i) = max(0., table2(i+1) - table2(i)) +> desw(i) = max(0., tablew(i+1) - tablew(i)) +> enddo +> des2(length) = des2(length-1) +> desw(length) = desw(length-1) +62c232 +< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) +--- +> mp_initialized = .true. +64a235,336 +> +> subroutine qs_table(n) +> integer, intent(in):: n +> real(kind=R_GRID):: esupc(200) +> real(kind=R_GRID):: tmin, tem, esh20 +> real(kind=R_GRID):: wice, wh2o, t_ice +> real(kind=R_GRID):: delt=0.1 +> integer i +> +> ! constants +> t_ice = tice +> +> ! compute es over ice between -160c and 0 c. +> tmin = t_ice - 160. +> do i=1,1600 +> tem = tmin+delt*real(i-1) +> table(i) = e00*exp((d2ice*log(tem/t_ice)+Li2*(tem-t_ice)/(tem*t_ice))/rvgas) +> enddo +> +> ! compute es over water between -20c and 102c. +> do i=1,1221 +> tem = 253.16+delt*real(i-1) +> esh20 = e00*exp((dc_vap*log(tem/t_ice)+Lv0*(tem-t_ice)/(tem*t_ice))/rvgas) +> if (i <= 200) then +> esupc(i) = esh20 +> else +> table(i+1400) = esh20 +> endif +> enddo +> +> ! derive blended es over ice and supercooled water between -20c and 0c +> do i=1,200 +> tem = 253.16+delt*real(i-1) +> wice = 0.05*(t_ice-tem) +> wh2o = 0.05*(tem-253.16) +> table(i+1400) = wice*table(i+1400)+wh2o*esupc(i) +> enddo +> +> end subroutine qs_table +> +> subroutine qs_tablew(n) +> ! Over water +> integer, intent(in):: n +> real(kind=R_GRID), parameter:: delt=0.1 +> real(kind=R_GRID):: tmin +> real(kind=R_GRID):: tem0, t_ice, fac1 +> integer i +> +> ! constants +> t_ice = tice +> tmin = t_ice - 160. +> do i=1,n +> tem0 = tmin + delt*real(i-1) +> ! compute es over water +> fac1 = Lv0*(tem0-t_ice) / (tem0*t_ice) +> fac1 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas +> fac1 = e00*exp(fac1) +> tablew(i) = fac1 +> enddo +> +> end subroutine qs_tablew +> +> +> subroutine qs_table2(n) +> ! 2-phase table +> integer, intent(in):: n +> real(kind=R_GRID):: delt=0.1 +> real(kind=R_GRID):: tmin +> real(kind=R_GRID):: tem0, tem1, t_ice, fac0, fac1, fac2 +> integer:: i, i0, i1 +> +> ! constants +> t_ice = tice +> tmin = t_ice - 160. +> +> ! High-precision computation: +> do i=1,n +> tem0 = tmin+delt*real(i-1) +> fac0 = (tem0-t_ice) / (tem0*t_ice) +> if ( i<= 1600 ) then +> ! compute es over ice between -160c and 0 c. +> fac1 = fac0*Li2 +> fac2 = (d2ice*log(tem0/t_ice)+fac1) / rvgas +> else +> ! compute es over water between 0c and 102c. +> fac1 = fac0*Lv0 +> fac2 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas +> endif +> fac2 = e00*exp(fac2) +> table2(i) = fac2 +> enddo +> +> !---------- +> ! smoother +> !---------- +> i0 = 1600; i1 = 1601 +> tem0 = 0.25*(table2(i0-1) + 2.*table(i0) + table2(i0+1)) +> tem1 = 0.25*(table2(i1-1) + 2.*table(i1) + table2(i1+1)) +> table2(i0) = tem0 +> table2(i1) = tem1 +> +> end subroutine qs_table2 +fv_control.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_current_grid.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_dynamics.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_fill.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_grid_utils.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_mapz.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_nesting.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_sg.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_tracer2d.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +fv_update_phys.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +sw_core.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +tp_core.F90 +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/model/DIFF_FV_ARRAYS b/model/DIFF_FV_ARRAYS new file mode 100644 index 000000000..a4be05d91 --- /dev/null +++ b/model/DIFF_FV_ARRAYS @@ -0,0 +1,56 @@ +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +57c56 +< id_pfhy, id_pfnh, & +--- +> id_pfhy, id_pfnh, & +59c58,63 +< id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km +--- +> id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km, & +> id_uq, id_vq, id_wq, id_iuq, id_ivq, id_iwq, & ! moisture flux & vertical integral +> id_ut, id_vt, id_wt, id_iut, id_ivt, id_iwt, & ! heat flux +> id_uu, id_uv, id_uw, id_vv, id_vw, id_ww, & ! momentum flux +> id_iuu, id_iuv, id_iuw, id_ivv, id_ivw, id_iww ! vertically integral of momentum flux +> +71,72c75,76 +< integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & +< id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 +--- +> integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & +> id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 diff --git a/model/DIFF_FV_CMP b/model/DIFF_FV_CMP new file mode 100644 index 000000000..e113fe1a6 --- /dev/null +++ b/model/DIFF_FV_CMP @@ -0,0 +1,339 @@ +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +24d3 +< use fms_mod, only: error_mesg, FATAL +28a8,35 +> real, parameter:: cv_vap = 3.*rvgas ! 1384.8 +> real, parameter:: cv_air = cp_air - rdgas ! = rdgas * (7/2-1) = 2.5*rdgas=717.68 +> ! 2050 at 0 deg C; 1972 at -15 C; 1818. at -40 C +> ! real, parameter:: c_ice = 2106. ! heat capacity of ice at 0.C (same as IFS) +> ! real, parameter:: c_liq = 4218. ! ECMWF-IFS at 0 deg C +> real, parameter:: c_ice = 1972. ! -15 C +> real, parameter:: c_liq = 4.1855e+3 ! GFS, at 15 deg C +> real, parameter:: cp_vap = cp_vapor ! 4*rv_gas=1846. +> real, parameter:: dc_vap = cp_vap - c_liq ! = -2344. isobaric heating/cooling +> real, parameter:: dc_ice = c_liq - c_ice ! = 2084 +> real, parameter:: tice = 273.16 +> real, parameter:: t_wfr = tice - 40. +> ! Values at 0 Deg C +> real, parameter:: hlv0 = 2.5e6 +> real, parameter:: hlf0 = 3.3358e5 +> ! Latent heat at absolute zero: +> real, parameter:: Lv0 = hlv0 - dc_vap*tice ! = 3.141264e6 +> real, parameter:: li00 = hlf0 - dc_ice*tice ! = -2.355446e5 +> ! Li (T=113) ~ 0. +> !!! real(kind=R_GRID), parameter:: e00 = 610.71 ! saturation vapor pressure at T0 +> real(kind=R_GRID), parameter:: e00 = 611.21 ! IFS: saturation vapor pressure at T0 +> real(kind=R_GRID), parameter:: d2ice = cp_vap - c_ice +> real(kind=R_GRID), parameter:: Li2 = hlv0+hlf0 - d2ice*tice +> ! Local: +> real:: dw_ocean = 0.12 ! This parameter is different from that in major MP +> real:: crevp(5), lat2 +> real, allocatable:: table(:), table2(:), tablew(:), des2(:), desw(:) +> real:: d0_vap, lv00 +30,31c37,40 +< private +< public fv_sat_adj, qs_init +--- +> logical:: mp_initialized = .false. +> +> private +> public fv_sat_adj, qs_init +37a47,49 +> ! This is designed for 6-class micro-physics schemes; handles the heat release +> ! due to in situ phase changes +> ! input pt is T_vir +52a65,178 +> !--- +> real, dimension(is:ie):: wqsat, dq2dt, qpz, cvm, t0, pt1, icp2, lcp2, tcp2, tcp3, & +> den, q_liq, q_sol, src, hvar +> real, dimension(is:ie):: mc_air, lhl, lhi ! latent heat +> real:: sink, qsw, rh, fac_v2l, fac_l2v +> real:: tc, qsi, dqsdt, dq, dq0, pidep, qi_crt, tmp, dtmp +> real:: condensates, tin, qstar, rqi, q_plus, q_minus +> real:: sdt, dt_Bigg, adj_fac, fac_s, fac_r, fac_i2s, fac_mlt, fac_l2r +> real:: factor, qim, tice0, c_air, c_vap +> integer i,j +> +> +> end subroutine fv_sat_adj +> +> +> real function wqs1(ta, den) +> ! Pure water phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = tablew(it) + (ap1-it)*desw(it) +> wqs1 = es / (rvgas*ta*den) +> +> end function wqs1 +> +> real function iqs1(ta, den) +> ! water-ice phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = table2(it) + (ap1-it)*des2(it) +> iqs1 = es / (rvgas*ta*den) +> +> end function iqs1 +> +> +> real function wqs2(ta, den, dqdt) +> ! Pure water phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> real, intent(out):: dqdt +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = tablew(it) + (ap1-it)*desw(it) +> wqs2 = es / (rvgas*ta*den) +> it = ap1 - 0.5 +> ! Finite diff, del_T = 0.1: +> dqdt = 10.*(desw(it) + (ap1-it)*(desw(it+1)-desw(it))) / (rvgas*ta*den) +> +> end function wqs2 +> +> subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt) +> ! Pure water phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> integer, intent(in):: is, ie +> real, intent(in), dimension(is:ie):: ta, den +> real, intent(out), dimension(is:ie):: wqsat, dqdt +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer i, it +> +> do i=is, ie +> ap1 = 10.*dim(ta(i), tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = tablew(it) + (ap1-it)*desw(it) +> wqsat(i) = es / (rvgas*ta(i)*den(i)) +> it = ap1 - 0.5 +> ! Finite diff, del_T = 0.1: +> dqdt(i) = 10.*(desw(it)+(ap1-it)*(desw(it+1)-desw(it)))/(rvgas*ta(i)*den(i)) +> enddo +> +> end subroutine wqs2_vect +> +> +> +> real function iqs2(ta, den, dqdt) +> ! water-ice phase; universal dry/moist formular using air density +> ! Input "den" can be either dry or moist air density +> real, intent(in):: ta, den +> real, intent(out):: dqdt +> ! local: +> real es, ap1 +> real, parameter:: tmin=tice - 160. +> integer it +> +> ap1 = 10.*dim(ta, tmin) + 1. +> ap1 = min(2621., ap1) +> it = ap1 +> es = table2(it) + (ap1-it)*des2(it) +> iqs2 = es / (rvgas*ta*den) +> it = ap1 - 0.5 +> dqdt = 10.*(des2(it) + (ap1-it)*(des2(it+1)-des2(it))) / (rvgas*ta*den) +54,56c180 +< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) +< +< end subroutine fv_sat_adj +--- +> end function iqs2 +60a185,230 +> integer, parameter:: length=2621 +> real, parameter:: rhor = 1.0e3 ! LFO83 +> real, parameter:: vdifu = 2.11e-5 +> real, parameter:: tcond = 2.36e-2 +> real, parameter:: visk = 1.259e-5 +> real, parameter:: hltc = 2.5e6 +> real, parameter:: gam290 = 1.827363 +> real, parameter:: gam380 = 4.694155 +> real, parameter:: alin = 842.0 +> !Intercept parameters +> real, parameter:: rnzr = 8.0e6 +> real, parameter:: c_cracw = 0.9 ! rain accretion efficiency +> real:: scm3, act2 +> integer i +> +> if ( mp_initialized ) return +> if (is_master()) write(*,*) 'Top layer for GFDL_MP=', kmp +> +> lat2 = (hlv + hlf) ** 2 +> +> scm3 = (visk/vdifu)**(1./3.) +> act2 = pi * rnzr * rhor +> +> crevp(1) = 2.*pi*vdifu*tcond*rvgas*rnzr +> crevp(2) = 0.78/sqrt(act2) +> crevp(3) = 0.31*scm3*gam290*sqrt(alin/visk)/act2**0.725 +> crevp(4) = tcond*rvgas +> crevp(5) = hltc**2*vdifu +> +> ! generate es table (dt = 0.1 deg. c) +> allocate ( table (length) ) +> allocate ( table2(length) ) +> allocate ( tablew(length) ) +> allocate ( des2(length) ) +> allocate ( desw(length) ) +> +> call qs_table (length ) +> call qs_table2(length ) +> call qs_tablew(length ) +> +> do i=1,length-1 +> des2(i) = max(0., table2(i+1) - table2(i)) +> desw(i) = max(0., tablew(i+1) - tablew(i)) +> enddo +> des2(length) = des2(length-1) +> desw(length) = desw(length-1) +62c232 +< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) +--- +> mp_initialized = .true. +64a235,336 +> +> subroutine qs_table(n) +> integer, intent(in):: n +> real(kind=R_GRID):: esupc(200) +> real(kind=R_GRID):: tmin, tem, esh20 +> real(kind=R_GRID):: wice, wh2o, t_ice +> real(kind=R_GRID):: delt=0.1 +> integer i +> +> ! constants +> t_ice = tice +> +> ! compute es over ice between -160c and 0 c. +> tmin = t_ice - 160. +> do i=1,1600 +> tem = tmin+delt*real(i-1) +> table(i) = e00*exp((d2ice*log(tem/t_ice)+Li2*(tem-t_ice)/(tem*t_ice))/rvgas) +> enddo +> +> ! compute es over water between -20c and 102c. +> do i=1,1221 +> tem = 253.16+delt*real(i-1) +> esh20 = e00*exp((dc_vap*log(tem/t_ice)+Lv0*(tem-t_ice)/(tem*t_ice))/rvgas) +> if (i <= 200) then +> esupc(i) = esh20 +> else +> table(i+1400) = esh20 +> endif +> enddo +> +> ! derive blended es over ice and supercooled water between -20c and 0c +> do i=1,200 +> tem = 253.16+delt*real(i-1) +> wice = 0.05*(t_ice-tem) +> wh2o = 0.05*(tem-253.16) +> table(i+1400) = wice*table(i+1400)+wh2o*esupc(i) +> enddo +> +> end subroutine qs_table +> +> subroutine qs_tablew(n) +> ! Over water +> integer, intent(in):: n +> real(kind=R_GRID), parameter:: delt=0.1 +> real(kind=R_GRID):: tmin +> real(kind=R_GRID):: tem0, t_ice, fac1 +> integer i +> +> ! constants +> t_ice = tice +> tmin = t_ice - 160. +> do i=1,n +> tem0 = tmin + delt*real(i-1) +> ! compute es over water +> fac1 = Lv0*(tem0-t_ice) / (tem0*t_ice) +> fac1 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas +> fac1 = e00*exp(fac1) +> tablew(i) = fac1 +> enddo +> +> end subroutine qs_tablew +> +> +> subroutine qs_table2(n) +> ! 2-phase table +> integer, intent(in):: n +> real(kind=R_GRID):: delt=0.1 +> real(kind=R_GRID):: tmin +> real(kind=R_GRID):: tem0, tem1, t_ice, fac0, fac1, fac2 +> integer:: i, i0, i1 +> +> ! constants +> t_ice = tice +> tmin = t_ice - 160. +> +> ! High-precision computation: +> do i=1,n +> tem0 = tmin+delt*real(i-1) +> fac0 = (tem0-t_ice) / (tem0*t_ice) +> if ( i<= 1600 ) then +> ! compute es over ice between -160c and 0 c. +> fac1 = fac0*Li2 +> fac2 = (d2ice*log(tem0/t_ice)+fac1) / rvgas +> else +> ! compute es over water between 0c and 102c. +> fac1 = fac0*Lv0 +> fac2 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas +> endif +> fac2 = e00*exp(fac2) +> table2(i) = fac2 +> enddo +> +> !---------- +> ! smoother +> !---------- +> i0 = 1600; i1 = 1601 +> tem0 = 0.25*(table2(i0-1) + 2.*table(i0) + table2(i0+1)) +> tem1 = 0.25*(table2(i1-1) + 2.*table(i1) + table2(i1+1)) +> table2(i0) = tem0 +> table2(i1) = tem1 +> +> end subroutine qs_table2 diff --git a/tools/DIFF_FV_DIAGONISTCS b/tools/DIFF_FV_DIAGONISTCS new file mode 100644 index 000000000..3146fd748 --- /dev/null +++ b/tools/DIFF_FV_DIAGONISTCS @@ -0,0 +1,394 @@ +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +30c29,30 +< register_static_field, send_data, diag_grid_init +--- +> register_static_field, send_data, diag_grid_init, & +> diag_field_add_attribute +81c81 +< public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity !:MKL December 27 2019 +--- +> public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity +152c152 +< vrange = (/ -330., 330. /) ! winds +--- +> vrange = (/ -300., 300. /) ! winds +158c158 +< trange = (/ 100., 350. /) ! temperature +--- +> trange = (/ 100., 400. /) ! temperature +291a292,294 +> if (id_area > 0) then +> call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') +> endif +294c297 +< 'surface height', 'm' ) +--- +> 'surface height', 'm', interp_method='conserve_order1' ) +425c428 +< 'surface height', 'm') +--- +> 'surface height', 'm', interp_method='conserve_order1') +431c434 +< 'surface pressure', 'Pa', missing_value=missing_value ) +--- +> 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) +487,488c490,492 +< all(idiag%id_h(minloc(abs(levs-850)))>0) .or. all(idiag%id_h(minloc(abs(levs-1000)))>0) ) then +< idiag%id_hght = 1 +--- +> all(idiag%id_h(minloc(abs(levs-850)))>0) .or. all(idiag%id_h(minloc(abs(levs-925)))>0) .or. & +> all(idiag%id_h(minloc(abs(levs-1000)))>0) ) then +> idiag%id_hght = 1 +490c494 +< idiag%id_hght = 0 +--- +> idiag%id_hght = 0 +496c500 +< 'mean 300-500 mb temp', 'K', missing_value=missing_value ) +--- +> 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) +583a588,654 +> +> !-------------------- +> ! 3D flux terms +> !-------------------- +> idiag%id_uq = register_diag_field ( trim(field), 'uq', axes(1:3), Time, & +> 'zonal moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) +> idiag%id_vq = register_diag_field ( trim(field), 'vq', axes(1:3), Time, & +> 'meridional moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) +> +> idiag%id_ut = register_diag_field ( trim(field), 'ut', axes(1:3), Time, & +> 'zonal heat flux', 'K*m/sec', missing_value=missing_value ) +> idiag%id_vt = register_diag_field ( trim(field), 'vt', axes(1:3), Time, & +> 'meridional heat flux', 'K*m/sec', missing_value=missing_value ) +> +> idiag%id_uu = register_diag_field ( trim(field), 'uu', axes(1:3), Time, & +> 'zonal flux of zonal wind', '(m/sec)^2', missing_value=missing_value ) +> idiag%id_uv = register_diag_field ( trim(field), 'uv', axes(1:3), Time, & +> 'zonal flux of meridional wind', '(m/sec)^2', missing_value=missing_value ) +> idiag%id_vv = register_diag_field ( trim(field), 'vv', axes(1:3), Time, & +> 'meridional flux of meridional wind', '(m/sec)^2', missing_value=missing_value ) +> +> if(.not.Atm(n)%flagstruct%hydrostatic) then +> idiag%id_wq = register_diag_field ( trim(field), 'wq', axes(1:3), Time, & +> 'vertical moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) +> idiag%id_wt = register_diag_field ( trim(field), 'wt', axes(1:3), Time, & +> 'vertical heat flux', 'K*m/sec', missing_value=missing_value ) +> idiag%id_uw = register_diag_field ( trim(field), 'uw', axes(1:3), Time, & +> 'zonal flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) +> idiag%id_vw = register_diag_field ( trim(field), 'vw', axes(1:3), Time, & +> 'meridional flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) +> idiag%id_ww = register_diag_field ( trim(field), 'ww', axes(1:3), Time, & +> 'vertical flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) +> endif +> +> !-------------------- +> ! vertical integral of 3D flux terms +> !-------------------- +> idiag%id_iuq = register_diag_field ( trim(field), 'uq_vi', axes(1:2), Time, & +> 'vertical integral of uq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) +> idiag%id_ivq = register_diag_field ( trim(field), 'vq_vi', axes(1:2), Time, & +> 'vertical integral of vq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) +> +> idiag%id_iut = register_diag_field ( trim(field), 'ut_vi', axes(1:2), Time, & +> 'vertical integral of ut', 'K*m/sec*Pa', missing_value=missing_value ) +> idiag%id_ivt = register_diag_field ( trim(field), 'vt_vi', axes(1:2), Time, & +> 'vertical integral of vt', 'K*m/sec*Pa', missing_value=missing_value ) +> +> idiag%id_iuu = register_diag_field ( trim(field), 'uu_vi', axes(1:2), Time, & +> 'vertical integral of uu', '(m/sec)^2*Pa', missing_value=missing_value ) +> idiag%id_iuv = register_diag_field ( trim(field), 'uv_vi', axes(1:2), Time, & +> 'vertical integral of uv', '(m/sec)^2*Pa', missing_value=missing_value ) +> idiag%id_ivv = register_diag_field ( trim(field), 'vv_vi', axes(1:2), Time, & +> 'vertical integral of vv', '(m/sec)^2*Pa', missing_value=missing_value ) +> +> if(.not.Atm(n)%flagstruct%hydrostatic) then +> idiag%id_iwq = register_diag_field ( trim(field), 'wq_vi', axes(1:2), Time, & +> 'vertical integral of wq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) +> idiag%id_iwt = register_diag_field ( trim(field), 'wt_vi', axes(1:2), Time, & +> 'vertical integral of wt', 'K*m/sec*Pa', missing_value=missing_value ) +> idiag%id_iuw = register_diag_field ( trim(field), 'uw_vi', axes(1:2), Time, & +> 'vertical integral of uw', '(m/sec)^2*Pa', missing_value=missing_value ) +> idiag%id_ivw = register_diag_field ( trim(field), 'vw_vi', axes(1:2), Time, & +> 'vertical integral of vw', '(m/sec)^2*Pa', missing_value=missing_value ) +> idiag%id_iww = register_diag_field ( trim(field), 'ww_vi', axes(1:2), Time, & +> 'vertical integral of ww', '(m/sec)^2*Pa', missing_value=missing_value ) +> endif +> +653c724 +< '850-mb vorticity', '1/s', missing_value=missing_value ) +--- +> '850-mb vorticity', '1/s', missing_value=missing_value) +661a733,738 +> !-------------------------- +> ! 200-mb winds: +> !-------------------------- +> idiag%id_w200 = register_diag_field ( trim(field), 'w200', axes(1:2), Time, & +> '200-mb w-wind', '1/s', missing_value=missing_value ) +> ! s200: wind speed for computing KE spectrum +701a779,783 +> !-------------------------- +> ! 850-mb winds: +> !-------------------------- +> idiag%id_w850 = register_diag_field ( trim(field), 'w850', axes(1:2), Time, & +> '850-mb w-wind', '1/s', missing_value=missing_value ) +926c1008 +< real, allocatable :: a2(:,:),a3(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) +--- +> real, allocatable :: a2(:,:),a3(:,:,:), a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) +2195,2196c2277 +< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & +< & .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km>0) then +--- +> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS +2235a2317,2322 +> if ( idiag%id_w200>0 ) then +> call interpolate_vertical(isc, iec, jsc, jec, npz, & +> 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) +> used=send_data(idiag%id_w200, a2, Time) +> endif +> ! 250-mb +2262c2349 +< if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km>0)) then +--- +> if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km .ne. 0 )) then +2406a2494,2498 +> if ( idiag%id_x850>0 .and. idiag%id_vort850>0 ) then +> x850(:,:) = x850(:,:)*a2(:,:) +> used=send_data(idiag%id_x850, x850, Time) +> deallocate ( x850 ) +> endif +2476c2568 +< call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/),& +--- +> call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/), & +2578a2671,2782 +> !---------------------------------- +> ! compute 3D flux terms +> !---------------------------------- +> allocate ( a4(isc:iec,jsc:jec,npz) ) +> +> ! zonal moisture flux +> if(idiag%id_uq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uq, a4, Time) +> if(idiag%id_iuq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuq, a2, Time) +> endif +> endif +> ! meridional moisture flux +> if(idiag%id_vq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vq, a4, Time) +> if(idiag%id_ivq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivq, a2, Time) +> endif +> endif +> +> ! zonal heat flux +> if(idiag%id_ut > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_ut, a4, Time) +> if(idiag%id_iut > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iut, a2, Time) +> endif +> endif +> ! meridional heat flux +> if(idiag%id_vt > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vt, a4, Time) +> if(idiag%id_ivt > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivt, a2, Time) +> endif +> endif +> +> ! zonal flux of u +> if(idiag%id_uu > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uu, a4, Time) +> if(idiag%id_iuu > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuu, a2, Time) +> endif +> endif +> ! zonal flux of v +> if(idiag%id_uv > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uv, a4, Time) +> if(idiag%id_iuv > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuv, a2, Time) +> endif +> endif +> ! meridional flux of v +> if(idiag%id_vv > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vv, a4, Time) +> if(idiag%id_ivv > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivv, a2, Time) +> endif +> endif +2579a2784,2861 +> ! terms related with vertical wind ( Atm(n)%w ): +> if(.not.Atm(n)%flagstruct%hydrostatic) then +> ! vertical moisture flux +> if(idiag%id_wq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_wq, a4, Time) +> if(idiag%id_iwq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iwq, a2, Time) +> endif +> endif +> ! vertical heat flux +> if(idiag%id_wt > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_wt, a4, Time) +> if(idiag%id_iwt > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iwt, a2, Time) +> endif +> endif +> ! zonal flux of w +> if(idiag%id_uw > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uw, a4, Time) +> if(idiag%id_iuw > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuw, a2, Time) +> endif +> endif +> ! meridional flux of w +> if(idiag%id_vw > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vw, a4, Time) +> if(idiag%id_ivw > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivw, a2, Time) +> endif +> endif +> ! vertical flux of w +> if(idiag%id_ww > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_ww, a4, Time) +> if(idiag%id_iww > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iww, a2, Time) +> endif +> endif +> endif +2580a2863 +> deallocate ( a4 ) diff --git a/tools/fv_diagnostics.F90 b/tools/fv_diagnostics.F90 index f307195af..a6d8ffa68 100644 --- a/tools/fv_diagnostics.F90 +++ b/tools/fv_diagnostics.F90 @@ -27,7 +27,8 @@ module fv_diagnostics_mod use time_manager_mod, only: time_type, get_date, get_time use mpp_domains_mod, only: domain2d, mpp_update_domains, DGRID_NE use diag_manager_mod, only: diag_axis_init, register_diag_field, & - register_static_field, send_data, diag_grid_init + register_static_field, send_data, diag_grid_init, & + diag_field_add_attribute !:MKL December 27 2019 use fv_arrays_mod, only: fv_atmos_type, fv_grid_type, fv_diag_type, fv_grid_bounds_type, & R_GRID !!! CLEANUP needs rem oval? @@ -78,7 +79,7 @@ module fv_diagnostics_mod public :: fv_diag_init, fv_time, fv_diag, prt_mxm, prt_maxmin, range_check!, id_divg, id_te public :: prt_mass, prt_minmax, ppme, fv_diag_init_gn, z_sum, sphum_ll_fix, eqv_pot, qcly0, gn - public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field + public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity !:MKL December 27 2019 integer, parameter :: nplev = 31 integer :: levs(nplev) @@ -149,13 +150,14 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) vsrange = (/ -200., 200. /) ! surface (lowest layer) winds - vrange = (/ -330., 330. /) ! winds + !:MKL vrange = (/ -330., 330. /) ! winds + vrange = (/ -300., 300. /) ! winds wrange = (/ -100., 100. /) ! vertical wind rhrange = (/ -10., 150. /) ! RH #ifdef HIWPP trange = (/ 5., 350. /) ! temperature #else - trange = (/ 100., 350. /) ! temperature + trange = (/ 100., 400. /) ! temperature !:MKL December 27 2019 changed from 450 to 400 #endif slprange = (/800., 1200./) ! sea-level-pressure @@ -289,9 +291,13 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) 'latitude', 'degrees_N' ) id_area = register_static_field ( trim(field), 'area', axes(1:2), & 'cell area', 'm**2' ) + if (id_area > 0) then !:MKL December 27 2019 + call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') !:MKL December 27 2019 + endif !:MKL December 27 2019 + #ifndef DYNAMICS_ZS idiag%id_zsurf = register_static_field ( trim(field), 'zsurf', axes(1:2), & - 'surface height', 'm' ) + 'surface height', 'm', interp_method='conserve_order1' ) !:MKL December 27 2019 #endif idiag%id_zs = register_static_field ( trim(field), 'zs', axes(1:2), & 'Original Mean Terrain', 'm' ) @@ -428,7 +434,7 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) ! Surface pressure !------------------- idiag%id_ps = register_diag_field ( trim(field), 'ps', axes(1:2), Time, & - 'surface pressure', 'Pa', missing_value=missing_value ) + 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) !:MKL December 27 2019 !------------------- ! Mountain torque @@ -493,7 +499,7 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) ! mean temp between 300-500 mb !----------------------------- idiag%id_tm = register_diag_field (trim(field), 'tm', axes(1:2), Time, & - 'mean 300-500 mb temp', 'K', missing_value=missing_value ) + 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) !:MKL December 27 2019 !------------------- ! Sea-level-pressure From 40bfb9a84017100ccee9e976ddbb65294a8c35f3 Mon Sep 17 00:00:00 2001 From: Mikyung Lee Date: Tue, 31 Dec 2019 14:52:16 -0500 Subject: [PATCH 2/9] modified to include all diagnostic variables. no math edits --- GFDL_tools/ALLDIFF | 319 +++++++ GFDL_tools/DIFF_cmip_diag | 204 ----- GFDL_tools/fv_cmip_diag.F90 | 170 +++- driver/GFDL/{DIFF_atmosphere => DIFF} | 117 +-- driver/GFDL/atmosphere.F90 | 98 +-- model/fv_arrays.F90 | 7 +- tools/ALLDIFF | 1125 +++++++++++++++++++++++++ tools/DIFF_FV_DIAGONISTCS | 394 --------- tools/fv_diagnostics.F90 | 318 ++++++- tools/fv_eta.F90 | 47 ++ 10 files changed, 2024 insertions(+), 775 deletions(-) create mode 100644 GFDL_tools/ALLDIFF delete mode 100644 GFDL_tools/DIFF_cmip_diag rename driver/GFDL/{DIFF_atmosphere => DIFF} (55%) create mode 100644 tools/ALLDIFF delete mode 100644 tools/DIFF_FV_DIAGONISTCS diff --git a/GFDL_tools/ALLDIFF b/GFDL_tools/ALLDIFF new file mode 100644 index 000000000..2696e52e3 --- /dev/null +++ b/GFDL_tools/ALLDIFF @@ -0,0 +1,319 @@ +---------------------------fv_ada_nudge.F90------------------ +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +---------------------------fv_climate_nudge.F90------------------ +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +---------------------------fv_cmip_diag.F90------------------ +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +39c19 +< use constants_mod, only: GRAV, RDGAS +--- +> use constants_mod, only: GRAV, RDGAS +44,45c24,25 +< get_height_given_pressure, & +< rh_calc, get_height_field, get_vorticity +--- +> get_height_given_pressure, rh_calc, & +> get_height_field, get_vorticity +76d55 +< +174,176d152 +< ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & +< 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') +< +185a162,164 +> ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & +> 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') +> +245a225 +> +263c243 +< area=area_id, interp_method='conserve_order1') +--- +> area=area_id, interp_method='conserve_order1') +291c271 +< '700 hPa Average', 'Pa', standard_name='air_pressure') +--- +> '700 hPa Average', 'Pa', standard_name='air_pressure') +293,304c273,284 +< call diag_field_add_attribute (id_pl700, 'axis', 'Z') +< call diag_field_add_attribute (id_pl700, 'positive', 'down' ) +< call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) +< ! add bounds +< id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') +< id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & +< '700 hPa boundaries', 'Pa', standard_name='air_pressure') +< if (id_pl700_bnds > 0) then +< call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) +< used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) +< endif +< used = send_data (id_pl700, 700.e2, Time) +--- +> call diag_field_add_attribute (id_pl700, 'axis', 'Z') +> call diag_field_add_attribute (id_pl700, 'positive', 'down' ) +> call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) +> ! add bounds +> id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') +> id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & +> '700 hPa boundaries', 'Pa', standard_name='air_pressure') +> if (id_pl700_bnds > 0) then +> call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) +> used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) +> endif +> used = send_data (id_pl700, 700.e2, Time) +307d286 +< +360a340 +> +362c342 +< 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +--- +> 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +364,365c344,345 +< call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') +< +--- +> call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') +> +367c347 +< 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +--- +> 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +369c349 +< call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') +--- +> call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') +371,374c351,354 +< id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & +< 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +< if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & +< call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') +--- +> id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & +> 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') +> if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & +> call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') +377c357 +< +--- +> +379,380c359,360 +< 'Mean Relative Vorticity over 600-850 hPa', 's-1', & +< standard_name='atmosphere_relative_vorticity') +--- +> 'Mean Relative Vorticity over 600-850 hPa', 's-1', & +> standard_name='atmosphere_relative_vorticity') +382,383c362,363 +< call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') +< +--- +> call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') +> +430c410 +< logical :: compute_wa . compute_rh +--- +> logical :: compute_rh, compute_wa +435d414 +< +441c420 +< Atm(1)%npz) :: rhum, wa, rv +--- +> Atm(1)%npz) :: rhum, wa, rv +460c439 +< ! set flags for computing quantities +--- +> ! set flags for computing quantities +462c441 +< compute_wa = .false. +--- +> compute_wa = .false. +464,465c443,444 +< if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. +< +--- +> if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. +> +467c446 +< if ( compute_rh .or. compute_wa ) then +--- +> if (compute_rh .or. compute_wa) then +475,477c454,456 +< if( compute_rh) then +< call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & +< Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) +--- +> if (compute_rh) then +> call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & +> Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) +480,483c459,462 +< if (compute_wa) then +< wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & +< pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) +< endif +--- +> if (compute_wa) then +> wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & +> pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) +> endif +486a466 +> +493c473 +< ! relative vorticity +--- +> ! relative vorticity +495,498c475,477 +< call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & +< Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) +< endif +< +--- +> call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & +> Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) +> endif +527,529c506,508 +< ! vertical velocity +< if (query_cmip_diag_id(ID_wa)) & +< used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) +--- +> ! vertical velocity +> if (query_cmip_diag_id(ID_wa)) & +> used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) +578,584c557,563 +< !---------------------------------------------------------------------- +< ! stratiform cloud tracers (only on model levels) +< +< if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) +< if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) +< if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) +< +--- +> !---------------------------------------------------------------------- +> ! stratiform cloud tracers (only on model levels) +> +> if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) +> if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) +> if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) +> +649,650c628,629 +< call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) +< used = send_data (id_rv200, dat2, Time) +--- +> call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) +> used = send_data (id_rv200, dat2, Time) +652c631 +< +--- +> +654,655c633,634 +< call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) +< used = send_data (id_rv500, dat2, Time) +--- +> call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) +> used = send_data (id_rv500, dat2, Time) +657,665c636,644 +< +< if (id_rv850 > 0 .or. id_vortmean > 0 ) then +< call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) +< if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) +< if (id_vortmean > 0) then +< call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) +< call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) +< used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) +< endif +--- +> +> if (id_rv850 > 0 .or. id_vortmean > 0) then +> call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) +> if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) +> if (id_vortmean > 0) then +> call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) +> call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) +> used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) +> endif +667c646 +< +--- +> +---------------------------read_climate_nudge_data.F90------------------ +1,20c1 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +--- +> diff --git a/GFDL_tools/DIFF_cmip_diag b/GFDL_tools/DIFF_cmip_diag deleted file mode 100644 index f29f19766..000000000 --- a/GFDL_tools/DIFF_cmip_diag +++ /dev/null @@ -1,204 +0,0 @@ -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -31c11 -< use diag_manager_mod, only: register_diag_field, & ---- -> use diag_manager_mod, only: register_diag_field, diag_axis_init, & -39c19 -< use constants_mod, only: GRAV ---- -> use constants_mod, only: GRAV, RDGAS -44,45c24,25 -< get_height_given_pressure, & -< rh_calc, get_height_field ---- -> get_height_given_pressure, rh_calc, & -> get_height_field, get_vorticity -61c41 -< integer :: sphum ---- -> integer :: sphum, nql, nqi, nqa -74c54,55 -< ID_uwap, ID_vwap, ID_twap ---- -> ID_uwap, ID_vwap, ID_twap, ID_wa, & -> ID_cls, ID_clws, ID_clis -79a61 -> integer :: id_rv200, id_rv500, id_rv850, id_vortmean -109a92 -> integer :: id_pl700, id_pl700_bnds, id_nv -153a137,139 -> nql = get_tracer_index (MODEL_ATMOS, 'liq_wat') -> nqi = get_tracer_index (MODEL_ATMOS, 'ice_wat') -> nqa = get_tracer_index (MODEL_ATMOS, 'cld_amt') -175a162,164 -> ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & -> 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') -> -218a208,226 -> ! stratiform cloud tracers -> -> if (nql > 0) then -> ID_clws = register_cmip_diag_field_3d (mod_name, 'clws', Time, & -> 'Mass Fraction of Stratiform Cloud Liquid Water', '1.0', & -> standard_name='mass_fraction_of_stratiform_cloud_liquid_water_in_air') -> endif -> if (nqi > 0) then -> ID_clis = register_cmip_diag_field_3d (mod_name, 'clis', Time, & -> 'Mass Fraction of Stratiform Cloud Ice', '1.0', & -> standard_name='mass_fraction_of_convective_cloud_ice_in_air') -> endif -> if (nqa > 0) then -> ID_cls = register_cmip_diag_field_3d (mod_name, 'cls', Time, & -> 'Percentage Cover of Stratiform Cloud', '%', & -> standard_name='stratiform_cloud_area_fraction_in_atmosphere_layer') -> endif -> -> !----------------------------------------------------------------------- -235c243 -< area=area_id) ---- -> area=area_id, interp_method='conserve_order1') -242c250 -< ! area=area_id) ---- -> ! area=area_id, interp_method='conserve_order1') -261a270,286 -> id_pl700 = register_static_field (mod_name, 'pl700', (/null_axis_id/), & -> '700 hPa Average', 'Pa', standard_name='air_pressure') -> if (id_pl700 > 0) then -> call diag_field_add_attribute (id_pl700, 'axis', 'Z') -> call diag_field_add_attribute (id_pl700, 'positive', 'down' ) -> call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) -> ! add bounds -> id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') -> id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & -> '700 hPa boundaries', 'Pa', standard_name='air_pressure') -> if (id_pl700_bnds > 0) then -> call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) -> used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) -> endif -> used = send_data (id_pl700, 700.e2, Time) -> endif -> -313a339,363 -> !---- relative vorticity at 200, 500, 850 hPa ---- -> -> id_rv200 = register_cmip_diag_field_2d (mod_name, 'rv200', Time, & -> 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') -> if (id_rv200 > 0 .and. id_plevels(id_p200) > 0) & -> call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') -> -> id_rv500 = register_cmip_diag_field_2d (mod_name, 'rv500', Time, & -> 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') -> if (id_rv500 > 0 .and. id_plevels(id_p500) > 0) & -> call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') -> -> id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & -> 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') -> if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & -> call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') -> -> !---- mean relative vorticity 600, 700, 850 hPa ---- -> -> id_vortmean = register_cmip_diag_field_2d (mod_name, 'vortmean', Time, & -> 'Mean Relative Vorticity over 600-850 hPa', 's-1', & -> standard_name='atmosphere_relative_vorticity') -> if (id_vortmean > 0 .and. id_pl700 > 0) & -> call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') -> -359a410 -> logical :: compute_rh, compute_wa -362c413,414 -< Atm(1)%bd%jsc:Atm(1)%bd%jec) :: pfull, dat2 ---- -> Atm(1)%bd%jsc:Atm(1)%bd%jec) :: pfull, dat2, & -> rv850, rv700, rv600 -368c420 -< Atm(1)%npz) :: rhum ---- -> Atm(1)%npz) :: rhum, wa, rv -386a439,444 -> ! set flags for computing quantities -> compute_rh = .false. -> compute_wa = .false. -> if (count(ID_hur%field_id(:)>0) > 0) compute_rh = .true. -> if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. -> -388c446 -< if (count(ID_hur%field_id(:)>0) > 0) then ---- -> if (compute_rh .or. compute_wa) then -395c453,455 -< call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & ---- -> ! compute relative humidity -> if (compute_rh) then -> call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & -396a457,462 -> endif -> ! compute vertical velocity -> if (compute_wa) then -> wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & -> pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) -> endif -406a473,478 -> ! relative vorticity -> if (any((/id_rv200,id_rv500,id_rv850,id_vortmean/) > 0)) then -> call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & -> Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) -> endif -> -433a506,509 -> ! vertical velocity -> if (query_cmip_diag_id(ID_wa)) & -> used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) -> -481a558,564 -> ! stratiform cloud tracers (only on model levels) -> -> if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) -> if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) -> if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) -> -> !---------------------------------------------------------------------- -541a625,644 -> endif -> -> if (id_rv200 > 0) then -> call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) -> used = send_data (id_rv200, dat2, Time) -> endif -> -> if (id_rv500 > 0) then -> call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) -> used = send_data (id_rv500, dat2, Time) -> endif -> -> if (id_rv850 > 0 .or. id_vortmean > 0) then -> call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) -> if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) -> if (id_vortmean > 0) then -> call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) -> call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) -> used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) -> endif diff --git a/GFDL_tools/fv_cmip_diag.F90 b/GFDL_tools/fv_cmip_diag.F90 index 240b450f2..b987aa257 100644 --- a/GFDL_tools/fv_cmip_diag.F90 +++ b/GFDL_tools/fv_cmip_diag.F90 @@ -28,7 +28,7 @@ module fv_cmip_diag_mod use fms_io_mod, only: set_domain, nullify_domain, string use time_manager_mod, only: time_type use mpp_domains_mod, only: domain2d -use diag_manager_mod, only: register_diag_field, & +use diag_manager_mod, only: register_diag_field, diag_axis_init, & send_data, get_diag_field_id, & register_static_field, & diag_field_add_attribute, & @@ -36,13 +36,13 @@ module fv_cmip_diag_mod use diag_data_mod, only: CMOR_MISSING_VALUE, null_axis_id use tracer_manager_mod, only: get_tracer_index use field_manager_mod, only: MODEL_ATMOS -use constants_mod, only: GRAV, RDGAS !:MKL - December 26 2019 +use constants_mod, only: GRAV, RDGAS use fv_mapz_mod, only: E_Flux use fv_arrays_mod, only: fv_atmos_type use fv_diagnostics_mod, only: interpolate_vertical, & get_height_given_pressure, & - rh_calc, get_height_field, get_vorticity !:MKL - December 27 2019, also made public in fv_diagnostics + rh_calc, get_height_field, get_vorticity use atmos_cmip_diag_mod, only: register_cmip_diag_field_2d, & register_cmip_diag_field_3d, & @@ -58,7 +58,7 @@ module fv_cmip_diag_mod public :: fv_cmip_diag_init, fv_cmip_diag, fv_cmip_diag_end -integer :: sphum +integer :: sphum, nql, nqi, nqa !----------------------------------------------------------------------- !--- namelist --- @@ -71,13 +71,15 @@ module fv_cmip_diag_mod type(cmip_diag_id_type) :: ID_ta, ID_ua, ID_va, ID_hus, ID_hur, ID_wap, ID_zg, & ID_u2, ID_v2, ID_t2, ID_wap2, ID_uv, ID_ut, ID_vt, & - ID_uwap, ID_vwap, ID_twap, ID_wa !:MKL December 26 2019 + ID_uwap, ID_vwap, ID_twap, ID_wa, & + ID_cls, ID_clws, ID_clis + integer :: id_ps, id_orog integer :: id_ua200, id_va200, id_ua850, id_va850, & id_ta500, id_ta700, id_ta850, id_zg500, & id_zg100, id_zg10, id_zg1000, & id_hus850, id_wap500, id_ua10 -integer :: id_rv850 !:MKL December 27 2019 +integer :: id_rv200, id_rv500, id_rv850, id_vortmean character(len=5) :: mod_name = 'atmos' @@ -108,6 +110,7 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) integer, dimension(7) :: id_plevels integer, parameter :: id_p10=1, id_p100=2, id_p200=3, id_p500=4, id_p700=5, id_p850=6, id_p1000=7 character(len=4) :: plabel +integer :: id_pl700, id_pl700_bnds, id_nv !----------------------------------------------------------------------- if (module_is_initialized) then @@ -152,6 +155,9 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) !----------------------------------------------------------------------- sphum = get_tracer_index (MODEL_ATMOS, 'sphum') + nql = get_tracer_index (MODEL_ATMOS, 'liq_wat') + nqi = get_tracer_index (MODEL_ATMOS, 'ice_wat') + nqa = get_tracer_index (MODEL_ATMOS, 'cld_amt') !----------------------------------------------------------------------- ! register cmip 3D variables (on model levels and pressure levels) @@ -165,7 +171,6 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) ID_va = register_cmip_diag_field_3d (mod_name, 'va', Time, & 'Northward Wind', 'm s-1', standard_name='northward_wind') - !:MKL December 26 2019 ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') @@ -220,6 +225,24 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) 'Air Temperature times Omega', 'K m s-1', & standard_name='product_of_omega_and_air_temperature') +!----------------------------------------------------------------------- +! stratiform cloud tracers + + if (nql > 0) then + ID_clws = register_cmip_diag_field_3d (mod_name, 'clws', Time, & + 'Mass Fraction of Stratiform Cloud Liquid Water', '1.0', & + standard_name='mass_fraction_of_stratiform_cloud_liquid_water_in_air') + endif + if (nqi > 0) then + ID_clis = register_cmip_diag_field_3d (mod_name, 'clis', Time, & + 'Mass Fraction of Stratiform Cloud Ice', '1.0', & + standard_name='mass_fraction_of_convective_cloud_ice_in_air') + endif + if (nqa > 0) then + ID_cls = register_cmip_diag_field_3d (mod_name, 'cls', Time, & + 'Percentage Cover of Stratiform Cloud', '%', & + standard_name='stratiform_cloud_area_fraction_in_atmosphere_layer') + endif !----------------------------------------------------------------------- ! 2D fields @@ -237,14 +260,14 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) id_orog = register_static_field (mod_name, 'orog', axes(1:2), & 'Surface Altitude', 'm', & standard_name='surface_altitude', & - area=area_id, interp_method='conserve_order1') !:MKL December 27 2019 + area=area_id, interp_method='conserve_order1') if (id_orog > 0) used = send_data (id_orog, Atm(n)%phis(isc:iec,jsc:jec)/GRAV, Time) #else !--- for now output this as 'zsurf' from fv_diagnostics --- ! id_orog = register_diag_field (mod_name, 'orog', axes(1:2), Time, & ! 'Surface Altitude', 'm', & ! standard_name='surface_altitude', & -! area=area_id) +! area=area_id, interp_method='conserve_order1') #endif !----------------------------------------------------------------------- @@ -264,6 +287,24 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) endif enddo + id_pl700 = register_static_field (mod_name, 'pl700', (/null_axis_id/), & + '700 hPa Average', 'Pa', standard_name='air_pressure') + if (id_pl700 > 0) then + call diag_field_add_attribute (id_pl700, 'axis', 'Z') + call diag_field_add_attribute (id_pl700, 'positive', 'down' ) + call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) + ! add bounds + id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') + id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & + '700 hPa boundaries', 'Pa', standard_name='air_pressure') + if (id_pl700_bnds > 0) then + call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) + used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) + endif + used = send_data (id_pl700, 700.e2, Time) + endif + + !---- register field on single pressure levels ---- id_ua10 = register_cmip_diag_field_2d (mod_name, 'ua10', Time, & @@ -316,12 +357,30 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) if (id_hus850 > 0 .and. id_plevels(id_p850) > 0) & call diag_field_add_attribute (id_hus850, 'coordinates', 'p850') - !---- relative vorticity at 850 hPa ---- !:MKL December 27 2019 - id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & !:MKL December 27 2019 - 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') !:MKL December 27 2019 - if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & !:MKL December 27 2019 - call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') !:MKL December 27 2019 - + !---- relative vorticity at 200, 500, 850 hPa ---- + id_rv200 = register_cmip_diag_field_2d (mod_name, 'rv200', Time, & + 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') + if (id_rv200 > 0 .and. id_plevels(id_p200) > 0) & + call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') + + id_rv500 = register_cmip_diag_field_2d (mod_name, 'rv500', Time, & + 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') + if (id_rv500 > 0 .and. id_plevels(id_p500) > 0) & + call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') + + id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & + 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') + if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & + call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') + + !---- mean relative vorticity 600, 700, 850 hPa ---- + + id_vortmean = register_cmip_diag_field_2d (mod_name, 'vortmean', Time, & + 'Mean Relative Vorticity over 600-850 hPa', 's-1', & + standard_name='atmosphere_relative_vorticity') + if (id_vortmean > 0 .and. id_pl700 > 0) & + call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') + !---- omega at 500 hPa ---- id_wap500 = register_cmip_diag_field_2d (mod_name, 'wap500', Time, & @@ -368,18 +427,18 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) integer :: isc, iec, jsc, jec, n, i, j, k, id integer :: ngc, npz logical :: used -logical :: compute_wa !:MKL December 26 2019 +logical :: compute_wa , compute_rh real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec) :: pfull, dat2, & - rv850 !:MKL December 27 2018 + rv850, rv700, rv600 real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec,1) :: dat3 real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec, & - Atm(1)%npz) :: rhum, wa, rv !:MKL December 26 2019 + Atm(1)%npz) :: rhum, wa, rv real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec, & @@ -398,24 +457,30 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) call set_domain(Atm(n)%domain) - ! set flags for computing quantities !:MKL December 26 2019 - compute_wa = .false. !:MKL December 26 2019 - if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. !:MKL December 26 2019 + ! set flags for computing quantities + compute_rh = .false. + compute_wa = .false. + if (count(ID_hur%field_id(:)>0) > 0) compute_rh = .true. + if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. ! compute relative humidity at model levels (if needed) - if (count(ID_hur%field_id(:)>0) > 0 .or. compute_wa ) then !:MKL December 26 2019 + if ( compute_rh .or. compute_wa ) then do k=1,npz do j=jsc,jec do i=isc,iec pfull(i,j) = Atm(n)%delp(i,j,k)/(Atm(n)%peln(i,k+1,j)-Atm(n)%peln(i,k,j)) enddo enddo - call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & - Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) - if (compute_wa) then !:MKL December 26 2019 - wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & !:MKL December 26 2019 - pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) !:MKL December 26 2019 - end if !:MKL December 26 2019 + ! compute relative humidity + if( compute_rh) then + call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & + Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) + endif + ! compute vertical velocity + if (compute_wa) then + wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & + pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) + endif enddo endif @@ -425,11 +490,11 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) wz, Atm(n)%pt, Atm(n)%q, Atm(n)%peln, zvir) endif - ! relative vorticity !:MKL December 27 2019 - if (id_rv850 > 0) then !:MKL December 27 2019 - call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & !:MKL December 27 2019 - Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) !:MKL December 27 2019 - endif !:MKL December 27 2019 + ! relative vorticity + if (any((/id_rv200,id_rv500,id_rv850,id_vortmean/) > 0)) then + call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & + Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) + endif !---------------------------------------------------------------------- @@ -459,9 +524,9 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) if (query_cmip_diag_id(ID_hur)) & used = send_cmip_data_3d (ID_hur, rhum(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) - ! vertical velocity !:MKL December 26 2019 - if (query_cmip_diag_id(ID_wa)) & !:MKL December 26 2019 - used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) !:MKL December 26 2019 + ! vertical velocity + if (query_cmip_diag_id(ID_wa)) & + used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) ! geopotential height if (query_cmip_diag_id(ID_zg)) & @@ -510,6 +575,13 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) used = send_cmip_data_3d (ID_twap, Atm(n)%pt (isc:iec,jsc:jec,:)*Atm(n)%omga(isc:iec,jsc:jec,:), & Time, phalf=Atm(n)%peln, opt=1) + !---------------------------------------------------------------------- + ! stratiform cloud tracers (only on model levels) + + if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) + if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) + if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) + !---------------------------------------------------------------------- ! process 2D fields on specific pressure levels ! @@ -573,12 +645,26 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) used = send_data (id_wap500, dat2, Time) endif - - if (id_rv850 > 0 ) then !:MKL December 27 2019 - call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) !:MKL December 27 2019 - if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) !:MKL December 27 2019 - endif !:MKL December 27 2019 - + if (id_rv200 > 0) then + call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) + used = send_data (id_rv200, dat2, Time) + endif + + if (id_rv500 > 0) then + call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) + used = send_data (id_rv500, dat2, Time) + endif + + if (id_rv850 > 0 .or. id_vortmean > 0 ) then + call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) + if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) + if (id_vortmean > 0) then + call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) + call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) + used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) + endif + endif + if (id_zg10 > 0) then call get_height_given_pressure (isc, iec, jsc, jec, ngc, npz, wz, 1, (/id_zg10/), & (/log(10.e2)/), Atm(n)%peln, dat3) diff --git a/driver/GFDL/DIFF_atmosphere b/driver/GFDL/DIFF similarity index 55% rename from driver/GFDL/DIFF_atmosphere rename to driver/GFDL/DIFF index 714b6f603..942cf6d45 100644 --- a/driver/GFDL/DIFF_atmosphere +++ b/driver/GFDL/DIFF @@ -19,28 +19,49 @@ < !* License along with the FV3 dynamical core. < !* If not, see . < !*********************************************************************** -153c133,134 -< type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa +153,154c133,134 +< type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus +< integer :: nqv, nql, nqi, nqa --- > type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus > integer :: nqv, nql, nqi, nqa -362a344,349 +364,370c344,349 +< ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & +< 'Tendency of Air Temperature', 'K s-1', & +< standard_name='tendency_of_air_temperature') +< ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & +< 'Tendency of Specific Humidity', 's-1', & +< standard_name='tendency_of_specific_humidity') +< +--- > ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & > 'Tendency of Air Temperature', 'K s-1', & > standard_name='tendency_of_air_temperature') > ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & > 'Tendency of Specific Humidity', 's-1', & > standard_name='tendency_of_specific_humidity') -377c364,365 -< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) allocate(ttend(isc:iec, jsc:jec, 1:npz)) +385c364 +< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & --- > if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & -> allocate(ttend(isc:iec, jsc:jec, 1:npz)) -379c367 -< query_cmip_diag_id(ID_tnhusa) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) +388c367 +< query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) --- > query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) -381a370,381 +391,402c370,381 +< ! get tracer number for common moisture tracers +< nqv = get_tracer_index(MODEL_ATMOS,'sphum') +< nql = get_tracer_index(MODEL_ATMOS,'liq_wat') +< nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') +< nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') +< ! could zero out diagnostics if nXX = 0 +< if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & +< 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) +< if (nqv > size(qtend,4)) id_qdt_dyn = 0 +< if (nql > size(qtend,4)) id_qldt_dyn = 0 +< if (nqi > size(qtend,4)) id_qidt_dyn = 0 +< if (nqa > size(qtend,4)) id_qadt_dyn = 0 +--- > ! get tracer number for common moisture tracers > nqv = get_tracer_index(MODEL_ATMOS,'sphum') > nql = get_tracer_index(MODEL_ATMOS,'liq_wat') @@ -53,53 +74,35 @@ > if (nql > size(qtend,4)) id_qldt_dyn = 0 > if (nqi > size(qtend,4)) id_qidt_dyn = 0 > if (nqa > size(qtend,4)) id_qadt_dyn = 0 -409,411c409,411 -< Surf_diff%qdt_dyn(:,:,:) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1) + & -< Atm(mytile)%q (isc:iec, jsc:jec, :, 2) + & -< Atm(mytile)%q (isc:iec, jsc:jec, :, 3) ---- -> Surf_diff%qdt_dyn(:,:,:) = Atm(mytile)%q (isc:iec, jsc:jec, :, nqv) + & -> Atm(mytile)%q (isc:iec, jsc:jec, :, nql) + & -> Atm(mytile)%q (isc:iec, jsc:jec, :, nqi) -415c415,416 -< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) +436c415 +< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & --- > if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & -> ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) -417c418,419 -< query_cmip_diag_id(ID_tnhusa) ) qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, :) +439,440c418,419 +< query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & +< qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) --- > query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & > qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) -461,463c463,465 -< Surf_diff%qdt_dyn(:,:,:) =(Atm(mytile)%q (isc:iec,jsc:jec,:,1) + & -< Atm(mytile)%q (isc:iec,jsc:jec,:,2) + & -< Atm(mytile)%q (isc:iec,jsc:jec,:,3) - Surf_diff%qdt_dyn(:,:,:))/dt_atmos ---- -> Surf_diff%qdt_dyn(:,:,:) =(Atm(mytile)%q (isc:iec,jsc:jec,:,nqv) + & -> Atm(mytile)%q (isc:iec,jsc:jec,:,nql) + & -> Atm(mytile)%q (isc:iec,jsc:jec,:,nqi) - Surf_diff%qdt_dyn(:,:,:))/dt_atmos -466,481c468,469 +489,502c468,469 < if ( id_udt_dyn>0 ) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) < if ( id_vdt_dyn>0 ) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) -< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) then -< ttend = (Atm(mytile)%pt(isc:iec, jsc:jec, :) - ttend(:, :, : ))/dt_atmos -< if (id_tdt_dyn>0) used = send_data(id_tdt_dyn, ttend(:,:,:), Time) -< if (query_cmip_diag_id(ID_tnta)) used = send_cmip_data_3d (ID_tnta, ttend(:,:,:), Time) -< endif +< if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) +< if (query_cmip_diag_id(ID_tnta)) & +< used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) +< +< if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) +< if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) +< if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) +< if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) +< if (query_cmip_diag_id(ID_tnhusa)) & +< used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) +< < -< if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. query_cmip_diag_id(ID_tnhusa) ) then -< qtend = (Atm(mytile)%q (isc:iec, jsc:jec, :, :)- qtend(:, :, :, :))/dt_atmos -< if (id_qdt_dyn > 0) used = send_data(id_qdt_dyn, qtend(:,:,:,1), Time) -< if (id_qldt_dyn > 0) used = send_data(id_qldt_dyn, qtend(:,:,:,2), Time) -< if (id_qidt_dyn > 0) used = send_data(id_qidt_dyn, qtend(:,:,:,3), Time) -< if (id_qadt_dyn > 0) used = send_data(id_qadt_dyn, qtend(:,:,:,4), Time) -< if (query_cmip_diag_id(ID_tnhusa)) used = send_cmip_data_3d (ID_tnhusa, qtend(:,:,:,1), Time) -< endif --- > if (id_udt_dyn > 0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) > if (id_vdt_dyn > 0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) -482a471,480 +503a471,480 > if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) > if (query_cmip_diag_id(ID_tnta)) & > used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) @@ -110,26 +113,24 @@ > if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) > if (query_cmip_diag_id(ID_tnhusa)) & > used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -736c734 -< z_bot(i,j) = rrg*t_bot(i,j)*(1.+zvir*Atm(mytile)%q(i,j,npz,1)) * & ---- -> z_bot(i,j) = rrg*t_bot(i,j)*(1.+zvir*Atm(mytile)%q(i,j,npz,nqv)) * & -822,824c820,822 -< wm(i,j) = wm(i,j) + Atm(mytile)%delp(i,j,k) * ( Atm(mytile)%q(i,j,k,1) + & -< Atm(mytile)%q(i,j,k,2) + & -< Atm(mytile)%q(i,j,k,3) ) +844,845c821,822 +< Atm(mytile)%q(i,j,k,nql) + & +< Atm(mytile)%q(i,j,k,nqi) ) --- -> wm(i,j) = wm(i,j) + Atm(mytile)%delp(i,j,k) * ( Atm(mytile)%q(i,j,k,nqv) + & > Atm(mytile)%q(i,j,k,nql) + & > Atm(mytile)%q(i,j,k,nqi) ) -932a931,936 -> !--- cmip6 total tendencies of temperature and specific humidity +955,959c932,935 +< if (query_cmip_diag_id(ID_tnt)) & +< used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) +< if (query_cmip_diag_id(ID_tnhus)) & +< used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) +< +--- > if (query_cmip_diag_id(ID_tnt)) & > used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) > if (query_cmip_diag_id(ID_tnhus)) & > used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -> -1170a1175,1177 +1198a1175,1177 > !++VAN > call compute_g_avg(Time, 'ch4', Radiation, Atm_block) > !--VAN diff --git a/driver/GFDL/atmosphere.F90 b/driver/GFDL/atmosphere.F90 index c36f5a543..3b555de1c 100644 --- a/driver/GFDL/atmosphere.F90 +++ b/driver/GFDL/atmosphere.F90 @@ -150,8 +150,8 @@ module atmosphere_mod real, allocatable :: qtend(:,:,:,:) real :: mv = -1.e10 !miz - type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus !:MKL December 30 2019 - integer :: nqv, nql, nqi, nqa !:MKL December 30 2019 + type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus + integer :: nqv, nql, nqi, nqa integer :: mytile = 1 integer :: p_split = 1 @@ -361,12 +361,12 @@ subroutine atmosphere_init (Time_init, Time, Time_step, Surf_diff, Grid_box) ID_tnhusa = register_cmip_diag_field_3d (mod_name, 'tnhusa', Time, & 'Tendency of Specific Humidity due to Advection', 's-1', & standard_name='tendency_of_specific_humidity_due_to_advection') - ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & !:MKL December 30 2019 - 'Tendency of Air Temperature', 'K s-1', & !:MKL December 30 2019 - standard_name='tendency_of_air_temperature') !:MKL December 30 2019 - ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & !:MKL December 30 2019 - 'Tendency of Specific Humidity', 's-1', & !:MKL December 30 2019 - standard_name='tendency_of_specific_humidity') !:MKL December 30 2019 + ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & + 'Tendency of Air Temperature', 'K s-1', & + standard_name='tendency_of_air_temperature') + ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & + 'Tendency of Specific Humidity', 's-1', & + standard_name='tendency_of_specific_humidity') !---allocate id_tracer_* @@ -382,24 +382,24 @@ subroutine atmosphere_init (Time_init, Time, Time_step, Surf_diff, Grid_box) endif enddo if (any(id_tracerdt_dyn(:)>0)) allocate(qtendyyf(isc:iec, jsc:jec,1:npz,num_tracers)) - if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & !:MKL December 30 2019 + if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & allocate(ttend(isc:iec, jsc:jec, 1:npz)) if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. & - query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) !:MKL December 30 2019 + query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) !miz -! get tracer number for common moisture tracers !:MKL December 30 2019 - nqv = get_tracer_index(MODEL_ATMOS,'sphum') !:MKL December 30 2019 - nql = get_tracer_index(MODEL_ATMOS,'liq_wat') !:MKL December 30 2019 - nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') !:MKL December 30 2019 - nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') !:MKL December 30 2019 -! could zero out diagnostics if nXX = 0 !:MKL December 30 2019 - if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & !:MKL December 30 2019 - 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) !:MKL December 30 2019 - if (nqv > size(qtend,4)) id_qdt_dyn = 0 !:MKL December 30 2019 - if (nql > size(qtend,4)) id_qldt_dyn = 0 !:MKL December 30 2019 - if (nqi > size(qtend,4)) id_qidt_dyn = 0 !:MKL December 30 2019 - if (nqa > size(qtend,4)) id_qadt_dyn = 0 !:MKL December 30 2019 +! get tracer number for common moisture tracers + nqv = get_tracer_index(MODEL_ATMOS,'sphum') + nql = get_tracer_index(MODEL_ATMOS,'liq_wat') + nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') + nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') +! could zero out diagnostics if nXX = 0 + if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & + 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) + if (nqv > size(qtend,4)) id_qdt_dyn = 0 + if (nql > size(qtend,4)) id_qldt_dyn = 0 + if (nqi > size(qtend,4)) id_qidt_dyn = 0 + if (nqa > size(qtend,4)) id_qadt_dyn = 0 ! --- initialize clocks for dynamics, physics_down and physics_up id_dynam = mpp_clock_id ('FV dy-core', flags = clock_flag_default, grain=CLOCK_SUBCOMPONENT ) id_subgridz = mpp_clock_id ('FV subgrid_z',flags = clock_flag_default, grain=CLOCK_SUBCOMPONENT ) @@ -433,12 +433,11 @@ subroutine atmosphere_dynamics ( Time, surf_diff ) #endif !miz[M d0 - if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & !:MKL December 30 2019 + if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. & - query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & !:MKL December 30 2019 - qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) !:MKL December 30 2019 - !:MKL qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, :) + query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & + qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) !miz do itrac = 1, num_tracers if (id_tracerdt_dyn (itrac) >0 ) & @@ -489,32 +488,18 @@ subroutine atmosphere_dynamics ( Time, surf_diff ) !miz if ( id_udt_dyn>0 ) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) if ( id_vdt_dyn>0 ) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) - if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) !:MKL December 30 2019 - if (query_cmip_diag_id(ID_tnta)) & !:MKL December 30 2019 - used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) !:MKL December 30 2019 - - !if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) ) then !:MKL December 30 2019 - ! ttend = (Atm(mytile)%pt(isc:iec, jsc:jec, :) - ttend(:, :, : ))/dt_atmos !:MKL December 30 2019 - ! if (id_tdt_dyn>0) used = send_data(id_tdt_dyn, ttend(:,:,:), Time) !:MKL December 30 2019 - ! if (query_cmip_diag_id(ID_tnta)) used = send_cmip_data_3d (ID_tnta, ttend(:,:,:), Time) !:MKL December 30 2019 - !endif - - if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) !:MKL December 30 2019 - if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) !:MKL December 30 2019 - if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) !:MKL December 30 2019 - if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) !:MKL December 30 2019 - if (query_cmip_diag_id(ID_tnhusa)) & !:MKL December 30 2019 - used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) !:MKL December 30 2019 - - - !if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. query_cmip_diag_id(ID_tnhusa) ) then !:MKL December 30 2019 - ! ttend = (Atm(mytile)%q (isc:iec, jsc:jec, :, :)- qtend(:, :, :, :))/dt_atmos !:MKL December 30 2019 - ! if (id_qdt_dyn > 0) used = send_data(id_qdt_dyn, qtend(:,:,:,1), Time) !:MKL December 30 2019 - ! if (id_qldt_dyn > 0) used = send_data(id_qldt_dyn, qtend(:,:,:,2), Time) !:MKL December 30 2019 - ! if (id_qidt_dyn > 0) used = send_data(id_qidt_dyn, qtend(:,:,:,3), Time) !:MKL December 30 2019 - ! if (id_qadt_dyn > 0) used = send_data(id_qadt_dyn, qtend(:,:,:,4), Time) !:MKL December 30 2019 - ! if (query_cmip_diag_id(ID_tnhusa)) used = send_cmip_data_3d (ID_tnhusa, qtend(:,:,:,1), Time) !:MKL December 30 2019 - ! endif + if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) + if (query_cmip_diag_id(ID_tnta)) & + used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) + + if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) + if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) + if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) + if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) + if (query_cmip_diag_id(ID_tnhusa)) & + used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) + + !miz do itrac = 1, num_tracers @@ -967,10 +952,10 @@ subroutine atmosphere_state_update (Time, Physics_tendency, Physics, Atm_block) endif !--- cmip6 total tendencies of temperature and specific humidity - if (query_cmip_diag_id(ID_tnt)) & !:MKL December 30 2019 - used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) !:MKL December 30 2019 - if (query_cmip_diag_id(ID_tnhus)) & !:MKL December 30 2019 - used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) !:MKL December 30 2019 + if (query_cmip_diag_id(ID_tnt)) & + used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) + if (query_cmip_diag_id(ID_tnhus)) & + used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) #if !defined(ATMOS_NUDGE) && !defined(CLIMATE_NUDGE) && !defined(ADA_NUDGE) @@ -1211,6 +1196,7 @@ subroutine atmos_radiation_driver_inputs (Time, Radiation, Atm_block) ! phase due to the way in which MPI interacts with nested OpenMP !---------------------------------------------------------------------- call compute_g_avg(Time, 'co2', Radiation, Atm_block) + call compute_g_avg(Time, 'ch4', Radiation, Atm_block) end subroutine atmos_radiation_driver_inputs diff --git a/model/fv_arrays.F90 b/model/fv_arrays.F90 index 77e122ab5..b4cb09388 100644 --- a/model/fv_arrays.F90 +++ b/model/fv_arrays.F90 @@ -56,7 +56,12 @@ module fv_arrays_mod id_delp, id_delz, id_zratio, id_ws, id_iw, id_lw, & id_pfhy, id_pfnh, & id_qn, id_qn200, id_qn500, id_qn850, id_qp, id_mdt, id_qdt, id_aam, id_amdt, & - id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km + id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km, & + id_uq, id_vq, id_wq, id_iuq, id_ivq, id_iwq, & ! moisture flux & vertical integral + id_ut, id_vt, id_wt, id_iut, id_ivt, id_iwt, & ! heat flux + id_uu, id_uv, id_uw, id_vv, id_vw, id_ww, & ! momentum flux + id_iuu, id_iuv, id_iuw, id_ivv, id_ivw, id_iww ! vertically integral of momentum flux + ! Selected p-level fields from 3D variables: integer :: id_vort200, id_vort500, id_w500, id_w700 diff --git a/tools/ALLDIFF b/tools/ALLDIFF new file mode 100644 index 000000000..a6241b2a8 --- /dev/null +++ b/tools/ALLDIFF @@ -0,0 +1,1125 @@ +-----------------------external_ic.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +2201c2200 +< call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) +--- +> call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1./grav) +2234c2233 +< ! gzc is height +--- +> ! gzc is geopotential +2237c2236 +< gz(km+1) = gzc(i,j)*grav +--- +> gz(km+1) = gzc(i,j) +-----------------------external_sst.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_diagnostics.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +31c30 +< diag_field_add_attribute +--- +> diag_field_add_attribute +82c81 +< public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity +--- +> public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity +159c158 +< trange = (/ 100., 400. /) ! temperature +--- +> trange = (/ 100., 400. /) ! temperature +293,296c292,294 +< if (id_area > 0) then +< call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') +< endif +< +--- +> if (id_area > 0) then +> call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') +> endif +299c297 +< 'surface height', 'm', interp_method='conserve_order1' ) +--- +> 'surface height', 'm', interp_method='conserve_order1' ) +436c434 +< 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) +--- +> 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) +494c492 +< idiag%id_hght = 1 +--- +> idiag%id_hght = 1 +496c494 +< idiag%id_hght = 0 +--- +> idiag%id_hght = 0 +502c500 +< 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) +--- +> 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) +589a588 +> +725c724 +< '850-mb vorticity', '1/s', missing_value=missing_value ) +--- +> '850-mb vorticity', '1/s', missing_value=missing_value) +732a732 +> +777a778 +> +1007c1008 +< real, allocatable :: a2(:,:),a3(:,:,:),a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) +--- +> real, allocatable :: a2(:,:),a3(:,:,:), a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) +2276,2277c2277 +< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & +< & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then +--- +> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS +2318,2320c2318,2320 +< call interpolate_vertical(isc, iec, jsc, jec, npz, & +< 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) +< used=send_data(idiag%id_w200, a2, Time) +--- +> call interpolate_vertical(isc, iec, jsc, jec, npz, & +> 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) +> used=send_data(idiag%id_w200, a2, Time) +2322c2322 +< ! 250-mb +--- +> ! 250-mb +2349c2349 +< if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km.ne.0)) then +--- +> if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km .ne. 0 )) then +2495,2497c2495,2497 +< x850(:,:) = x850(:,:)*a2(:,:) +< used=send_data(idiag%id_x850, x850, Time) +< deallocate ( x850 ) +--- +> x850(:,:) = x850(:,:)*a2(:,:) +> used=send_data(idiag%id_x850, x850, Time) +> deallocate ( x850 ) +2568c2568 +< call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/),& +--- +> call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/), & +2674,2865c2674,2864 +< allocate ( a4(isc:iec,jsc:jec,npz) ) +< +< ! zonal moisture flux +< if(idiag%id_uq > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uq, a4, Time) +< if(idiag%id_iuq > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuq, a2, Time) +< endif +< endif +< ! meridional moisture flux +< if(idiag%id_vq > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vq, a4, Time) +< if(idiag%id_ivq > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivq, a2, Time) +< endif +< endif +< +< ! zonal heat flux +< if(idiag%id_ut > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_ut, a4, Time) +< if(idiag%id_iut > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iut, a2, Time) +< endif +< endif +< ! meridional heat flux +< if(idiag%id_vt > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vt, a4, Time) +< if(idiag%id_ivt > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivt, a2, Time) +< endif +< endif +< +< ! zonal flux of u +< if(idiag%id_uu > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uu, a4, Time) +< if(idiag%id_iuu > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuu, a2, Time) +< endif +< endif +< ! zonal flux of v +< if(idiag%id_uv > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uv, a4, Time) +< if(idiag%id_iuv > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuv, a2, Time) +< endif +< endif +< ! meridional flux of v +< if(idiag%id_vv > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vv, a4, Time) +< if(idiag%id_ivv > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivv, a2, Time) +< endif +< endif +< +< ! terms related with vertical wind ( Atm(n)%w ): +< if(.not.Atm(n)%flagstruct%hydrostatic) then +< ! vertical moisture flux +< if(idiag%id_wq > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_wq, a4, Time) +< if(idiag%id_iwq > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iwq, a2, Time) +< endif +< endif +< ! vertical heat flux +< if(idiag%id_wt > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_wt, a4, Time) +< if(idiag%id_iwt > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iwt, a2, Time) +< endif +< endif +< ! zonal flux of w +< if(idiag%id_uw > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uw, a4, Time) +< if(idiag%id_iuw > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuw, a2, Time) +< endif +< endif +< ! meridional flux of w +< if(idiag%id_vw > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vw, a4, Time) +< if(idiag%id_ivw > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivw, a2, Time) +< endif +< endif +< ! vertical flux of w +< if(idiag%id_ww > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_ww, a4, Time) +< if(idiag%id_iww > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iww, a2, Time) +< endif +< endif +< endif +< +< deallocate ( a4 ) +< +< +--- +> allocate ( a4(isc:iec,jsc:jec,npz) ) +> +> ! zonal moisture flux +> if(idiag%id_uq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uq, a4, Time) +> if(idiag%id_iuq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuq, a2, Time) +> endif +> endif +> ! meridional moisture flux +> if(idiag%id_vq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vq, a4, Time) +> if(idiag%id_ivq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivq, a2, Time) +> endif +> endif +> +> ! zonal heat flux +> if(idiag%id_ut > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_ut, a4, Time) +> if(idiag%id_iut > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iut, a2, Time) +> endif +> endif +> ! meridional heat flux +> if(idiag%id_vt > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vt, a4, Time) +> if(idiag%id_ivt > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivt, a2, Time) +> endif +> endif +> +> ! zonal flux of u +> if(idiag%id_uu > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uu, a4, Time) +> if(idiag%id_iuu > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuu, a2, Time) +> endif +> endif +> ! zonal flux of v +> if(idiag%id_uv > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uv, a4, Time) +> if(idiag%id_iuv > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuv, a2, Time) +> endif +> endif +> ! meridional flux of v +> if(idiag%id_vv > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vv, a4, Time) +> if(idiag%id_ivv > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivv, a2, Time) +> endif +> endif +> +> ! terms related with vertical wind ( Atm(n)%w ): +> if(.not.Atm(n)%flagstruct%hydrostatic) then +> ! vertical moisture flux +> if(idiag%id_wq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_wq, a4, Time) +> if(idiag%id_iwq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iwq, a2, Time) +> endif +> endif +> ! vertical heat flux +> if(idiag%id_wt > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_wt, a4, Time) +> if(idiag%id_iwt > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iwt, a2, Time) +> endif +> endif +> ! zonal flux of w +> if(idiag%id_uw > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uw, a4, Time) +> if(idiag%id_iuw > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuw, a2, Time) +> endif +> endif +> ! meridional flux of w +> if(idiag%id_vw > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vw, a4, Time) +> if(idiag%id_ivw > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivw, a2, Time) +> endif +> endif +> ! vertical flux of w +> if(idiag%id_ww > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_ww, a4, Time) +> if(idiag%id_iww > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iww, a2, Time) +> endif +> endif +> endif +> +> deallocate ( a4 ) +> +-----------------------fv_eta.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +674c673 +< data a49/ & +--- +> data a49/ & +1583c1582 +< real:: k_inc = 10 ! # of layers from bottom up to near const dz region +--- +> integer:: k_inc = 10 ! # of layers from bottom up to near const dz region +-----------------------fv_grid_tools.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_io.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_mp_mod.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nggps_diag.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nudge.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_restart.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_surf_map.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +480c479 +< real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) +--- +> real, intent(IN):: sin_sg(isd:ied,jsd:jed,9) +548c547 +< real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) +--- +> real, intent(in):: sin_sg(bd%isd:bd%ied,bd%jsd:bd%jed,9) +696c695 +< ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) +--- +> ddx(i,j) = 0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) +699c698 +< ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) +--- +> ddx(i,j) = fac*0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) +757c756 +< ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) +--- +> ddy(i,j) = 0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) +760c759 +< ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) +--- +> ddy(i,j) = fac*0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) +-----------------------fv_timing.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------init_hydro.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sim_nc_mod.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sorted_index.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------test_cases.F90----------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/tools/DIFF_FV_DIAGONISTCS b/tools/DIFF_FV_DIAGONISTCS deleted file mode 100644 index 3146fd748..000000000 --- a/tools/DIFF_FV_DIAGONISTCS +++ /dev/null @@ -1,394 +0,0 @@ -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -30c29,30 -< register_static_field, send_data, diag_grid_init ---- -> register_static_field, send_data, diag_grid_init, & -> diag_field_add_attribute -81c81 -< public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity !:MKL December 27 2019 ---- -> public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity -152c152 -< vrange = (/ -330., 330. /) ! winds ---- -> vrange = (/ -300., 300. /) ! winds -158c158 -< trange = (/ 100., 350. /) ! temperature ---- -> trange = (/ 100., 400. /) ! temperature -291a292,294 -> if (id_area > 0) then -> call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') -> endif -294c297 -< 'surface height', 'm' ) ---- -> 'surface height', 'm', interp_method='conserve_order1' ) -425c428 -< 'surface height', 'm') ---- -> 'surface height', 'm', interp_method='conserve_order1') -431c434 -< 'surface pressure', 'Pa', missing_value=missing_value ) ---- -> 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) -487,488c490,492 -< all(idiag%id_h(minloc(abs(levs-850)))>0) .or. all(idiag%id_h(minloc(abs(levs-1000)))>0) ) then -< idiag%id_hght = 1 ---- -> all(idiag%id_h(minloc(abs(levs-850)))>0) .or. all(idiag%id_h(minloc(abs(levs-925)))>0) .or. & -> all(idiag%id_h(minloc(abs(levs-1000)))>0) ) then -> idiag%id_hght = 1 -490c494 -< idiag%id_hght = 0 ---- -> idiag%id_hght = 0 -496c500 -< 'mean 300-500 mb temp', 'K', missing_value=missing_value ) ---- -> 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) -583a588,654 -> -> !-------------------- -> ! 3D flux terms -> !-------------------- -> idiag%id_uq = register_diag_field ( trim(field), 'uq', axes(1:3), Time, & -> 'zonal moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) -> idiag%id_vq = register_diag_field ( trim(field), 'vq', axes(1:3), Time, & -> 'meridional moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) -> -> idiag%id_ut = register_diag_field ( trim(field), 'ut', axes(1:3), Time, & -> 'zonal heat flux', 'K*m/sec', missing_value=missing_value ) -> idiag%id_vt = register_diag_field ( trim(field), 'vt', axes(1:3), Time, & -> 'meridional heat flux', 'K*m/sec', missing_value=missing_value ) -> -> idiag%id_uu = register_diag_field ( trim(field), 'uu', axes(1:3), Time, & -> 'zonal flux of zonal wind', '(m/sec)^2', missing_value=missing_value ) -> idiag%id_uv = register_diag_field ( trim(field), 'uv', axes(1:3), Time, & -> 'zonal flux of meridional wind', '(m/sec)^2', missing_value=missing_value ) -> idiag%id_vv = register_diag_field ( trim(field), 'vv', axes(1:3), Time, & -> 'meridional flux of meridional wind', '(m/sec)^2', missing_value=missing_value ) -> -> if(.not.Atm(n)%flagstruct%hydrostatic) then -> idiag%id_wq = register_diag_field ( trim(field), 'wq', axes(1:3), Time, & -> 'vertical moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) -> idiag%id_wt = register_diag_field ( trim(field), 'wt', axes(1:3), Time, & -> 'vertical heat flux', 'K*m/sec', missing_value=missing_value ) -> idiag%id_uw = register_diag_field ( trim(field), 'uw', axes(1:3), Time, & -> 'zonal flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) -> idiag%id_vw = register_diag_field ( trim(field), 'vw', axes(1:3), Time, & -> 'meridional flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) -> idiag%id_ww = register_diag_field ( trim(field), 'ww', axes(1:3), Time, & -> 'vertical flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) -> endif -> -> !-------------------- -> ! vertical integral of 3D flux terms -> !-------------------- -> idiag%id_iuq = register_diag_field ( trim(field), 'uq_vi', axes(1:2), Time, & -> 'vertical integral of uq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) -> idiag%id_ivq = register_diag_field ( trim(field), 'vq_vi', axes(1:2), Time, & -> 'vertical integral of vq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) -> -> idiag%id_iut = register_diag_field ( trim(field), 'ut_vi', axes(1:2), Time, & -> 'vertical integral of ut', 'K*m/sec*Pa', missing_value=missing_value ) -> idiag%id_ivt = register_diag_field ( trim(field), 'vt_vi', axes(1:2), Time, & -> 'vertical integral of vt', 'K*m/sec*Pa', missing_value=missing_value ) -> -> idiag%id_iuu = register_diag_field ( trim(field), 'uu_vi', axes(1:2), Time, & -> 'vertical integral of uu', '(m/sec)^2*Pa', missing_value=missing_value ) -> idiag%id_iuv = register_diag_field ( trim(field), 'uv_vi', axes(1:2), Time, & -> 'vertical integral of uv', '(m/sec)^2*Pa', missing_value=missing_value ) -> idiag%id_ivv = register_diag_field ( trim(field), 'vv_vi', axes(1:2), Time, & -> 'vertical integral of vv', '(m/sec)^2*Pa', missing_value=missing_value ) -> -> if(.not.Atm(n)%flagstruct%hydrostatic) then -> idiag%id_iwq = register_diag_field ( trim(field), 'wq_vi', axes(1:2), Time, & -> 'vertical integral of wq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) -> idiag%id_iwt = register_diag_field ( trim(field), 'wt_vi', axes(1:2), Time, & -> 'vertical integral of wt', 'K*m/sec*Pa', missing_value=missing_value ) -> idiag%id_iuw = register_diag_field ( trim(field), 'uw_vi', axes(1:2), Time, & -> 'vertical integral of uw', '(m/sec)^2*Pa', missing_value=missing_value ) -> idiag%id_ivw = register_diag_field ( trim(field), 'vw_vi', axes(1:2), Time, & -> 'vertical integral of vw', '(m/sec)^2*Pa', missing_value=missing_value ) -> idiag%id_iww = register_diag_field ( trim(field), 'ww_vi', axes(1:2), Time, & -> 'vertical integral of ww', '(m/sec)^2*Pa', missing_value=missing_value ) -> endif -> -653c724 -< '850-mb vorticity', '1/s', missing_value=missing_value ) ---- -> '850-mb vorticity', '1/s', missing_value=missing_value) -661a733,738 -> !-------------------------- -> ! 200-mb winds: -> !-------------------------- -> idiag%id_w200 = register_diag_field ( trim(field), 'w200', axes(1:2), Time, & -> '200-mb w-wind', '1/s', missing_value=missing_value ) -> ! s200: wind speed for computing KE spectrum -701a779,783 -> !-------------------------- -> ! 850-mb winds: -> !-------------------------- -> idiag%id_w850 = register_diag_field ( trim(field), 'w850', axes(1:2), Time, & -> '850-mb w-wind', '1/s', missing_value=missing_value ) -926c1008 -< real, allocatable :: a2(:,:),a3(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) ---- -> real, allocatable :: a2(:,:),a3(:,:,:), a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) -2195,2196c2277 -< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & -< & .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km>0) then ---- -> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS -2235a2317,2322 -> if ( idiag%id_w200>0 ) then -> call interpolate_vertical(isc, iec, jsc, jec, npz, & -> 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) -> used=send_data(idiag%id_w200, a2, Time) -> endif -> ! 250-mb -2262c2349 -< if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km>0)) then ---- -> if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km .ne. 0 )) then -2406a2494,2498 -> if ( idiag%id_x850>0 .and. idiag%id_vort850>0 ) then -> x850(:,:) = x850(:,:)*a2(:,:) -> used=send_data(idiag%id_x850, x850, Time) -> deallocate ( x850 ) -> endif -2476c2568 -< call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/),& ---- -> call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/), & -2578a2671,2782 -> !---------------------------------- -> ! compute 3D flux terms -> !---------------------------------- -> allocate ( a4(isc:iec,jsc:jec,npz) ) -> -> ! zonal moisture flux -> if(idiag%id_uq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uq, a4, Time) -> if(idiag%id_iuq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuq, a2, Time) -> endif -> endif -> ! meridional moisture flux -> if(idiag%id_vq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vq, a4, Time) -> if(idiag%id_ivq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivq, a2, Time) -> endif -> endif -> -> ! zonal heat flux -> if(idiag%id_ut > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_ut, a4, Time) -> if(idiag%id_iut > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iut, a2, Time) -> endif -> endif -> ! meridional heat flux -> if(idiag%id_vt > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vt, a4, Time) -> if(idiag%id_ivt > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivt, a2, Time) -> endif -> endif -> -> ! zonal flux of u -> if(idiag%id_uu > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uu, a4, Time) -> if(idiag%id_iuu > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuu, a2, Time) -> endif -> endif -> ! zonal flux of v -> if(idiag%id_uv > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uv, a4, Time) -> if(idiag%id_iuv > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuv, a2, Time) -> endif -> endif -> ! meridional flux of v -> if(idiag%id_vv > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vv, a4, Time) -> if(idiag%id_ivv > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivv, a2, Time) -> endif -> endif -2579a2784,2861 -> ! terms related with vertical wind ( Atm(n)%w ): -> if(.not.Atm(n)%flagstruct%hydrostatic) then -> ! vertical moisture flux -> if(idiag%id_wq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_wq, a4, Time) -> if(idiag%id_iwq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iwq, a2, Time) -> endif -> endif -> ! vertical heat flux -> if(idiag%id_wt > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_wt, a4, Time) -> if(idiag%id_iwt > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iwt, a2, Time) -> endif -> endif -> ! zonal flux of w -> if(idiag%id_uw > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uw, a4, Time) -> if(idiag%id_iuw > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuw, a2, Time) -> endif -> endif -> ! meridional flux of w -> if(idiag%id_vw > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vw, a4, Time) -> if(idiag%id_ivw > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivw, a2, Time) -> endif -> endif -> ! vertical flux of w -> if(idiag%id_ww > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_ww, a4, Time) -> if(idiag%id_iww > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iww, a2, Time) -> endif -> endif -> endif -2580a2863 -> deallocate ( a4 ) diff --git a/tools/fv_diagnostics.F90 b/tools/fv_diagnostics.F90 index a6d8ffa68..e3b573b1b 100644 --- a/tools/fv_diagnostics.F90 +++ b/tools/fv_diagnostics.F90 @@ -28,7 +28,7 @@ module fv_diagnostics_mod use mpp_domains_mod, only: domain2d, mpp_update_domains, DGRID_NE use diag_manager_mod, only: diag_axis_init, register_diag_field, & register_static_field, send_data, diag_grid_init, & - diag_field_add_attribute !:MKL December 27 2019 + diag_field_add_attribute use fv_arrays_mod, only: fv_atmos_type, fv_grid_type, fv_diag_type, fv_grid_bounds_type, & R_GRID !!! CLEANUP needs rem oval? @@ -79,7 +79,7 @@ module fv_diagnostics_mod public :: fv_diag_init, fv_time, fv_diag, prt_mxm, prt_maxmin, range_check!, id_divg, id_te public :: prt_mass, prt_minmax, ppme, fv_diag_init_gn, z_sum, sphum_ll_fix, eqv_pot, qcly0, gn - public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity !:MKL December 27 2019 + public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity integer, parameter :: nplev = 31 integer :: levs(nplev) @@ -150,14 +150,13 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) vsrange = (/ -200., 200. /) ! surface (lowest layer) winds - !:MKL vrange = (/ -330., 330. /) ! winds vrange = (/ -300., 300. /) ! winds wrange = (/ -100., 100. /) ! vertical wind rhrange = (/ -10., 150. /) ! RH #ifdef HIWPP trange = (/ 5., 350. /) ! temperature #else - trange = (/ 100., 400. /) ! temperature !:MKL December 27 2019 changed from 450 to 400 + trange = (/ 100., 400. /) ! temperature #endif slprange = (/800., 1200./) ! sea-level-pressure @@ -291,13 +290,13 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) 'latitude', 'degrees_N' ) id_area = register_static_field ( trim(field), 'area', axes(1:2), & 'cell area', 'm**2' ) - if (id_area > 0) then !:MKL December 27 2019 - call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') !:MKL December 27 2019 - endif !:MKL December 27 2019 + if (id_area > 0) then + call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') + endif #ifndef DYNAMICS_ZS idiag%id_zsurf = register_static_field ( trim(field), 'zsurf', axes(1:2), & - 'surface height', 'm', interp_method='conserve_order1' ) !:MKL December 27 2019 + 'surface height', 'm', interp_method='conserve_order1' ) #endif idiag%id_zs = register_static_field ( trim(field), 'zs', axes(1:2), & 'Original Mean Terrain', 'm' ) @@ -428,13 +427,13 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) #ifdef DYNAMICS_ZS idiag%id_zsurf = register_diag_field ( trim(field), 'zsurf', axes(1:2), Time, & - 'surface height', 'm') + 'surface height', 'm', interp_method='conserve_order1') #endif !------------------- ! Surface pressure !------------------- idiag%id_ps = register_diag_field ( trim(field), 'ps', axes(1:2), Time, & - 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) !:MKL December 27 2019 + 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) !------------------- ! Mountain torque @@ -490,7 +489,8 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) all(idiag%id_h(minloc(abs(levs-100)))>0) .or. all(idiag%id_h(minloc(abs(levs-200)))>0) .or. & all(idiag%id_h(minloc(abs(levs-250)))>0) .or. all(idiag%id_h(minloc(abs(levs-300)))>0) .or. & all(idiag%id_h(minloc(abs(levs-500)))>0) .or. all(idiag%id_h(minloc(abs(levs-700)))>0) .or. & - all(idiag%id_h(minloc(abs(levs-850)))>0) .or. all(idiag%id_h(minloc(abs(levs-1000)))>0) ) then + all(idiag%id_h(minloc(abs(levs-850)))>0) .or. all(idiag%id_h(minloc(abs(levs-925)))>0) .or. & + all(idiag%id_h(minloc(abs(levs-1000)))>0) ) then idiag%id_hght = 1 else idiag%id_hght = 0 @@ -499,7 +499,7 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) ! mean temp between 300-500 mb !----------------------------- idiag%id_tm = register_diag_field (trim(field), 'tm', axes(1:2), Time, & - 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) !:MKL December 27 2019 + 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) !------------------- ! Sea-level-pressure @@ -588,6 +588,72 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) idiag%id_ws = register_diag_field ( trim(field), 'ws', axes(1:2), Time, & 'Terrain W', 'm/s', missing_value=missing_value ) !-------------------- +! 3D flux terms +!-------------------- + idiag%id_uq = register_diag_field ( trim(field), 'uq', axes(1:3), Time, & + 'zonal moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) + idiag%id_vq = register_diag_field ( trim(field), 'vq', axes(1:3), Time, & + 'meridional moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) + + idiag%id_ut = register_diag_field ( trim(field), 'ut', axes(1:3), Time, & + 'zonal heat flux', 'K*m/sec', missing_value=missing_value ) + idiag%id_vt = register_diag_field ( trim(field), 'vt', axes(1:3), Time, & + 'meridional heat flux', 'K*m/sec', missing_value=missing_value ) + + idiag%id_uu = register_diag_field ( trim(field), 'uu', axes(1:3), Time, & + 'zonal flux of zonal wind', '(m/sec)^2', missing_value=missing_value ) + idiag%id_uv = register_diag_field ( trim(field), 'uv', axes(1:3), Time, & + 'zonal flux of meridional wind', '(m/sec)^2', missing_value=missing_value ) + idiag%id_vv = register_diag_field ( trim(field), 'vv', axes(1:3), Time, & + 'meridional flux of meridional wind', '(m/sec)^2', missing_value=missing_value ) + + if(.not.Atm(n)%flagstruct%hydrostatic) then + idiag%id_wq = register_diag_field ( trim(field), 'wq', axes(1:3), Time, & + 'vertical moisture flux', 'Kg/Kg*m/sec', missing_value=missing_value ) + idiag%id_wt = register_diag_field ( trim(field), 'wt', axes(1:3), Time, & + 'vertical heat flux', 'K*m/sec', missing_value=missing_value ) + idiag%id_uw = register_diag_field ( trim(field), 'uw', axes(1:3), Time, & + 'zonal flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) + idiag%id_vw = register_diag_field ( trim(field), 'vw', axes(1:3), Time, & + 'meridional flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) + idiag%id_ww = register_diag_field ( trim(field), 'ww', axes(1:3), Time, & + 'vertical flux of vertical wind', '(m/sec)^2', missing_value=missing_value ) + endif + +!-------------------- +! vertical integral of 3D flux terms +!-------------------- + idiag%id_iuq = register_diag_field ( trim(field), 'uq_vi', axes(1:2), Time, & + 'vertical integral of uq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) + idiag%id_ivq = register_diag_field ( trim(field), 'vq_vi', axes(1:2), Time, & + 'vertical integral of vq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) + + idiag%id_iut = register_diag_field ( trim(field), 'ut_vi', axes(1:2), Time, & + 'vertical integral of ut', 'K*m/sec*Pa', missing_value=missing_value ) + idiag%id_ivt = register_diag_field ( trim(field), 'vt_vi', axes(1:2), Time, & + 'vertical integral of vt', 'K*m/sec*Pa', missing_value=missing_value ) + + idiag%id_iuu = register_diag_field ( trim(field), 'uu_vi', axes(1:2), Time, & + 'vertical integral of uu', '(m/sec)^2*Pa', missing_value=missing_value ) + idiag%id_iuv = register_diag_field ( trim(field), 'uv_vi', axes(1:2), Time, & + 'vertical integral of uv', '(m/sec)^2*Pa', missing_value=missing_value ) + idiag%id_ivv = register_diag_field ( trim(field), 'vv_vi', axes(1:2), Time, & + 'vertical integral of vv', '(m/sec)^2*Pa', missing_value=missing_value ) + + if(.not.Atm(n)%flagstruct%hydrostatic) then + idiag%id_iwq = register_diag_field ( trim(field), 'wq_vi', axes(1:2), Time, & + 'vertical integral of wq', 'Kg/Kg*m/sec*Pa', missing_value=missing_value ) + idiag%id_iwt = register_diag_field ( trim(field), 'wt_vi', axes(1:2), Time, & + 'vertical integral of wt', 'K*m/sec*Pa', missing_value=missing_value ) + idiag%id_iuw = register_diag_field ( trim(field), 'uw_vi', axes(1:2), Time, & + 'vertical integral of uw', '(m/sec)^2*Pa', missing_value=missing_value ) + idiag%id_ivw = register_diag_field ( trim(field), 'vw_vi', axes(1:2), Time, & + 'vertical integral of vw', '(m/sec)^2*Pa', missing_value=missing_value ) + idiag%id_iww = register_diag_field ( trim(field), 'ww_vi', axes(1:2), Time, & + 'vertical integral of ww', '(m/sec)^2*Pa', missing_value=missing_value ) + endif + +!-------------------- ! 3D Condensate !-------------------- idiag%id_qn = register_diag_field ( trim(field), 'qn', axes(1:3), Time, & @@ -664,7 +730,12 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) idiag%id_vort200 = register_diag_field ( trim(field), 'vort200', axes(1:2), Time, & '200-mb vorticity', '1/s', missing_value=missing_value ) - +!-------------------------- +! 200-mb winds: +!-------------------------- + idiag%id_w200 = register_diag_field ( trim(field), 'w200', axes(1:2), Time, & + '200-mb w-wind', '1/s', missing_value=missing_value ) +! s200: wind speed for computing KE spectrum ! Cubed_2_latlon interpolation is more accurate, particularly near the poles, using ! winds speed (a scalar), rather than wind vectors or kinetic energy directly. idiag%id_s200 = register_diag_field ( trim(field), 's200', axes(1:2), Time, & @@ -704,7 +775,11 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) idiag%id_w2500m = register_diag_field ( trim(field), 'w2500m', axes(1:2), Time, & '2.5-km AGL w-wind', 'm/s', missing_value=missing_value ) endif - +!-------------------------- +! 850-mb winds: +!-------------------------- + idiag%id_w850 = register_diag_field ( trim(field), 'w850', axes(1:2), Time, & + '850-mb w-wind', '1/s', missing_value=missing_value ) ! helicity idiag%id_x850 = register_diag_field ( trim(field), 'x850', axes(1:2), Time, & '850-mb vertical comp. of helicity', 'm/s**2', missing_value=missing_value ) @@ -929,7 +1004,7 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) integer :: isd, ied, jsd, jed, npz, itrac integer :: ngc, nwater - real, allocatable :: a2(:,:),a3(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) + real, allocatable :: a2(:,:),a3(:,:,:),a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) real, allocatable :: slp(:,:), depress(:,:), ws_max(:,:), tc_count(:,:) real, allocatable :: u2(:,:), v2(:,:), x850(:,:), var1(:,:), var2(:,:), var3(:,:) real, allocatable :: dmmr(:,:,:), dvmr(:,:,:) @@ -2199,7 +2274,7 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) endif if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & - & .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km>0) then + & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then if (.not.allocated(wz)) allocate ( wz(isc:iec,jsc:jec,npz+1) ) if ( Atm(n)%flagstruct%hydrostatic) then rgrav = 1. / grav @@ -2239,6 +2314,12 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) used=send_data(idiag%id_rain5km, a2, Time) if(prt_minmax) call prt_maxmin('rain5km', a2, isc, iec, jsc, jec, 0, 1, 1.) endif + if ( idiag%id_w200>0 ) then + call interpolate_vertical(isc, iec, jsc, jec, npz, & + 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) + used=send_data(idiag%id_w200, a2, Time) + endif + ! 250-mb if ( idiag%id_w5km>0 ) then call interpolate_z(isc, iec, jsc, jec, npz, 5.e3, wz, Atm(n)%w(isc:iec,jsc:jec,:), a2) used=send_data(idiag%id_w5km, a2, Time) @@ -2265,7 +2346,7 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) if(prt_minmax) call prt_maxmin('v100m', a2, isc, iec, jsc, jec, 0, 1, 1.) endif - if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km>0)) then + if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km.ne.0)) then if (.not. allocated(a3)) allocate(a3(isc:iec,jsc:jec,npz)) @@ -2410,6 +2491,11 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) pout, wz, Atm(n)%pe(isc:iec,1:npz+1,jsc:jec), id1, a3, -1) used=send_data(idiag%id_omg_plev, a3(isc:iec,jsc:jec,:), Time) endif + if ( idiag%id_x850>0 .and. idiag%id_vort850>0 ) then + x850(:,:) = x850(:,:)*a2(:,:) + used=send_data(idiag%id_x850, x850, Time) + deallocate ( x850 ) + endif if( allocated(a3) ) deallocate (a3) ! *** End cs_intp @@ -2582,9 +2668,201 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) endif endif enddo - - - +!---------------------------------- +! compute 3D flux terms +!---------------------------------- + allocate ( a4(isc:iec,jsc:jec,npz) ) + + ! zonal moisture flux + if(idiag%id_uq > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) + enddo + enddo + enddo + used=send_data(idiag%id_uq, a4, Time) + if(idiag%id_iuq > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iuq, a2, Time) + endif + endif + ! meridional moisture flux + if(idiag%id_vq > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) + enddo + enddo + enddo + used=send_data(idiag%id_vq, a4, Time) + if(idiag%id_ivq > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_ivq, a2, Time) + endif + endif + + ! zonal heat flux + if(idiag%id_ut > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_ut, a4, Time) + if(idiag%id_iut > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iut, a2, Time) + endif + endif + ! meridional heat flux + if(idiag%id_vt > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_vt, a4, Time) + if(idiag%id_ivt > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_ivt, a2, Time) + endif + endif + + ! zonal flux of u + if(idiag%id_uu > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_uu, a4, Time) + if(idiag%id_iuu > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iuu, a2, Time) + endif + endif + ! zonal flux of v + if(idiag%id_uv > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_uv, a4, Time) + if(idiag%id_iuv > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iuv, a2, Time) + endif + endif + ! meridional flux of v + if(idiag%id_vv > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_vv, a4, Time) + if(idiag%id_ivv > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_ivv, a2, Time) + endif + endif + + ! terms related with vertical wind ( Atm(n)%w ): + if(.not.Atm(n)%flagstruct%hydrostatic) then + ! vertical moisture flux + if(idiag%id_wq > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) + enddo + enddo + enddo + used=send_data(idiag%id_wq, a4, Time) + if(idiag%id_iwq > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iwq, a2, Time) + endif + endif + ! vertical heat flux + if(idiag%id_wt > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_wt, a4, Time) + if(idiag%id_iwt > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iwt, a2, Time) + endif + endif + ! zonal flux of w + if(idiag%id_uw > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_uw, a4, Time) + if(idiag%id_iuw > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iuw, a2, Time) + endif + endif + ! meridional flux of w + if(idiag%id_vw > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_vw, a4, Time) + if(idiag%id_ivw > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_ivw, a2, Time) + endif + endif + ! vertical flux of w + if(idiag%id_ww > 0) then + do k=1,npz + do j=jsc,jec + do i=isc,iec + a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) + enddo + enddo + enddo + used=send_data(idiag%id_ww, a4, Time) + if(idiag%id_iww > 0) then + call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) + used=send_data(idiag%id_iww, a2, Time) + endif + endif + endif + + deallocate ( a4 ) + + #endif ! enddo ! end ntileMe do-loop diff --git a/tools/fv_eta.F90 b/tools/fv_eta.F90 index 673789bbc..9ac52d324 100644 --- a/tools/fv_eta.F90 +++ b/tools/fv_eta.F90 @@ -404,6 +404,7 @@ subroutine set_eta(km, ks, ptop, ak, bk) real a33(34),b33(34) ! miz: grid with enhanced surface-layer resolution real a47(48),b47(48) real a48(49),b48(49) + real a49(50),b49(50) real a52(53),b52(53) real a54(55),b54(55) real a56(57),b56(57) @@ -670,6 +671,45 @@ subroutine set_eta(km, ks, ptop, ak, bk) 0.95958, 0.97747, 0.99223, & 1.00000 / + data a49/ & + 1.00000, 2.69722, 5.17136, & + 8.89455, 14.24790, 22.07157, & + 33.61283, 50.48096, 74.79993, & + 109.40055, 158.00460, 225.44108, & + 317.89560, 443.19350, 611.11558, & + 833.74392, 1125.83405, 1505.20759, & + 1993.15829, 2614.86254, 3399.78420, & + 4382.06240, 5600.87014, 7100.73115, & + 8931.78242, 11149.97021, 13817.16841, & + 17001.20930, 20775.81856, 23967.33875, & + 25527.64563, 25671.22552, 24609.29622, & + 22640.51220, 20147.13482, 17477.63530, & + 14859.86462, 12414.92533, 10201.44191, & + 8241.50255, 6534.43202, 5066.178650, & + 3815.60705, 2758.60264, 1880.646310, & + 1169.33931, 618.47983, 225.000000, & + 10.00000, 0.00000 / + + data b49/ & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.01253, & + 0.04887, 0.10724, 0.18455, & + 0.27461, 0.36914, 0.46103, & + 0.54623, 0.62305, 0.69099, & + 0.75016, 0.80110, 0.84453, & + 0.88125, 0.91210, 0.93766, & + 0.95849, 0.97495, 0.98743, & + 0.99580, 1.00000 / + + ! High PBL resolution with top at 1 mb ! SJL modified May 7, 2013 to ptop ~ 100 mb data a54/100.00000, 254.83931, 729.54278, & @@ -1299,6 +1339,13 @@ subroutine set_eta(km, ks, ptop, ak, bk) bk(k) = b48(k) enddo + case (49) + ks = 28 + do k=1,km+1 + ak(k) = a49(k) + bk(k) = b49(k) + enddo + case (52) ks = 35 ! pint = 223 do k=1,km+1 From a9b5f03ddfaf5598a176408eb2469362883e9d6d Mon Sep 17 00:00:00 2001 From: Mikyung Lee Date: Fri, 3 Jan 2020 09:41:00 -0500 Subject: [PATCH 3/9] modified to include all missing subroutines and 'math edits' --- GFDL_tools/{ALLDIFF => ALLDIFF_DEC30} | 0 GFDL_tools/ALLDIFF_JAN02 | 158 ++++ GFDL_tools/ALLDIFF_JAN03 | 112 +++ GFDL_tools/fv_cmip_diag.F90 | 135 ++-- GFDL_tools/get_diff.sh | 20 + driver/GFDL/ALLDIFF_JAN03 | 32 + driver/GFDL/{DIFF => DIFF_DEC30} | 0 driver/GFDL/DIFF_JAN02 | 42 + driver/GFDL/atmosphere.F90 | 82 +- driver/GFDL/get_diff.sh | 20 + model/{DIFF_ALL => ALLDIFF_DEC30} | 0 model/ALLDIFF_JAN02 | 649 +++++++++++++++ model/ALLDIFF_JAN03 | 642 +++++++++++++++ model/DIFF_FV_ARRAYS | 56 -- model/DIFF_FV_CMP | 339 -------- model/fv_arrays.F90 | 6 +- model/fv_cmp.F90 | 302 ++++++- model/get_diff.sh | 20 + model/get_diff.sh~ | 20 + tools/{ALLDIFF => ALLDIFF_DEC30} | 0 tools/ALLDIFF_JAN02 | 1050 +++++++++++++++++++++++++ tools/ALLDIFF_JAN03 | 643 +++++++++++++++ tools/external_ic.F90 | 6 +- tools/fv_diagnostics.F90 | 42 +- tools/fv_eta.F90 | 2 +- tools/fv_surf_map.F90 | 18 +- tools/get_diff.sh | 20 + 27 files changed, 3873 insertions(+), 543 deletions(-) rename GFDL_tools/{ALLDIFF => ALLDIFF_DEC30} (100%) create mode 100644 GFDL_tools/ALLDIFF_JAN02 create mode 100644 GFDL_tools/ALLDIFF_JAN03 create mode 100755 GFDL_tools/get_diff.sh create mode 100644 driver/GFDL/ALLDIFF_JAN03 rename driver/GFDL/{DIFF => DIFF_DEC30} (100%) create mode 100644 driver/GFDL/DIFF_JAN02 create mode 100755 driver/GFDL/get_diff.sh rename model/{DIFF_ALL => ALLDIFF_DEC30} (100%) create mode 100644 model/ALLDIFF_JAN02 create mode 100644 model/ALLDIFF_JAN03 delete mode 100644 model/DIFF_FV_ARRAYS delete mode 100644 model/DIFF_FV_CMP create mode 100755 model/get_diff.sh create mode 100755 model/get_diff.sh~ rename tools/{ALLDIFF => ALLDIFF_DEC30} (100%) create mode 100644 tools/ALLDIFF_JAN02 create mode 100644 tools/ALLDIFF_JAN03 create mode 100755 tools/get_diff.sh diff --git a/GFDL_tools/ALLDIFF b/GFDL_tools/ALLDIFF_DEC30 similarity index 100% rename from GFDL_tools/ALLDIFF rename to GFDL_tools/ALLDIFF_DEC30 diff --git a/GFDL_tools/ALLDIFF_JAN02 b/GFDL_tools/ALLDIFF_JAN02 new file mode 100644 index 000000000..bccfdff25 --- /dev/null +++ b/GFDL_tools/ALLDIFF_JAN02 @@ -0,0 +1,158 @@ +-----------------------fv_ada_nudge.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +-----------------------fv_climate_nudge.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +-----------------------fv_cmip_diag.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +44,45c24,25 +< get_height_given_pressure, & +< rh_calc, get_height_field, get_vorticity +--- +> get_height_given_pressure, rh_calc, & +> get_height_field, get_vorticity +76d55 +< +173c152 +< +--- +> +245a225 +> +307d286 +< +360a340 +> +365c345 +< +--- +> +369c349 +< call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') +--- +> call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') +377c357 +< +--- +> +383c363 +< +--- +> +430c410 +< logical :: compute_wa , compute_rh +--- +> logical :: compute_rh, compute_wa +435d414 +< +465c444 +< +--- +> +467c446 +< if (compute_rh .or. compute_wa) then +--- +> if (compute_rh .or. compute_wa) then +486a466 +> +583c563 +< +--- +> +651c631 +< +--- +> +656,657c636,637 +< +< if (id_rv850 > 0 .or. id_vortmean > 0 ) then +--- +> +> if (id_rv850 > 0 .or. id_vortmean > 0) then +666c646 +< +--- +> +-----------------------read_climate_nudge_data.F90----------------------- +1,20c1 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +--- +> diff --git a/GFDL_tools/ALLDIFF_JAN03 b/GFDL_tools/ALLDIFF_JAN03 new file mode 100644 index 000000000..fe1b5b28b --- /dev/null +++ b/GFDL_tools/ALLDIFF_JAN03 @@ -0,0 +1,112 @@ +-----------------------fv_ada_nudge.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +-----------------------fv_climate_nudge.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +-----------------------fv_cmip_diag.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +44,45c24,25 +< get_height_given_pressure, & +< rh_calc, get_height_field, get_vorticity +--- +> get_height_given_pressure, rh_calc, & +> get_height_field, get_vorticity +76d55 +< +245a225 +> +307d286 +< +360a340 +> +430c410 +< logical :: compute_wa , compute_rh +--- +> logical :: compute_rh, compute_wa +435d414 +< +486a466 +> +-----------------------read_climate_nudge_data.F90----------------------- +1,20c1 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +--- +> diff --git a/GFDL_tools/fv_cmip_diag.F90 b/GFDL_tools/fv_cmip_diag.F90 index b987aa257..fdbdae99f 100644 --- a/GFDL_tools/fv_cmip_diag.F90 +++ b/GFDL_tools/fv_cmip_diag.F90 @@ -36,13 +36,13 @@ module fv_cmip_diag_mod use diag_data_mod, only: CMOR_MISSING_VALUE, null_axis_id use tracer_manager_mod, only: get_tracer_index use field_manager_mod, only: MODEL_ATMOS -use constants_mod, only: GRAV, RDGAS +use constants_mod, only: GRAV, RDGAS use fv_mapz_mod, only: E_Flux use fv_arrays_mod, only: fv_atmos_type use fv_diagnostics_mod, only: interpolate_vertical, & get_height_given_pressure, & - rh_calc, get_height_field, get_vorticity + rh_calc, get_height_field, get_vorticity use atmos_cmip_diag_mod, only: register_cmip_diag_field_2d, & register_cmip_diag_field_3d, & @@ -170,9 +170,6 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) ID_va = register_cmip_diag_field_3d (mod_name, 'va', Time, & 'Northward Wind', 'm s-1', standard_name='northward_wind') - - ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & - 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') ID_hus = register_cmip_diag_field_3d (mod_name, 'hus', Time, & 'Specific Humidity', '1.0', standard_name='specific_humidity') @@ -183,6 +180,9 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) ID_hur = register_cmip_diag_field_3d (mod_name, 'hur', Time, & 'Relative Humidity', '%', standard_name='relative_humidity') + ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & + 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') + ID_zg = register_cmip_diag_field_3d (mod_name, 'zg', Time, & 'Geopotential Height', 'm', standard_name='geopotential_height', axis='half') @@ -260,7 +260,7 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) id_orog = register_static_field (mod_name, 'orog', axes(1:2), & 'Surface Altitude', 'm', & standard_name='surface_altitude', & - area=area_id, interp_method='conserve_order1') + area=area_id, interp_method='conserve_order1') if (id_orog > 0) used = send_data (id_orog, Atm(n)%phis(isc:iec,jsc:jec)/GRAV, Time) #else !--- for now output this as 'zsurf' from fv_diagnostics --- @@ -288,20 +288,20 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) enddo id_pl700 = register_static_field (mod_name, 'pl700', (/null_axis_id/), & - '700 hPa Average', 'Pa', standard_name='air_pressure') + '700 hPa Average', 'Pa', standard_name='air_pressure') if (id_pl700 > 0) then - call diag_field_add_attribute (id_pl700, 'axis', 'Z') - call diag_field_add_attribute (id_pl700, 'positive', 'down' ) - call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) - ! add bounds - id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') - id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & - '700 hPa boundaries', 'Pa', standard_name='air_pressure') - if (id_pl700_bnds > 0) then - call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) - used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) - endif - used = send_data (id_pl700, 700.e2, Time) + call diag_field_add_attribute (id_pl700, 'axis', 'Z') + call diag_field_add_attribute (id_pl700, 'positive', 'down' ) + call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) + ! add bounds + id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') + id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & + '700 hPa boundaries', 'Pa', standard_name='air_pressure') + if (id_pl700_bnds > 0) then + call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) + used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) + endif + used = send_data (id_pl700, 700.e2, Time) endif @@ -359,27 +359,27 @@ subroutine fv_cmip_diag_init ( Atm, axes, Time ) !---- relative vorticity at 200, 500, 850 hPa ---- id_rv200 = register_cmip_diag_field_2d (mod_name, 'rv200', Time, & - 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') + 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') if (id_rv200 > 0 .and. id_plevels(id_p200) > 0) & - call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') + call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') id_rv500 = register_cmip_diag_field_2d (mod_name, 'rv500', Time, & - 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') + 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') if (id_rv500 > 0 .and. id_plevels(id_p500) > 0) & - call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') + call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') - id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & - 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') - if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & - call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') + id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & + 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') + if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & + call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') !---- mean relative vorticity 600, 700, 850 hPa ---- id_vortmean = register_cmip_diag_field_2d (mod_name, 'vortmean', Time, & - 'Mean Relative Vorticity over 600-850 hPa', 's-1', & - standard_name='atmosphere_relative_vorticity') + 'Mean Relative Vorticity over 600-850 hPa', 's-1', & + standard_name='atmosphere_relative_vorticity') if (id_vortmean > 0 .and. id_pl700 > 0) & - call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') + call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') !---- omega at 500 hPa ---- @@ -438,7 +438,7 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec, & - Atm(1)%npz) :: rhum, wa, rv + Atm(1)%npz) :: rhum, wa, rv real, dimension(Atm(1)%bd%isc:Atm(1)%bd%iec, & Atm(1)%bd%jsc:Atm(1)%bd%jec, & @@ -457,14 +457,14 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) call set_domain(Atm(n)%domain) - ! set flags for computing quantities + ! set flags for computing quantities compute_rh = .false. - compute_wa = .false. + compute_wa = .false. if (count(ID_hur%field_id(:)>0) > 0) compute_rh = .true. - if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. + if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. ! compute relative humidity at model levels (if needed) - if ( compute_rh .or. compute_wa ) then + if (compute_rh .or. compute_wa) then do k=1,npz do j=jsc,jec do i=isc,iec @@ -472,15 +472,15 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) enddo enddo ! compute relative humidity - if( compute_rh) then - call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & - Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) + if (compute_rh) then + call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & + Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) endif ! compute vertical velocity - if (compute_wa) then - wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & - pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) - endif + if (compute_wa) then + wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & + pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) + endif enddo endif @@ -490,12 +490,11 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) wz, Atm(n)%pt, Atm(n)%q, Atm(n)%peln, zvir) endif - ! relative vorticity + ! relative vorticity if (any((/id_rv200,id_rv500,id_rv850,id_vortmean/) > 0)) then - call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & - Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) - endif - + call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & + Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) + endif !---------------------------------------------------------------------- ! process 2D fields @@ -524,9 +523,9 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) if (query_cmip_diag_id(ID_hur)) & used = send_cmip_data_3d (ID_hur, rhum(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) - ! vertical velocity - if (query_cmip_diag_id(ID_wa)) & - used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) + ! vertical velocity + if (query_cmip_diag_id(ID_wa)) & + used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) ! geopotential height if (query_cmip_diag_id(ID_zg)) & @@ -575,12 +574,12 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) used = send_cmip_data_3d (ID_twap, Atm(n)%pt (isc:iec,jsc:jec,:)*Atm(n)%omga(isc:iec,jsc:jec,:), & Time, phalf=Atm(n)%peln, opt=1) - !---------------------------------------------------------------------- - ! stratiform cloud tracers (only on model levels) - - if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) - if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) - if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) +!---------------------------------------------------------------------- +! stratiform cloud tracers (only on model levels) + + if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) + if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) + if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) !---------------------------------------------------------------------- ! process 2D fields on specific pressure levels @@ -646,23 +645,23 @@ subroutine fv_cmip_diag ( Atm, zvir, Time ) endif if (id_rv200 > 0) then - call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) - used = send_data (id_rv200, dat2, Time) + call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) + used = send_data (id_rv200, dat2, Time) endif if (id_rv500 > 0) then - call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) - used = send_data (id_rv500, dat2, Time) + call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) + used = send_data (id_rv500, dat2, Time) endif - if (id_rv850 > 0 .or. id_vortmean > 0 ) then - call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) - if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) - if (id_vortmean > 0) then - call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) - call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) - used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) - endif + if (id_rv850 > 0 .or. id_vortmean > 0 ) then + call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) + if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) + if (id_vortmean > 0) then + call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) + call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) + used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) + endif endif if (id_zg10 > 0) then diff --git a/GFDL_tools/get_diff.sh b/GFDL_tools/get_diff.sh new file mode 100755 index 000000000..a34269cae --- /dev/null +++ b/GFDL_tools/get_diff.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/GFDL_tools' + +ofile='ALLDIFF_JAN03' +if [ -f $ofile ] ; then + rm $ofile +fi +touch -a $ofile + + +for myfile in *.*90 ; do + echo "-----------------------$myfile-----------------------" >> $ofile + diff -w $myfile $rdir/$myfile >> $ofile + echo $myfile +done + + + + diff --git a/driver/GFDL/ALLDIFF_JAN03 b/driver/GFDL/ALLDIFF_JAN03 new file mode 100644 index 000000000..d1e69effc --- /dev/null +++ b/driver/GFDL/ALLDIFF_JAN03 @@ -0,0 +1,32 @@ +-----------------------atmosphere.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +489a470 +> !miz +501,503d481 +< +< !miz +< +1196a1175 +> !++VAN +1197a1177 +> !--VAN diff --git a/driver/GFDL/DIFF b/driver/GFDL/DIFF_DEC30 similarity index 100% rename from driver/GFDL/DIFF rename to driver/GFDL/DIFF_DEC30 diff --git a/driver/GFDL/DIFF_JAN02 b/driver/GFDL/DIFF_JAN02 new file mode 100644 index 000000000..a819786ac --- /dev/null +++ b/driver/GFDL/DIFF_JAN02 @@ -0,0 +1,42 @@ +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +488,489c468,470 +< if (id_udt_dyn>0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) +< if (id_vdt_dyn>0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) +--- +> if (id_udt_dyn > 0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) +> if (id_vdt_dyn > 0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) +> !miz +501,503d481 +< +< !miz +< +843,844c821,822 +< Atm(mytile)%q(i,j,k,nql) + & +< Atm(mytile)%q(i,j,k,nqi) ) +--- +> Atm(mytile)%q(i,j,k,nql) + & +> Atm(mytile)%q(i,j,k,nqi) ) +1196a1175 +> !++VAN +1197a1177 +> !--VAN diff --git a/driver/GFDL/atmosphere.F90 b/driver/GFDL/atmosphere.F90 index 3b555de1c..276f9c69b 100644 --- a/driver/GFDL/atmosphere.F90 +++ b/driver/GFDL/atmosphere.F90 @@ -150,8 +150,8 @@ module atmosphere_mod real, allocatable :: qtend(:,:,:,:) real :: mv = -1.e10 !miz - type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus - integer :: nqv, nql, nqi, nqa + type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus + integer :: nqv, nql, nqi, nqa integer :: mytile = 1 integer :: p_split = 1 @@ -361,13 +361,12 @@ subroutine atmosphere_init (Time_init, Time, Time_step, Surf_diff, Grid_box) ID_tnhusa = register_cmip_diag_field_3d (mod_name, 'tnhusa', Time, & 'Tendency of Specific Humidity due to Advection', 's-1', & standard_name='tendency_of_specific_humidity_due_to_advection') - ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & - 'Tendency of Air Temperature', 'K s-1', & - standard_name='tendency_of_air_temperature') - ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & - 'Tendency of Specific Humidity', 's-1', & - standard_name='tendency_of_specific_humidity') - + ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & + 'Tendency of Air Temperature', 'K s-1', & + standard_name='tendency_of_air_temperature') + ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & + 'Tendency of Specific Humidity', 's-1', & + standard_name='tendency_of_specific_humidity') !---allocate id_tracer_* allocate (id_tracerdt_dyn (num_tracers)) @@ -382,24 +381,24 @@ subroutine atmosphere_init (Time_init, Time, Time_step, Surf_diff, Grid_box) endif enddo if (any(id_tracerdt_dyn(:)>0)) allocate(qtendyyf(isc:iec, jsc:jec,1:npz,num_tracers)) - if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & + if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & allocate(ttend(isc:iec, jsc:jec, 1:npz)) if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. & - query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) + query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) !miz -! get tracer number for common moisture tracers - nqv = get_tracer_index(MODEL_ATMOS,'sphum') - nql = get_tracer_index(MODEL_ATMOS,'liq_wat') - nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') - nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') -! could zero out diagnostics if nXX = 0 - if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & - 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) - if (nqv > size(qtend,4)) id_qdt_dyn = 0 - if (nql > size(qtend,4)) id_qldt_dyn = 0 - if (nqi > size(qtend,4)) id_qidt_dyn = 0 - if (nqa > size(qtend,4)) id_qadt_dyn = 0 +! get tracer number for common moisture tracers + nqv = get_tracer_index(MODEL_ATMOS,'sphum') + nql = get_tracer_index(MODEL_ATMOS,'liq_wat') + nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') + nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') +! could zero out diagnostics if nXX = 0 + if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & + 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) + if (nqv > size(qtend,4)) id_qdt_dyn = 0 + if (nql > size(qtend,4)) id_qldt_dyn = 0 + if (nqi > size(qtend,4)) id_qidt_dyn = 0 + if (nqa > size(qtend,4)) id_qadt_dyn = 0 ! --- initialize clocks for dynamics, physics_down and physics_up id_dynam = mpp_clock_id ('FV dy-core', flags = clock_flag_default, grain=CLOCK_SUBCOMPONENT ) id_subgridz = mpp_clock_id ('FV subgrid_z',flags = clock_flag_default, grain=CLOCK_SUBCOMPONENT ) @@ -433,11 +432,11 @@ subroutine atmosphere_dynamics ( Time, surf_diff ) #endif !miz[M d0 - if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & + if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & ttend(:, :, :) = Atm(mytile)%pt(isc:iec, jsc:jec, :) if ( any((/ id_qdt_dyn, id_qldt_dyn, id_qidt_dyn, id_qadt_dyn /) > 0) .or. & - query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & - qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) + query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & + qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) !miz do itrac = 1, num_tracers if (id_tracerdt_dyn (itrac) >0 ) & @@ -486,18 +485,18 @@ subroutine atmosphere_dynamics ( Time, surf_diff ) Atm(mytile)%q (isc:iec,jsc:jec,:,nqi) - Surf_diff%qdt_dyn(:,:,:))/dt_atmos #endif !miz - if ( id_udt_dyn>0 ) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) - if ( id_vdt_dyn>0 ) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) - if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) - if (query_cmip_diag_id(ID_tnta)) & - used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) + if (id_udt_dyn>0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) + if (id_vdt_dyn>0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) + if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) + if (query_cmip_diag_id(ID_tnta)) & + used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) - if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) - if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) - if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) - if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) - if (query_cmip_diag_id(ID_tnhusa)) & - used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) + if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) + if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) + if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) + if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) + if (query_cmip_diag_id(ID_tnhusa)) & + used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) !miz @@ -952,11 +951,10 @@ subroutine atmosphere_state_update (Time, Physics_tendency, Physics, Atm_block) endif !--- cmip6 total tendencies of temperature and specific humidity - if (query_cmip_diag_id(ID_tnt)) & - used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) - if (query_cmip_diag_id(ID_tnhus)) & - used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) - + if (query_cmip_diag_id(ID_tnt)) & + used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) + if (query_cmip_diag_id(ID_tnhus)) & + used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) #if !defined(ATMOS_NUDGE) && !defined(CLIMATE_NUDGE) && !defined(ADA_NUDGE) if ( .not.forecast_mode .and. Atm(mytile)%flagstruct%nudge .and. Atm(mytile)%flagstruct%na_init>0 ) then diff --git a/driver/GFDL/get_diff.sh b/driver/GFDL/get_diff.sh new file mode 100755 index 000000000..e1bfb4184 --- /dev/null +++ b/driver/GFDL/get_diff.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/driver/coupled' + +ofile='ALLDIFF_JAN03' +if [ -f $ofile ] ; then + rm $ofile +fi +touch -a $ofile + + +for myfile in *.*90 ; do + echo "-----------------------$myfile-----------------------" >> $ofile + diff -w $myfile $rdir/$myfile >> $ofile + echo $myfile +done + + + + diff --git a/model/DIFF_ALL b/model/ALLDIFF_DEC30 similarity index 100% rename from model/DIFF_ALL rename to model/ALLDIFF_DEC30 diff --git a/model/ALLDIFF_JAN02 b/model/ALLDIFF_JAN02 new file mode 100644 index 000000000..f49dd5b06 --- /dev/null +++ b/model/ALLDIFF_JAN02 @@ -0,0 +1,649 @@ +-----------------------a2b_edge.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------boundary.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------dyn_core.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_arrays.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_cmp.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +24d3 +< ! use fms_mod, only: error_mesg, FATAL +29d7 +< +87c65 +< !--- +--- +> !--- +98d75 +< ! call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) +100c77,78 +< end subroutine fv_sat_adj +--- +> end subroutine fv_sat_adj +> +135a114 +> +316a296 +> +-----------------------fv_control.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_current_grid.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_dynamics.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_fill.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_grid_utils.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_mapz.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nesting.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_sg.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_tracer2d.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_update_phys.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sw_core.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------tp_core.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/model/ALLDIFF_JAN03 b/model/ALLDIFF_JAN03 new file mode 100644 index 000000000..15aab809f --- /dev/null +++ b/model/ALLDIFF_JAN03 @@ -0,0 +1,642 @@ +-----------------------a2b_edge.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------boundary.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------dyn_core.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_arrays.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_cmp.F90----------------------- +1,20d0 +< !*********************************************************************** +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +< !*********************************************************************** +24d3 +< ! use fms_mod, only: error_mesg, FATAL +29d7 +< +98d75 +< ! call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) +101a79 +> +135a114 +> +316a296 +> +-----------------------fv_control.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_current_grid.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_dynamics.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_fill.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_grid_utils.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_mapz.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nesting.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_sg.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_tracer2d.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_update_phys.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sw_core.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------tp_core.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/model/DIFF_FV_ARRAYS b/model/DIFF_FV_ARRAYS deleted file mode 100644 index a4be05d91..000000000 --- a/model/DIFF_FV_ARRAYS +++ /dev/null @@ -1,56 +0,0 @@ -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -57c56 -< id_pfhy, id_pfnh, & ---- -> id_pfhy, id_pfnh, & -59c58,63 -< id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km ---- -> id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km, & -> id_uq, id_vq, id_wq, id_iuq, id_ivq, id_iwq, & ! moisture flux & vertical integral -> id_ut, id_vt, id_wt, id_iut, id_ivt, id_iwt, & ! heat flux -> id_uu, id_uv, id_uw, id_vv, id_vw, id_ww, & ! momentum flux -> id_iuu, id_iuv, id_iuw, id_ivv, id_ivw, id_iww ! vertically integral of momentum flux -> -71,72c75,76 -< integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & -< id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 ---- -> integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & -> id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 diff --git a/model/DIFF_FV_CMP b/model/DIFF_FV_CMP deleted file mode 100644 index e113fe1a6..000000000 --- a/model/DIFF_FV_CMP +++ /dev/null @@ -1,339 +0,0 @@ -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -24d3 -< use fms_mod, only: error_mesg, FATAL -28a8,35 -> real, parameter:: cv_vap = 3.*rvgas ! 1384.8 -> real, parameter:: cv_air = cp_air - rdgas ! = rdgas * (7/2-1) = 2.5*rdgas=717.68 -> ! 2050 at 0 deg C; 1972 at -15 C; 1818. at -40 C -> ! real, parameter:: c_ice = 2106. ! heat capacity of ice at 0.C (same as IFS) -> ! real, parameter:: c_liq = 4218. ! ECMWF-IFS at 0 deg C -> real, parameter:: c_ice = 1972. ! -15 C -> real, parameter:: c_liq = 4.1855e+3 ! GFS, at 15 deg C -> real, parameter:: cp_vap = cp_vapor ! 4*rv_gas=1846. -> real, parameter:: dc_vap = cp_vap - c_liq ! = -2344. isobaric heating/cooling -> real, parameter:: dc_ice = c_liq - c_ice ! = 2084 -> real, parameter:: tice = 273.16 -> real, parameter:: t_wfr = tice - 40. -> ! Values at 0 Deg C -> real, parameter:: hlv0 = 2.5e6 -> real, parameter:: hlf0 = 3.3358e5 -> ! Latent heat at absolute zero: -> real, parameter:: Lv0 = hlv0 - dc_vap*tice ! = 3.141264e6 -> real, parameter:: li00 = hlf0 - dc_ice*tice ! = -2.355446e5 -> ! Li (T=113) ~ 0. -> !!! real(kind=R_GRID), parameter:: e00 = 610.71 ! saturation vapor pressure at T0 -> real(kind=R_GRID), parameter:: e00 = 611.21 ! IFS: saturation vapor pressure at T0 -> real(kind=R_GRID), parameter:: d2ice = cp_vap - c_ice -> real(kind=R_GRID), parameter:: Li2 = hlv0+hlf0 - d2ice*tice -> ! Local: -> real:: dw_ocean = 0.12 ! This parameter is different from that in major MP -> real:: crevp(5), lat2 -> real, allocatable:: table(:), table2(:), tablew(:), des2(:), desw(:) -> real:: d0_vap, lv00 -30,31c37,40 -< private -< public fv_sat_adj, qs_init ---- -> logical:: mp_initialized = .false. -> -> private -> public fv_sat_adj, qs_init -37a47,49 -> ! This is designed for 6-class micro-physics schemes; handles the heat release -> ! due to in situ phase changes -> ! input pt is T_vir -52a65,178 -> !--- -> real, dimension(is:ie):: wqsat, dq2dt, qpz, cvm, t0, pt1, icp2, lcp2, tcp2, tcp3, & -> den, q_liq, q_sol, src, hvar -> real, dimension(is:ie):: mc_air, lhl, lhi ! latent heat -> real:: sink, qsw, rh, fac_v2l, fac_l2v -> real:: tc, qsi, dqsdt, dq, dq0, pidep, qi_crt, tmp, dtmp -> real:: condensates, tin, qstar, rqi, q_plus, q_minus -> real:: sdt, dt_Bigg, adj_fac, fac_s, fac_r, fac_i2s, fac_mlt, fac_l2r -> real:: factor, qim, tice0, c_air, c_vap -> integer i,j -> -> -> end subroutine fv_sat_adj -> -> -> real function wqs1(ta, den) -> ! Pure water phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = tablew(it) + (ap1-it)*desw(it) -> wqs1 = es / (rvgas*ta*den) -> -> end function wqs1 -> -> real function iqs1(ta, den) -> ! water-ice phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = table2(it) + (ap1-it)*des2(it) -> iqs1 = es / (rvgas*ta*den) -> -> end function iqs1 -> -> -> real function wqs2(ta, den, dqdt) -> ! Pure water phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> real, intent(out):: dqdt -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = tablew(it) + (ap1-it)*desw(it) -> wqs2 = es / (rvgas*ta*den) -> it = ap1 - 0.5 -> ! Finite diff, del_T = 0.1: -> dqdt = 10.*(desw(it) + (ap1-it)*(desw(it+1)-desw(it))) / (rvgas*ta*den) -> -> end function wqs2 -> -> subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt) -> ! Pure water phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> integer, intent(in):: is, ie -> real, intent(in), dimension(is:ie):: ta, den -> real, intent(out), dimension(is:ie):: wqsat, dqdt -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer i, it -> -> do i=is, ie -> ap1 = 10.*dim(ta(i), tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = tablew(it) + (ap1-it)*desw(it) -> wqsat(i) = es / (rvgas*ta(i)*den(i)) -> it = ap1 - 0.5 -> ! Finite diff, del_T = 0.1: -> dqdt(i) = 10.*(desw(it)+(ap1-it)*(desw(it+1)-desw(it)))/(rvgas*ta(i)*den(i)) -> enddo -> -> end subroutine wqs2_vect -> -> -> -> real function iqs2(ta, den, dqdt) -> ! water-ice phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> real, intent(out):: dqdt -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = table2(it) + (ap1-it)*des2(it) -> iqs2 = es / (rvgas*ta*den) -> it = ap1 - 0.5 -> dqdt = 10.*(des2(it) + (ap1-it)*(des2(it+1)-des2(it))) / (rvgas*ta*den) -54,56c180 -< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) -< -< end subroutine fv_sat_adj ---- -> end function iqs2 -60a185,230 -> integer, parameter:: length=2621 -> real, parameter:: rhor = 1.0e3 ! LFO83 -> real, parameter:: vdifu = 2.11e-5 -> real, parameter:: tcond = 2.36e-2 -> real, parameter:: visk = 1.259e-5 -> real, parameter:: hltc = 2.5e6 -> real, parameter:: gam290 = 1.827363 -> real, parameter:: gam380 = 4.694155 -> real, parameter:: alin = 842.0 -> !Intercept parameters -> real, parameter:: rnzr = 8.0e6 -> real, parameter:: c_cracw = 0.9 ! rain accretion efficiency -> real:: scm3, act2 -> integer i -> -> if ( mp_initialized ) return -> if (is_master()) write(*,*) 'Top layer for GFDL_MP=', kmp -> -> lat2 = (hlv + hlf) ** 2 -> -> scm3 = (visk/vdifu)**(1./3.) -> act2 = pi * rnzr * rhor -> -> crevp(1) = 2.*pi*vdifu*tcond*rvgas*rnzr -> crevp(2) = 0.78/sqrt(act2) -> crevp(3) = 0.31*scm3*gam290*sqrt(alin/visk)/act2**0.725 -> crevp(4) = tcond*rvgas -> crevp(5) = hltc**2*vdifu -> -> ! generate es table (dt = 0.1 deg. c) -> allocate ( table (length) ) -> allocate ( table2(length) ) -> allocate ( tablew(length) ) -> allocate ( des2(length) ) -> allocate ( desw(length) ) -> -> call qs_table (length ) -> call qs_table2(length ) -> call qs_tablew(length ) -> -> do i=1,length-1 -> des2(i) = max(0., table2(i+1) - table2(i)) -> desw(i) = max(0., tablew(i+1) - tablew(i)) -> enddo -> des2(length) = des2(length-1) -> desw(length) = desw(length-1) -62c232 -< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) ---- -> mp_initialized = .true. -64a235,336 -> -> subroutine qs_table(n) -> integer, intent(in):: n -> real(kind=R_GRID):: esupc(200) -> real(kind=R_GRID):: tmin, tem, esh20 -> real(kind=R_GRID):: wice, wh2o, t_ice -> real(kind=R_GRID):: delt=0.1 -> integer i -> -> ! constants -> t_ice = tice -> -> ! compute es over ice between -160c and 0 c. -> tmin = t_ice - 160. -> do i=1,1600 -> tem = tmin+delt*real(i-1) -> table(i) = e00*exp((d2ice*log(tem/t_ice)+Li2*(tem-t_ice)/(tem*t_ice))/rvgas) -> enddo -> -> ! compute es over water between -20c and 102c. -> do i=1,1221 -> tem = 253.16+delt*real(i-1) -> esh20 = e00*exp((dc_vap*log(tem/t_ice)+Lv0*(tem-t_ice)/(tem*t_ice))/rvgas) -> if (i <= 200) then -> esupc(i) = esh20 -> else -> table(i+1400) = esh20 -> endif -> enddo -> -> ! derive blended es over ice and supercooled water between -20c and 0c -> do i=1,200 -> tem = 253.16+delt*real(i-1) -> wice = 0.05*(t_ice-tem) -> wh2o = 0.05*(tem-253.16) -> table(i+1400) = wice*table(i+1400)+wh2o*esupc(i) -> enddo -> -> end subroutine qs_table -> -> subroutine qs_tablew(n) -> ! Over water -> integer, intent(in):: n -> real(kind=R_GRID), parameter:: delt=0.1 -> real(kind=R_GRID):: tmin -> real(kind=R_GRID):: tem0, t_ice, fac1 -> integer i -> -> ! constants -> t_ice = tice -> tmin = t_ice - 160. -> do i=1,n -> tem0 = tmin + delt*real(i-1) -> ! compute es over water -> fac1 = Lv0*(tem0-t_ice) / (tem0*t_ice) -> fac1 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas -> fac1 = e00*exp(fac1) -> tablew(i) = fac1 -> enddo -> -> end subroutine qs_tablew -> -> -> subroutine qs_table2(n) -> ! 2-phase table -> integer, intent(in):: n -> real(kind=R_GRID):: delt=0.1 -> real(kind=R_GRID):: tmin -> real(kind=R_GRID):: tem0, tem1, t_ice, fac0, fac1, fac2 -> integer:: i, i0, i1 -> -> ! constants -> t_ice = tice -> tmin = t_ice - 160. -> -> ! High-precision computation: -> do i=1,n -> tem0 = tmin+delt*real(i-1) -> fac0 = (tem0-t_ice) / (tem0*t_ice) -> if ( i<= 1600 ) then -> ! compute es over ice between -160c and 0 c. -> fac1 = fac0*Li2 -> fac2 = (d2ice*log(tem0/t_ice)+fac1) / rvgas -> else -> ! compute es over water between 0c and 102c. -> fac1 = fac0*Lv0 -> fac2 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas -> endif -> fac2 = e00*exp(fac2) -> table2(i) = fac2 -> enddo -> -> !---------- -> ! smoother -> !---------- -> i0 = 1600; i1 = 1601 -> tem0 = 0.25*(table2(i0-1) + 2.*table(i0) + table2(i0+1)) -> tem1 = 0.25*(table2(i1-1) + 2.*table(i1) + table2(i1+1)) -> table2(i0) = tem0 -> table2(i1) = tem1 -> -> end subroutine qs_table2 diff --git a/model/fv_arrays.F90 b/model/fv_arrays.F90 index b4cb09388..3c549658d 100644 --- a/model/fv_arrays.F90 +++ b/model/fv_arrays.F90 @@ -54,7 +54,7 @@ module fv_arrays_mod id_f15, id_f25, id_f35, id_f45, id_ctp, & id_ppt, id_ts, id_tb, id_ctt, id_pmask, id_pmaskv2, & id_delp, id_delz, id_zratio, id_ws, id_iw, id_lw, & - id_pfhy, id_pfnh, & + id_pfhy, id_pfnh, & id_qn, id_qn200, id_qn500, id_qn850, id_qp, id_mdt, id_qdt, id_aam, id_amdt, & id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km, & id_uq, id_vq, id_wq, id_iuq, id_ivq, id_iwq, & ! moisture flux & vertical integral @@ -73,8 +73,8 @@ module fv_arrays_mod integer:: id_u_plev, id_v_plev, id_t_plev, id_h_plev, id_q_plev, id_omg_plev ! IPCC diag - integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & - id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 + integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & + id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 integer :: id_rh1000_cmip, id_rh925_cmip, id_rh850_cmip, id_rh700_cmip, id_rh500_cmip, & id_rh300_cmip, id_rh250_cmip, id_rh100_cmip, id_rh50_cmip, id_rh10_cmip diff --git a/model/fv_cmp.F90 b/model/fv_cmp.F90 index e607b5b0b..e48f40f06 100644 --- a/model/fv_cmp.F90 +++ b/model/fv_cmp.F90 @@ -21,20 +21,54 @@ module fv_cmp_mod use constants_mod, only: pi=>pi_8, rvgas, rdgas, grav, hlv, hlf, cp_air, cp_vapor - use fms_mod, only: error_mesg, FATAL + ! use fms_mod, only: error_mesg, FATAL use fv_mp_mod, only: is_master use fv_arrays_mod, only: R_GRID implicit none - private - public fv_sat_adj, qs_init + real, parameter:: cv_vap = 3.*rvgas ! 1384.8 + real, parameter:: cv_air = cp_air - rdgas ! = rdgas * (7/2-1) = 2.5*rdgas=717.68 +! 2050 at 0 deg C; 1972 at -15 C; 1818. at -40 C +! real, parameter:: c_ice = 2106. ! heat capacity of ice at 0.C (same as IFS) +! real, parameter:: c_liq = 4218. ! ECMWF-IFS at 0 deg C + real, parameter:: c_ice = 1972. ! -15 C + real, parameter:: c_liq = 4.1855e+3 ! GFS, at 15 deg C + real, parameter:: cp_vap = cp_vapor ! 4*rv_gas=1846. + real, parameter:: dc_vap = cp_vap - c_liq ! = -2344. isobaric heating/cooling + real, parameter:: dc_ice = c_liq - c_ice ! = 2084 + real, parameter:: tice = 273.16 + real, parameter:: t_wfr = tice - 40. +! Values at 0 Deg C + real, parameter:: hlv0 = 2.5e6 + real, parameter:: hlf0 = 3.3358e5 +! Latent heat at absolute zero: + real, parameter:: Lv0 = hlv0 - dc_vap*tice ! = 3.141264e6 + real, parameter:: li00 = hlf0 - dc_ice*tice ! = -2.355446e5 +! Li (T=113) ~ 0. +!!! real(kind=R_GRID), parameter:: e00 = 610.71 ! saturation vapor pressure at T0 + real(kind=R_GRID), parameter:: e00 = 611.21 ! IFS: saturation vapor pressure at T0 + real(kind=R_GRID), parameter:: d2ice = cp_vap - c_ice + real(kind=R_GRID), parameter:: Li2 = hlv0+hlf0 - d2ice*tice +! Local: + real:: dw_ocean = 0.12 ! This parameter is different from that in major MP + real:: crevp(5), lat2 + real, allocatable:: table(:), table2(:), tablew(:), des2(:), desw(:) + real:: d0_vap, lv00 + + logical:: mp_initialized = .false. + + private + public fv_sat_adj, qs_init contains subroutine fv_sat_adj(mdt, zvir, is, ie, js, je, ng, hydrostatic, consv_te, & te0, qv, ql, qi, qr, qs, qg, dpln, delz, pt, dp, & q_con, cappa, area, dtdt, out_dt, last_step, do_qa, qa) +! This is designed for 6-class micro-physics schemes; handles the heat release +! due to in situ phase changes +! input pt is T_vir integer, intent(in):: is, ie, js, je, ng real, intent(in):: mdt ! remapping time step real, intent(in):: zvir @@ -50,17 +84,275 @@ subroutine fv_sat_adj(mdt, zvir, is, ie, js, je, ng, hydrostatic, consv_te, & real, intent(inout), dimension(is-ng:,js-ng:):: cappa real, intent(inout)::dtdt(is:ie,js:je) real, intent(out):: te0(is-ng:ie+ng,js-ng:je+ng) +!--- + real, dimension(is:ie):: wqsat, dq2dt, qpz, cvm, t0, pt1, icp2, lcp2, tcp2, tcp3, & + den, q_liq, q_sol, src, hvar + real, dimension(is:ie):: mc_air, lhl, lhi ! latent heat + real:: sink, qsw, rh, fac_v2l, fac_l2v + real:: tc, qsi, dqsdt, dq, dq0, pidep, qi_crt, tmp, dtmp + real:: condensates, tin, qstar, rqi, q_plus, q_minus + real:: sdt, dt_Bigg, adj_fac, fac_s, fac_r, fac_i2s, fac_mlt, fac_l2r + real:: factor, qim, tice0, c_air, c_vap + integer i,j - call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) + ! call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) end subroutine fv_sat_adj + real function wqs1(ta, den) +! Pure water phase; universal dry/moist formular using air density +! Input "den" can be either dry or moist air density + real, intent(in):: ta, den +! local: + real es, ap1 + real, parameter:: tmin=tice - 160. + integer it + + ap1 = 10.*dim(ta, tmin) + 1. + ap1 = min(2621., ap1) + it = ap1 + es = tablew(it) + (ap1-it)*desw(it) + wqs1 = es / (rvgas*ta*den) + + end function wqs1 + + real function iqs1(ta, den) +! water-ice phase; universal dry/moist formular using air density +! Input "den" can be either dry or moist air density + real, intent(in):: ta, den +! local: + real es, ap1 + real, parameter:: tmin=tice - 160. + integer it + + ap1 = 10.*dim(ta, tmin) + 1. + ap1 = min(2621., ap1) + it = ap1 + es = table2(it) + (ap1-it)*des2(it) + iqs1 = es / (rvgas*ta*den) + + end function iqs1 + + real function wqs2(ta, den, dqdt) +! Pure water phase; universal dry/moist formular using air density +! Input "den" can be either dry or moist air density + real, intent(in):: ta, den + real, intent(out):: dqdt +! local: + real es, ap1 + real, parameter:: tmin=tice - 160. + integer it + + ap1 = 10.*dim(ta, tmin) + 1. + ap1 = min(2621., ap1) + it = ap1 + es = tablew(it) + (ap1-it)*desw(it) + wqs2 = es / (rvgas*ta*den) + it = ap1 - 0.5 +! Finite diff, del_T = 0.1: + dqdt = 10.*(desw(it) + (ap1-it)*(desw(it+1)-desw(it))) / (rvgas*ta*den) + + end function wqs2 + + subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt) +! Pure water phase; universal dry/moist formular using air density +! Input "den" can be either dry or moist air density + integer, intent(in):: is, ie + real, intent(in), dimension(is:ie):: ta, den + real, intent(out), dimension(is:ie):: wqsat, dqdt +! local: + real es, ap1 + real, parameter:: tmin=tice - 160. + integer i, it + + do i=is, ie + ap1 = 10.*dim(ta(i), tmin) + 1. + ap1 = min(2621., ap1) + it = ap1 + es = tablew(it) + (ap1-it)*desw(it) + wqsat(i) = es / (rvgas*ta(i)*den(i)) + it = ap1 - 0.5 +! Finite diff, del_T = 0.1: + dqdt(i) = 10.*(desw(it)+(ap1-it)*(desw(it+1)-desw(it)))/(rvgas*ta(i)*den(i)) + enddo + + end subroutine wqs2_vect + + + + real function iqs2(ta, den, dqdt) +! water-ice phase; universal dry/moist formular using air density +! Input "den" can be either dry or moist air density + real, intent(in):: ta, den + real, intent(out):: dqdt +! local: + real es, ap1 + real, parameter:: tmin=tice - 160. + integer it + + ap1 = 10.*dim(ta, tmin) + 1. + ap1 = min(2621., ap1) + it = ap1 + es = table2(it) + (ap1-it)*des2(it) + iqs2 = es / (rvgas*ta*den) + it = ap1 - 0.5 + dqdt = 10.*(des2(it) + (ap1-it)*(des2(it+1)-des2(it))) / (rvgas*ta*den) + + end function iqs2 + subroutine qs_init(kmp) integer, intent(in):: kmp + integer, parameter:: length=2621 + real, parameter:: rhor = 1.0e3 ! LFO83 + real, parameter:: vdifu = 2.11e-5 + real, parameter:: tcond = 2.36e-2 + real, parameter:: visk = 1.259e-5 + real, parameter:: hltc = 2.5e6 + real, parameter:: gam290 = 1.827363 + real, parameter:: gam380 = 4.694155 + real, parameter:: alin = 842.0 + !Intercept parameters + real, parameter:: rnzr = 8.0e6 + real, parameter:: c_cracw = 0.9 ! rain accretion efficiency + real:: scm3, act2 + integer i + + if ( mp_initialized ) return + if (is_master()) write(*,*) 'Top layer for GFDL_MP=', kmp - call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) + lat2 = (hlv + hlf) ** 2 + + scm3 = (visk/vdifu)**(1./3.) + act2 = pi * rnzr * rhor + + crevp(1) = 2.*pi*vdifu*tcond*rvgas*rnzr + crevp(2) = 0.78/sqrt(act2) + crevp(3) = 0.31*scm3*gam290*sqrt(alin/visk)/act2**0.725 + crevp(4) = tcond*rvgas + crevp(5) = hltc**2*vdifu + +! generate es table (dt = 0.1 deg. c) + allocate ( table (length) ) + allocate ( table2(length) ) + allocate ( tablew(length) ) + allocate ( des2(length) ) + allocate ( desw(length) ) + + call qs_table (length ) + call qs_table2(length ) + call qs_tablew(length ) + + do i=1,length-1 + des2(i) = max(0., table2(i+1) - table2(i)) + desw(i) = max(0., tablew(i+1) - tablew(i)) + enddo + des2(length) = des2(length-1) + desw(length) = desw(length-1) + + mp_initialized = .true. end subroutine qs_init + subroutine qs_table(n) + integer, intent(in):: n + real(kind=R_GRID):: esupc(200) + real(kind=R_GRID):: tmin, tem, esh20 + real(kind=R_GRID):: wice, wh2o, t_ice + real(kind=R_GRID):: delt=0.1 + integer i + +! constants + t_ice = tice + +! compute es over ice between -160c and 0 c. + tmin = t_ice - 160. + do i=1,1600 + tem = tmin+delt*real(i-1) + table(i) = e00*exp((d2ice*log(tem/t_ice)+Li2*(tem-t_ice)/(tem*t_ice))/rvgas) + enddo + +! compute es over water between -20c and 102c. + do i=1,1221 + tem = 253.16+delt*real(i-1) + esh20 = e00*exp((dc_vap*log(tem/t_ice)+Lv0*(tem-t_ice)/(tem*t_ice))/rvgas) + if (i <= 200) then + esupc(i) = esh20 + else + table(i+1400) = esh20 + endif + enddo + +! derive blended es over ice and supercooled water between -20c and 0c + do i=1,200 + tem = 253.16+delt*real(i-1) + wice = 0.05*(t_ice-tem) + wh2o = 0.05*(tem-253.16) + table(i+1400) = wice*table(i+1400)+wh2o*esupc(i) + enddo + + end subroutine qs_table + + subroutine qs_tablew(n) +! Over water + integer, intent(in):: n + real(kind=R_GRID), parameter:: delt=0.1 + real(kind=R_GRID):: tmin + real(kind=R_GRID):: tem0, t_ice, fac1 + integer i + +! constants + t_ice = tice + tmin = t_ice - 160. + do i=1,n + tem0 = tmin + delt*real(i-1) +! compute es over water + fac1 = Lv0*(tem0-t_ice) / (tem0*t_ice) + fac1 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas + fac1 = e00*exp(fac1) + tablew(i) = fac1 + enddo + + end subroutine qs_tablew + + subroutine qs_table2(n) +! 2-phase table + integer, intent(in):: n + real(kind=R_GRID):: delt=0.1 + real(kind=R_GRID):: tmin + real(kind=R_GRID):: tem0, tem1, t_ice, fac0, fac1, fac2 + integer:: i, i0, i1 + +! constants + t_ice = tice + tmin = t_ice - 160. + +! High-precision computation: + do i=1,n + tem0 = tmin+delt*real(i-1) + fac0 = (tem0-t_ice) / (tem0*t_ice) + if ( i<= 1600 ) then +! compute es over ice between -160c and 0 c. + fac1 = fac0*Li2 + fac2 = (d2ice*log(tem0/t_ice)+fac1) / rvgas + else +! compute es over water between 0c and 102c. + fac1 = fac0*Lv0 + fac2 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas + endif + fac2 = e00*exp(fac2) + table2(i) = fac2 + enddo + +!---------- +! smoother +!---------- + i0 = 1600; i1 = 1601 + tem0 = 0.25*(table2(i0-1) + 2.*table(i0) + table2(i0+1)) + tem1 = 0.25*(table2(i1-1) + 2.*table(i1) + table2(i1+1)) + table2(i0) = tem0 + table2(i1) = tem1 + + end subroutine qs_table2 + end module fv_cmp_mod diff --git a/model/get_diff.sh b/model/get_diff.sh new file mode 100755 index 000000000..5f824c5a1 --- /dev/null +++ b/model/get_diff.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/model' + +ofile='ALLDIFF_JAN03' +if [ -f $ofile ] ; then + rm $ofile +fi +touch -a $ofile + + +for myfile in *.*90 ; do + echo "-----------------------$myfile-----------------------" >> $ofile + diff -w $myfile $rdir/$myfile >> $ofile + echo $myfile +done + + + + diff --git a/model/get_diff.sh~ b/model/get_diff.sh~ new file mode 100755 index 000000000..ac0715036 --- /dev/null +++ b/model/get_diff.sh~ @@ -0,0 +1,20 @@ +#!/bin/bash + +rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/model' + +ofile='ALLDIFF_JAN02' +if [ -f $ofile ] ; then + rm $ofile +fi +touch -a $ofile + + +for myfile in *.*90 ; do + echo "-----------------------$myfile-----------------------" >> $ofile + diff $myfile $rdir/$myfile >> $ofile + echo $myfile +done + + + + diff --git a/tools/ALLDIFF b/tools/ALLDIFF_DEC30 similarity index 100% rename from tools/ALLDIFF rename to tools/ALLDIFF_DEC30 diff --git a/tools/ALLDIFF_JAN02 b/tools/ALLDIFF_JAN02 new file mode 100644 index 000000000..6a83bf5ec --- /dev/null +++ b/tools/ALLDIFF_JAN02 @@ -0,0 +1,1050 @@ +-----------------------external_ic.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +2202d2200 +< !call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) +2235c2233 +< ! gzc is height +--- +> ! gzc is geopotential +2239d2236 +< !gz(km+1) = gzc(i,j)*grav +-----------------------external_sst.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_diagnostics.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +294c293 +< call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') +--- +> call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') +296d294 +< +502c500 +< 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) +--- +> 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) +589a588 +> +732a732 +> +777a778 +> +2276,2277c2277 +< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & +< & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS +--- +> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS +2322c2322 +< ! 250-mb +--- +> ! 250-mb +2349c2349 +< if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km.ne.0)) then +--- +> if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km .ne. 0 )) then +2495c2495 +< x850(:,:) = x850(:,:)*a2(:,:) +--- +> x850(:,:) = x850(:,:)*a2(:,:) +2674,2865c2674,2864 +< allocate ( a4(isc:iec,jsc:jec,npz) ) +< +< ! zonal moisture flux +< if(idiag%id_uq > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uq, a4, Time) +< if(idiag%id_iuq > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuq, a2, Time) +< endif +< endif +< ! meridional moisture flux +< if(idiag%id_vq > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vq, a4, Time) +< if(idiag%id_ivq > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivq, a2, Time) +< endif +< endif +< +< ! zonal heat flux +< if(idiag%id_ut > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_ut, a4, Time) +< if(idiag%id_iut > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iut, a2, Time) +< endif +< endif +< ! meridional heat flux +< if(idiag%id_vt > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vt, a4, Time) +< if(idiag%id_ivt > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivt, a2, Time) +< endif +< endif +< +< ! zonal flux of u +< if(idiag%id_uu > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uu, a4, Time) +< if(idiag%id_iuu > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuu, a2, Time) +< endif +< endif +< ! zonal flux of v +< if(idiag%id_uv > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uv, a4, Time) +< if(idiag%id_iuv > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuv, a2, Time) +< endif +< endif +< ! meridional flux of v +< if(idiag%id_vv > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vv, a4, Time) +< if(idiag%id_ivv > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivv, a2, Time) +< endif +< endif +< +< ! terms related with vertical wind ( Atm(n)%w ): +< if(.not.Atm(n)%flagstruct%hydrostatic) then +< ! vertical moisture flux +< if(idiag%id_wq > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_wq, a4, Time) +< if(idiag%id_iwq > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iwq, a2, Time) +< endif +< endif +< ! vertical heat flux +< if(idiag%id_wt > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_wt, a4, Time) +< if(idiag%id_iwt > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iwt, a2, Time) +< endif +< endif +< ! zonal flux of w +< if(idiag%id_uw > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_uw, a4, Time) +< if(idiag%id_iuw > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iuw, a2, Time) +< endif +< endif +< ! meridional flux of w +< if(idiag%id_vw > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_vw, a4, Time) +< if(idiag%id_ivw > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_ivw, a2, Time) +< endif +< endif +< ! vertical flux of w +< if(idiag%id_ww > 0) then +< do k=1,npz +< do j=jsc,jec +< do i=isc,iec +< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) +< enddo +< enddo +< enddo +< used=send_data(idiag%id_ww, a4, Time) +< if(idiag%id_iww > 0) then +< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +< used=send_data(idiag%id_iww, a2, Time) +< endif +< endif +< endif +< +< deallocate ( a4 ) +< +< +--- +> allocate ( a4(isc:iec,jsc:jec,npz) ) +> +> ! zonal moisture flux +> if(idiag%id_uq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uq, a4, Time) +> if(idiag%id_iuq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuq, a2, Time) +> endif +> endif +> ! meridional moisture flux +> if(idiag%id_vq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vq, a4, Time) +> if(idiag%id_ivq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivq, a2, Time) +> endif +> endif +> +> ! zonal heat flux +> if(idiag%id_ut > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_ut, a4, Time) +> if(idiag%id_iut > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iut, a2, Time) +> endif +> endif +> ! meridional heat flux +> if(idiag%id_vt > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vt, a4, Time) +> if(idiag%id_ivt > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivt, a2, Time) +> endif +> endif +> +> ! zonal flux of u +> if(idiag%id_uu > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uu, a4, Time) +> if(idiag%id_iuu > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuu, a2, Time) +> endif +> endif +> ! zonal flux of v +> if(idiag%id_uv > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uv, a4, Time) +> if(idiag%id_iuv > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuv, a2, Time) +> endif +> endif +> ! meridional flux of v +> if(idiag%id_vv > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vv, a4, Time) +> if(idiag%id_ivv > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivv, a2, Time) +> endif +> endif +> +> ! terms related with vertical wind ( Atm(n)%w ): +> if(.not.Atm(n)%flagstruct%hydrostatic) then +> ! vertical moisture flux +> if(idiag%id_wq > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_wq, a4, Time) +> if(idiag%id_iwq > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iwq, a2, Time) +> endif +> endif +> ! vertical heat flux +> if(idiag%id_wt > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_wt, a4, Time) +> if(idiag%id_iwt > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iwt, a2, Time) +> endif +> endif +> ! zonal flux of w +> if(idiag%id_uw > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_uw, a4, Time) +> if(idiag%id_iuw > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iuw, a2, Time) +> endif +> endif +> ! meridional flux of w +> if(idiag%id_vw > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_vw, a4, Time) +> if(idiag%id_ivw > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_ivw, a2, Time) +> endif +> endif +> ! vertical flux of w +> if(idiag%id_ww > 0) then +> do k=1,npz +> do j=jsc,jec +> do i=isc,iec +> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) +> enddo +> enddo +> enddo +> used=send_data(idiag%id_ww, a4, Time) +> if(idiag%id_iww > 0) then +> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) +> used=send_data(idiag%id_iww, a2, Time) +> endif +> endif +> endif +> +> deallocate ( a4 ) +> +-----------------------fv_eta.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +674c673 +< data a49/ & +--- +> data a49/ & +-----------------------fv_grid_tools.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_io.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_mp_mod.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nggps_diag.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nudge.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_restart.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_surf_map.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +481d479 +< !real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) +550d547 +< !real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) +699d695 +< !ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) +703d698 +< !ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) +761d755 +< !ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) +766d759 +< !ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) +-----------------------fv_timing.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------init_hydro.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sim_nc_mod.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sorted_index.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------test_cases.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/tools/ALLDIFF_JAN03 b/tools/ALLDIFF_JAN03 new file mode 100644 index 000000000..bd2ac0609 --- /dev/null +++ b/tools/ALLDIFF_JAN03 @@ -0,0 +1,643 @@ +-----------------------external_ic.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +2202d2200 +< !call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) +2235c2233 +< ! gzc is height +--- +> ! gzc is geopotential +2239d2236 +< !gz(km+1) = gzc(i,j)*grav +-----------------------external_sst.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_diagnostics.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +296d294 +< +589a588 +> +732a732 +> +777a778 +> +2276,2277c2277 +< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & +< & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS +--- +> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS +2865d2864 +< +-----------------------fv_eta.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_grid_tools.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_io.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_mp_mod.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nggps_diag.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_nudge.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_restart.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------fv_surf_map.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +481d479 +< !real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) +550d547 +< !real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) +699d695 +< !ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) +703d698 +< !ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) +761d755 +< !ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) +766d759 +< !ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) +-----------------------fv_timing.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------init_hydro.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sim_nc_mod.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------sorted_index.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * +-----------------------test_cases.F90----------------------- +2,19c2,18 +< !* GNU Lesser General Public License +< !* +< !* This file is part of the FV3 dynamical core. +< !* +< !* The FV3 dynamical core is free software: you can redistribute it +< !* and/or modify it under the terms of the +< !* GNU Lesser General Public License as published by the +< !* Free Software Foundation, either version 3 of the License, or +< !* (at your option) any later version. +< !* +< !* The FV3 dynamical core is distributed in the hope that it will be +< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +< !* See the GNU General Public License for more details. +< !* +< !* You should have received a copy of the GNU Lesser General Public +< !* License along with the FV3 dynamical core. +< !* If not, see . +--- +> !* GNU General Public License * +> !* This file is a part of fvGFS. * +> !* * +> !* fvGFS is free software; you can redistribute it and/or modify it * +> !* and are expected to follow the terms of the GNU General Public * +> !* License as published by the Free Software Foundation; either * +> !* version 2 of the License, or (at your option) any later version. * +> !* * +> !* fvGFS is distributed in the hope that it will be useful, but * +> !* WITHOUT ANY WARRANTY; without even the implied warranty of * +> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +> !* General Public License for more details. * +> !* * +> !* For the full text of the GNU General Public License, * +> !* write to: Free Software Foundation, Inc., * +> !* 675 Mass Ave, Cambridge, MA 02139, USA. * +> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/tools/external_ic.F90 b/tools/external_ic.F90 index 3cf4cf8f0..299178d24 100644 --- a/tools/external_ic.F90 +++ b/tools/external_ic.F90 @@ -2198,7 +2198,8 @@ subroutine remap_scalar(im, jm, km, npz, nq, ncnst, ak0, bk0, psc, gzc, ta, qa, endif call prt_maxmin('ZS_FV3', Atm%phis, is, ie, js, je, 3, 1, 1./grav) - call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) + call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1./grav) + !call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) call prt_maxmin('PS_Data', psc, is, ie, js, je, 0, 1, 0.01) call prt_maxmin('T_Data', ta, is, ie, js, je, 0, km, 1.) call prt_maxmin('q_Data', qa(is:ie,js:je,1:km,1), is, ie, js, je, 0, km, 1.) @@ -2234,7 +2235,8 @@ subroutine remap_scalar(im, jm, km, npz, nq, ncnst, ak0, bk0, psc, gzc, ta, qa, ! gzc is height ! Note the following line, gz is actully Z (from Jeff's data). - gz(km+1) = gzc(i,j)*grav + gz(km+1) = gzc(i,j) + !gz(km+1) = gzc(i,j)*grav do k=km,1,-1 gz(k) = gz(k+1) + rdgas*tp(i,k)*(pn0(i,k+1)-pn0(i,k)) enddo diff --git a/tools/fv_diagnostics.F90 b/tools/fv_diagnostics.F90 index e3b573b1b..fe674fd65 100644 --- a/tools/fv_diagnostics.F90 +++ b/tools/fv_diagnostics.F90 @@ -28,7 +28,7 @@ module fv_diagnostics_mod use mpp_domains_mod, only: domain2d, mpp_update_domains, DGRID_NE use diag_manager_mod, only: diag_axis_init, register_diag_field, & register_static_field, send_data, diag_grid_init, & - diag_field_add_attribute + diag_field_add_attribute use fv_arrays_mod, only: fv_atmos_type, fv_grid_type, fv_diag_type, fv_grid_bounds_type, & R_GRID !!! CLEANUP needs rem oval? @@ -79,7 +79,7 @@ module fv_diagnostics_mod public :: fv_diag_init, fv_time, fv_diag, prt_mxm, prt_maxmin, range_check!, id_divg, id_te public :: prt_mass, prt_minmax, ppme, fv_diag_init_gn, z_sum, sphum_ll_fix, eqv_pot, qcly0, gn - public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity + public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity integer, parameter :: nplev = 31 integer :: levs(nplev) @@ -156,7 +156,7 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) #ifdef HIWPP trange = (/ 5., 350. /) ! temperature #else - trange = (/ 100., 400. /) ! temperature + trange = (/ 100., 400. /) ! temperature #endif slprange = (/800., 1200./) ! sea-level-pressure @@ -290,13 +290,13 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) 'latitude', 'degrees_N' ) id_area = register_static_field ( trim(field), 'area', axes(1:2), & 'cell area', 'm**2' ) - if (id_area > 0) then - call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') - endif + if (id_area > 0) then + call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') + endif #ifndef DYNAMICS_ZS idiag%id_zsurf = register_static_field ( trim(field), 'zsurf', axes(1:2), & - 'surface height', 'm', interp_method='conserve_order1' ) + 'surface height', 'm', interp_method='conserve_order1' ) #endif idiag%id_zs = register_static_field ( trim(field), 'zs', axes(1:2), & 'Original Mean Terrain', 'm' ) @@ -433,7 +433,7 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) ! Surface pressure !------------------- idiag%id_ps = register_diag_field ( trim(field), 'ps', axes(1:2), Time, & - 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) + 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) !------------------- ! Mountain torque @@ -491,15 +491,15 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) all(idiag%id_h(minloc(abs(levs-500)))>0) .or. all(idiag%id_h(minloc(abs(levs-700)))>0) .or. & all(idiag%id_h(minloc(abs(levs-850)))>0) .or. all(idiag%id_h(minloc(abs(levs-925)))>0) .or. & all(idiag%id_h(minloc(abs(levs-1000)))>0) ) then - idiag%id_hght = 1 + idiag%id_hght = 1 else - idiag%id_hght = 0 + idiag%id_hght = 0 endif !----------------------------- ! mean temp between 300-500 mb !----------------------------- idiag%id_tm = register_diag_field (trim(field), 'tm', axes(1:2), Time, & - 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) + 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) !------------------- ! Sea-level-pressure @@ -722,7 +722,7 @@ subroutine fv_diag_init(Atm, axes, Time, npx, npy, npz, p_ref) ! 850-mb vorticity !-------------------------- idiag%id_vort850 = register_diag_field ( trim(field), 'vort850', axes(1:2), Time, & - '850-mb vorticity', '1/s', missing_value=missing_value ) + '850-mb vorticity', '1/s', missing_value=missing_value) if ( .not. Atm(n)%flagstruct%hydrostatic ) & idiag%id_w200 = register_diag_field ( trim(field), 'w200', axes(1:2), Time, & @@ -1004,7 +1004,7 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) integer :: isd, ied, jsd, jed, npz, itrac integer :: ngc, nwater - real, allocatable :: a2(:,:),a3(:,:,:),a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) + real, allocatable :: a2(:,:),a3(:,:,:), a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) real, allocatable :: slp(:,:), depress(:,:), ws_max(:,:), tc_count(:,:) real, allocatable :: u2(:,:), v2(:,:), x850(:,:), var1(:,:), var2(:,:), var3(:,:) real, allocatable :: dmmr(:,:,:), dvmr(:,:,:) @@ -2274,7 +2274,7 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) endif if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & - & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then + & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS if (.not.allocated(wz)) allocate ( wz(isc:iec,jsc:jec,npz+1) ) if ( Atm(n)%flagstruct%hydrostatic) then rgrav = 1. / grav @@ -2315,9 +2315,9 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) if(prt_minmax) call prt_maxmin('rain5km', a2, isc, iec, jsc, jec, 0, 1, 1.) endif if ( idiag%id_w200>0 ) then - call interpolate_vertical(isc, iec, jsc, jec, npz, & - 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) - used=send_data(idiag%id_w200, a2, Time) + call interpolate_vertical(isc, iec, jsc, jec, npz, & + 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) + used=send_data(idiag%id_w200, a2, Time) endif ! 250-mb if ( idiag%id_w5km>0 ) then @@ -2492,9 +2492,9 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) used=send_data(idiag%id_omg_plev, a3(isc:iec,jsc:jec,:), Time) endif if ( idiag%id_x850>0 .and. idiag%id_vort850>0 ) then - x850(:,:) = x850(:,:)*a2(:,:) - used=send_data(idiag%id_x850, x850, Time) - deallocate ( x850 ) + x850(:,:) = x850(:,:)*a2(:,:) + used=send_data(idiag%id_x850, x850, Time) + deallocate ( x850 ) endif if( allocated(a3) ) deallocate (a3) @@ -2565,7 +2565,7 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) enddo enddo else - call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/),& + call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/), & isc, iec, jsc, jec, ngc, npz, Atm(n)%flagstruct%hydrostatic, Atm(n)%flagstruct%moist_phys) endif diff --git a/tools/fv_eta.F90 b/tools/fv_eta.F90 index 9ac52d324..9f2cf78d6 100644 --- a/tools/fv_eta.F90 +++ b/tools/fv_eta.F90 @@ -1580,7 +1580,7 @@ subroutine var_les(km, ak, bk, ptop, ks, pint, s_rate) real ep, es, alpha, beta, gama real, parameter:: akap = 2./7. !---- Tunable parameters: - real:: k_inc = 10 ! # of layers from bottom up to near const dz region + integer:: k_inc = 10 ! # of layers from bottom up to near const dz region real:: s0 = 0.8 ! lowest layer stretch factor !----------------------- real:: s_inc diff --git a/tools/fv_surf_map.F90 b/tools/fv_surf_map.F90 index 457d75ad6..6c10a985a 100644 --- a/tools/fv_surf_map.F90 +++ b/tools/fv_surf_map.F90 @@ -477,7 +477,8 @@ subroutine FV3_zs_filter (bd, isd, ied, jsd, jed, npx, npy, npx_global, & real(kind=R_GRID), intent(in):: grid(isd:ied+1, jsd:jed+1,2) real(kind=R_GRID), intent(in):: agrid(isd:ied, jsd:jed, 2) - real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) + real, intent(IN):: sin_sg(isd:ied,jsd:jed,9) + !real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) real(kind=R_GRID), intent(IN):: stretch_fac logical, intent(IN) :: nested real, intent(inout):: phis(isd:ied,jsd,jed) @@ -545,7 +546,8 @@ subroutine two_delta_filter(npx, npy, q, area, dx, dy, dxa, dya, dxc, dyc, sin_s real, intent(in):: dya(bd%isd:bd%ied, bd%jsd:bd%jed) real, intent(in):: dxc(bd%isd:bd%ied+1,bd%jsd:bd%jed) real, intent(in):: dyc(bd%isd:bd%ied, bd%jsd:bd%jed+1) - real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) + real, intent(in):: sin_sg(bd%isd:bd%ied,bd%jsd:bd%jed,9) + !real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) real, intent(in):: oro(bd%isd:bd%ied, bd%jsd:bd%jed) ! 0==water, 1==land logical, intent(in):: zero_ocean, check_slope logical, intent(in):: nested @@ -693,10 +695,12 @@ subroutine two_delta_filter(npx, npy, q, area, dx, dy, dxa, dya, dxc, dyc, sin_s do i=is,ie+1 ddx(i,j) = (q(i-1,j)-q(i,j))/dxc(i,j) if ( extm(i-1).and.extm(i) ) then - ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) + ddx(i,j) = 0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) + !ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) elseif ( abs(ddx(i,j)) > m_slope ) then fac = min(1., max(0.1,(abs(ddx(i,j))-m_slope)/m_slope ) ) - ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) + ddx(i,j) = fac*0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) + !ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) else ddx(i,j) = 0. endif @@ -754,10 +758,12 @@ subroutine two_delta_filter(npx, npy, q, area, dx, dy, dxa, dya, dxc, dyc, sin_s do i=is,ie ddy(i,j) = (q(i,j-1)-q(i,j))/dyc(i,j) if ( ext2(i,j-1) .and. ext2(i,j) ) then - ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) + !ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) + ddy(i,j) = 0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) elseif ( abs(ddy(i,j))>m_slope ) then fac = min(1., max(0.1,(abs(ddy(i,j))-m_slope)/m_slope)) - ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) + ddy(i,j) = fac*0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) + !ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) else ddy(i,j) = 0. endif diff --git a/tools/get_diff.sh b/tools/get_diff.sh new file mode 100755 index 000000000..4b98c7c9f --- /dev/null +++ b/tools/get_diff.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/tools' + +ofile='ALLDIFF_JAN03' +if [ -f $ofile ] ; then + rm $ofile +fi +touch -a $ofile + + +for myfile in *.*90 ; do + echo "-----------------------$myfile-----------------------" >> $ofile + diff -w $myfile $rdir/$myfile >> $ofile + echo $myfile +done + + + + From a040780910abb04e887712929695f596ccd90c2f Mon Sep 17 00:00:00 2001 From: Mikyung Lee Date: Fri, 3 Jan 2020 10:30:58 -0500 Subject: [PATCH 4/9] removed temporary files --- GFDL_tools/ALLDIFF_DEC30 | 319 ----------- GFDL_tools/ALLDIFF_JAN02 | 158 ------ GFDL_tools/ALLDIFF_JAN03 | 112 ---- GFDL_tools/get_diff.sh | 20 - driver/GFDL/ALLDIFF_JAN03 | 32 -- driver/GFDL/get_diff.sh | 20 - model/ALLDIFF_DEC30 | 967 ------------------------------- model/ALLDIFF_JAN02 | 649 --------------------- model/ALLDIFF_JAN03 | 642 --------------------- model/get_diff.sh | 20 - tools/ALLDIFF_DEC30 | 1125 ------------------------------------- tools/ALLDIFF_JAN02 | 1050 ---------------------------------- tools/ALLDIFF_JAN03 | 643 --------------------- tools/get_diff.sh | 20 - 14 files changed, 5777 deletions(-) delete mode 100644 GFDL_tools/ALLDIFF_DEC30 delete mode 100644 GFDL_tools/ALLDIFF_JAN02 delete mode 100644 GFDL_tools/ALLDIFF_JAN03 delete mode 100755 GFDL_tools/get_diff.sh delete mode 100644 driver/GFDL/ALLDIFF_JAN03 delete mode 100755 driver/GFDL/get_diff.sh delete mode 100644 model/ALLDIFF_DEC30 delete mode 100644 model/ALLDIFF_JAN02 delete mode 100644 model/ALLDIFF_JAN03 delete mode 100755 model/get_diff.sh delete mode 100644 tools/ALLDIFF_DEC30 delete mode 100644 tools/ALLDIFF_JAN02 delete mode 100644 tools/ALLDIFF_JAN03 delete mode 100755 tools/get_diff.sh diff --git a/GFDL_tools/ALLDIFF_DEC30 b/GFDL_tools/ALLDIFF_DEC30 deleted file mode 100644 index 2696e52e3..000000000 --- a/GFDL_tools/ALLDIFF_DEC30 +++ /dev/null @@ -1,319 +0,0 @@ ----------------------------fv_ada_nudge.F90------------------ -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ----------------------------fv_climate_nudge.F90------------------ -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ----------------------------fv_cmip_diag.F90------------------ -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -39c19 -< use constants_mod, only: GRAV, RDGAS ---- -> use constants_mod, only: GRAV, RDGAS -44,45c24,25 -< get_height_given_pressure, & -< rh_calc, get_height_field, get_vorticity ---- -> get_height_given_pressure, rh_calc, & -> get_height_field, get_vorticity -76d55 -< -174,176d152 -< ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & -< 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') -< -185a162,164 -> ID_wa = register_cmip_diag_field_3d (mod_name, 'wa', Time, & -> 'Upward Air Velocity', 'm s-1', standard_name='upward_air_velocity') -> -245a225 -> -263c243 -< area=area_id, interp_method='conserve_order1') ---- -> area=area_id, interp_method='conserve_order1') -291c271 -< '700 hPa Average', 'Pa', standard_name='air_pressure') ---- -> '700 hPa Average', 'Pa', standard_name='air_pressure') -293,304c273,284 -< call diag_field_add_attribute (id_pl700, 'axis', 'Z') -< call diag_field_add_attribute (id_pl700, 'positive', 'down' ) -< call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) -< ! add bounds -< id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') -< id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & -< '700 hPa boundaries', 'Pa', standard_name='air_pressure') -< if (id_pl700_bnds > 0) then -< call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) -< used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) -< endif -< used = send_data (id_pl700, 700.e2, Time) ---- -> call diag_field_add_attribute (id_pl700, 'axis', 'Z') -> call diag_field_add_attribute (id_pl700, 'positive', 'down' ) -> call diag_field_add_attribute (id_pl700, 'comment', 'average at levels 600,700,850 hPa' ) -> ! add bounds -> id_nv = diag_axis_init('nv', (/1.,2./), 'none', 'N', 'vertex number', set_name='nv') -> id_pl700_bnds = register_static_field (mod_name, 'pl700_bnds', (/id_nv,null_axis_id/), & -> '700 hPa boundaries', 'Pa', standard_name='air_pressure') -> if (id_pl700_bnds > 0) then -> call diag_field_add_attribute (id_pl700, 'bounds', 'pl700_bnds' ) -> used = send_data (id_pl700_bnds, (/850.e2,600.e2/), Time) -> endif -> used = send_data (id_pl700, 700.e2, Time) -307d286 -< -360a340 -> -362c342 -< 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') ---- -> 'Relative Vorticity at 200 hPa', 's-1', standard_name='atmosphere_relative_vorticity') -364,365c344,345 -< call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') -< ---- -> call diag_field_add_attribute (id_rv200, 'coordinates', 'p200') -> -367c347 -< 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') ---- -> 'Relative Vorticity at 500 hPa', 's-1', standard_name='atmosphere_relative_vorticity') -369c349 -< call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') ---- -> call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') -371,374c351,354 -< id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & -< 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') -< if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & -< call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') ---- -> id_rv850 = register_cmip_diag_field_2d (mod_name, 'rv850', Time, & -> 'Relative Vorticity at 850 hPa', 's-1', standard_name='atmosphere_relative_vorticity') -> if (id_rv850 > 0 .and. id_plevels(id_p850) > 0) & -> call diag_field_add_attribute (id_rv850, 'coordinates', 'p850') -377c357 -< ---- -> -379,380c359,360 -< 'Mean Relative Vorticity over 600-850 hPa', 's-1', & -< standard_name='atmosphere_relative_vorticity') ---- -> 'Mean Relative Vorticity over 600-850 hPa', 's-1', & -> standard_name='atmosphere_relative_vorticity') -382,383c362,363 -< call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') -< ---- -> call diag_field_add_attribute (id_vortmean, 'coordinates', 'pl700') -> -430c410 -< logical :: compute_wa . compute_rh ---- -> logical :: compute_rh, compute_wa -435d414 -< -441c420 -< Atm(1)%npz) :: rhum, wa, rv ---- -> Atm(1)%npz) :: rhum, wa, rv -460c439 -< ! set flags for computing quantities ---- -> ! set flags for computing quantities -462c441 -< compute_wa = .false. ---- -> compute_wa = .false. -464,465c443,444 -< if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. -< ---- -> if (count(ID_wa%field_id(:)>0) > 0) compute_wa = .true. -> -467c446 -< if ( compute_rh .or. compute_wa ) then ---- -> if (compute_rh .or. compute_wa) then -475,477c454,456 -< if( compute_rh) then -< call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & -< Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) ---- -> if (compute_rh) then -> call rh_calc (pfull, Atm(n)%pt(isc:iec,jsc:jec,k), & -> Atm(n)%q(isc:iec,jsc:jec,k,sphum), rhum(isc:iec,jsc:jec,k), do_cmip=.true.) -480,483c459,462 -< if (compute_wa) then -< wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & -< pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) -< endif ---- -> if (compute_wa) then -> wa(isc:iec,jsc:jec,k) = -(Atm(n)%omga(isc:iec,jsc:jec,k)*Atm(n)%pt(isc:iec,jsc:jec,k)/ & -> pfull(isc:iec,jsc:jec))*(RDGAS/GRAV) -> endif -486a466 -> -493c473 -< ! relative vorticity ---- -> ! relative vorticity -495,498c475,477 -< call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & -< Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) -< endif -< ---- -> call get_vorticity(isc, iec, jsc, jec, Atm(n)%bd%isd, Atm(n)%bd%ied, Atm(n)%bd%jsd, Atm(n)%bd%jed, npz, & -> Atm(n)%u, Atm(n)%v, rv, Atm(n)%gridstruct%dx, Atm(n)%gridstruct%dy, Atm(n)%gridstruct%rarea) -> endif -527,529c506,508 -< ! vertical velocity -< if (query_cmip_diag_id(ID_wa)) & -< used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) ---- -> ! vertical velocity -> if (query_cmip_diag_id(ID_wa)) & -> used = send_cmip_data_3d (ID_wa, wa(isc:iec,jsc:jec,:), Time, phalf=Atm(n)%peln, opt=1) -578,584c557,563 -< !---------------------------------------------------------------------- -< ! stratiform cloud tracers (only on model levels) -< -< if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) -< if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) -< if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) -< ---- -> !---------------------------------------------------------------------- -> ! stratiform cloud tracers (only on model levels) -> -> if (query_cmip_diag_id(ID_cls)) used = send_cmip_data_3d (ID_cls, Atm(n)%q(isc:iec,jsc:jec,:,nqa)*100., Time) -> if (query_cmip_diag_id(ID_clws)) used = send_cmip_data_3d (ID_clws, Atm(n)%q(isc:iec,jsc:jec,:,nql), Time) -> if (query_cmip_diag_id(ID_clis)) used = send_cmip_data_3d (ID_clis, Atm(n)%q(isc:iec,jsc:jec,:,nqi), Time) -> -649,650c628,629 -< call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) -< used = send_data (id_rv200, dat2, Time) ---- -> call interpolate_vertical (isc, iec, jsc, jec, npz, 200.e2, Atm(n)%peln, rv, dat2) -> used = send_data (id_rv200, dat2, Time) -652c631 -< ---- -> -654,655c633,634 -< call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) -< used = send_data (id_rv500, dat2, Time) ---- -> call interpolate_vertical (isc, iec, jsc, jec, npz, 500.e2, Atm(n)%peln, rv, dat2) -> used = send_data (id_rv500, dat2, Time) -657,665c636,644 -< -< if (id_rv850 > 0 .or. id_vortmean > 0 ) then -< call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) -< if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) -< if (id_vortmean > 0) then -< call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) -< call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) -< used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) -< endif ---- -> -> if (id_rv850 > 0 .or. id_vortmean > 0) then -> call interpolate_vertical (isc, iec, jsc, jec, npz, 850.e2, Atm(n)%peln, rv, rv850) -> if (id_rv850 > 0) used = send_data (id_rv850, rv850, Time) -> if (id_vortmean > 0) then -> call interpolate_vertical (isc, iec, jsc, jec, npz, 600.e2, Atm(n)%peln, rv, rv600) -> call interpolate_vertical (isc, iec, jsc, jec, npz, 700.e2, Atm(n)%peln, rv, rv700) -> used = send_data (id_vortmean, (rv600+rv700+rv850)/3., Time) -> endif -667c646 -< ---- -> ----------------------------read_climate_nudge_data.F90------------------ -1,20c1 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ---- -> diff --git a/GFDL_tools/ALLDIFF_JAN02 b/GFDL_tools/ALLDIFF_JAN02 deleted file mode 100644 index bccfdff25..000000000 --- a/GFDL_tools/ALLDIFF_JAN02 +++ /dev/null @@ -1,158 +0,0 @@ ------------------------fv_ada_nudge.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ------------------------fv_climate_nudge.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ------------------------fv_cmip_diag.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -44,45c24,25 -< get_height_given_pressure, & -< rh_calc, get_height_field, get_vorticity ---- -> get_height_given_pressure, rh_calc, & -> get_height_field, get_vorticity -76d55 -< -173c152 -< ---- -> -245a225 -> -307d286 -< -360a340 -> -365c345 -< ---- -> -369c349 -< call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') ---- -> call diag_field_add_attribute (id_rv500, 'coordinates', 'p500') -377c357 -< ---- -> -383c363 -< ---- -> -430c410 -< logical :: compute_wa , compute_rh ---- -> logical :: compute_rh, compute_wa -435d414 -< -465c444 -< ---- -> -467c446 -< if (compute_rh .or. compute_wa) then ---- -> if (compute_rh .or. compute_wa) then -486a466 -> -583c563 -< ---- -> -651c631 -< ---- -> -656,657c636,637 -< -< if (id_rv850 > 0 .or. id_vortmean > 0 ) then ---- -> -> if (id_rv850 > 0 .or. id_vortmean > 0) then -666c646 -< ---- -> ------------------------read_climate_nudge_data.F90----------------------- -1,20c1 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ---- -> diff --git a/GFDL_tools/ALLDIFF_JAN03 b/GFDL_tools/ALLDIFF_JAN03 deleted file mode 100644 index fe1b5b28b..000000000 --- a/GFDL_tools/ALLDIFF_JAN03 +++ /dev/null @@ -1,112 +0,0 @@ ------------------------fv_ada_nudge.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ------------------------fv_climate_nudge.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ------------------------fv_cmip_diag.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -44,45c24,25 -< get_height_given_pressure, & -< rh_calc, get_height_field, get_vorticity ---- -> get_height_given_pressure, rh_calc, & -> get_height_field, get_vorticity -76d55 -< -245a225 -> -307d286 -< -360a340 -> -430c410 -< logical :: compute_wa , compute_rh ---- -> logical :: compute_rh, compute_wa -435d414 -< -486a466 -> ------------------------read_climate_nudge_data.F90----------------------- -1,20c1 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** ---- -> diff --git a/GFDL_tools/get_diff.sh b/GFDL_tools/get_diff.sh deleted file mode 100755 index a34269cae..000000000 --- a/GFDL_tools/get_diff.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/GFDL_tools' - -ofile='ALLDIFF_JAN03' -if [ -f $ofile ] ; then - rm $ofile -fi -touch -a $ofile - - -for myfile in *.*90 ; do - echo "-----------------------$myfile-----------------------" >> $ofile - diff -w $myfile $rdir/$myfile >> $ofile - echo $myfile -done - - - - diff --git a/driver/GFDL/ALLDIFF_JAN03 b/driver/GFDL/ALLDIFF_JAN03 deleted file mode 100644 index d1e69effc..000000000 --- a/driver/GFDL/ALLDIFF_JAN03 +++ /dev/null @@ -1,32 +0,0 @@ ------------------------atmosphere.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -489a470 -> !miz -501,503d481 -< -< !miz -< -1196a1175 -> !++VAN -1197a1177 -> !--VAN diff --git a/driver/GFDL/get_diff.sh b/driver/GFDL/get_diff.sh deleted file mode 100755 index e1bfb4184..000000000 --- a/driver/GFDL/get_diff.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/driver/coupled' - -ofile='ALLDIFF_JAN03' -if [ -f $ofile ] ; then - rm $ofile -fi -touch -a $ofile - - -for myfile in *.*90 ; do - echo "-----------------------$myfile-----------------------" >> $ofile - diff -w $myfile $rdir/$myfile >> $ofile - echo $myfile -done - - - - diff --git a/model/ALLDIFF_DEC30 b/model/ALLDIFF_DEC30 deleted file mode 100644 index b684dcc52..000000000 --- a/model/ALLDIFF_DEC30 +++ /dev/null @@ -1,967 +0,0 @@ -a2b_edge.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -boundary.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -dyn_core.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_arrays.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -57c56 -< id_pfhy, id_pfnh, & ---- -> id_pfhy, id_pfnh, & -59c58,63 -< id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km ---- -> id_acly, id_acl, id_acl2, id_dbz, id_maxdbz, id_basedbz, id_dbz4km, & -> id_uq, id_vq, id_wq, id_iuq, id_ivq, id_iwq, & ! moisture flux & vertical integral -> id_ut, id_vt, id_wt, id_iut, id_ivt, id_iwt, & ! heat flux -> id_uu, id_uv, id_uw, id_vv, id_vw, id_ww, & ! momentum flux -> id_iuu, id_iuv, id_iuw, id_ivv, id_ivw, id_iww ! vertically integral of momentum flux -> -71,72c75,76 -< integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & -< id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 ---- -> integer :: id_rh10, id_rh50, id_rh100, id_rh200, id_rh250, id_rh300, & -> id_rh500, id_rh700, id_rh850, id_rh925, id_rh1000 -fv_cmp.F90 -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -24d3 -< use fms_mod, only: error_mesg, FATAL -28a8,35 -> real, parameter:: cv_vap = 3.*rvgas ! 1384.8 -> real, parameter:: cv_air = cp_air - rdgas ! = rdgas * (7/2-1) = 2.5*rdgas=717.68 -> ! 2050 at 0 deg C; 1972 at -15 C; 1818. at -40 C -> ! real, parameter:: c_ice = 2106. ! heat capacity of ice at 0.C (same as IFS) -> ! real, parameter:: c_liq = 4218. ! ECMWF-IFS at 0 deg C -> real, parameter:: c_ice = 1972. ! -15 C -> real, parameter:: c_liq = 4.1855e+3 ! GFS, at 15 deg C -> real, parameter:: cp_vap = cp_vapor ! 4*rv_gas=1846. -> real, parameter:: dc_vap = cp_vap - c_liq ! = -2344. isobaric heating/cooling -> real, parameter:: dc_ice = c_liq - c_ice ! = 2084 -> real, parameter:: tice = 273.16 -> real, parameter:: t_wfr = tice - 40. -> ! Values at 0 Deg C -> real, parameter:: hlv0 = 2.5e6 -> real, parameter:: hlf0 = 3.3358e5 -> ! Latent heat at absolute zero: -> real, parameter:: Lv0 = hlv0 - dc_vap*tice ! = 3.141264e6 -> real, parameter:: li00 = hlf0 - dc_ice*tice ! = -2.355446e5 -> ! Li (T=113) ~ 0. -> !!! real(kind=R_GRID), parameter:: e00 = 610.71 ! saturation vapor pressure at T0 -> real(kind=R_GRID), parameter:: e00 = 611.21 ! IFS: saturation vapor pressure at T0 -> real(kind=R_GRID), parameter:: d2ice = cp_vap - c_ice -> real(kind=R_GRID), parameter:: Li2 = hlv0+hlf0 - d2ice*tice -> ! Local: -> real:: dw_ocean = 0.12 ! This parameter is different from that in major MP -> real:: crevp(5), lat2 -> real, allocatable:: table(:), table2(:), tablew(:), des2(:), desw(:) -> real:: d0_vap, lv00 -30,31c37,40 -< private -< public fv_sat_adj, qs_init ---- -> logical:: mp_initialized = .false. -> -> private -> public fv_sat_adj, qs_init -37a47,49 -> ! This is designed for 6-class micro-physics schemes; handles the heat release -> ! due to in situ phase changes -> ! input pt is T_vir -52a65,178 -> !--- -> real, dimension(is:ie):: wqsat, dq2dt, qpz, cvm, t0, pt1, icp2, lcp2, tcp2, tcp3, & -> den, q_liq, q_sol, src, hvar -> real, dimension(is:ie):: mc_air, lhl, lhi ! latent heat -> real:: sink, qsw, rh, fac_v2l, fac_l2v -> real:: tc, qsi, dqsdt, dq, dq0, pidep, qi_crt, tmp, dtmp -> real:: condensates, tin, qstar, rqi, q_plus, q_minus -> real:: sdt, dt_Bigg, adj_fac, fac_s, fac_r, fac_i2s, fac_mlt, fac_l2r -> real:: factor, qim, tice0, c_air, c_vap -> integer i,j -> -> -> end subroutine fv_sat_adj -> -> -> real function wqs1(ta, den) -> ! Pure water phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = tablew(it) + (ap1-it)*desw(it) -> wqs1 = es / (rvgas*ta*den) -> -> end function wqs1 -> -> real function iqs1(ta, den) -> ! water-ice phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = table2(it) + (ap1-it)*des2(it) -> iqs1 = es / (rvgas*ta*den) -> -> end function iqs1 -> -> -> real function wqs2(ta, den, dqdt) -> ! Pure water phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> real, intent(out):: dqdt -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = tablew(it) + (ap1-it)*desw(it) -> wqs2 = es / (rvgas*ta*den) -> it = ap1 - 0.5 -> ! Finite diff, del_T = 0.1: -> dqdt = 10.*(desw(it) + (ap1-it)*(desw(it+1)-desw(it))) / (rvgas*ta*den) -> -> end function wqs2 -> -> subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt) -> ! Pure water phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> integer, intent(in):: is, ie -> real, intent(in), dimension(is:ie):: ta, den -> real, intent(out), dimension(is:ie):: wqsat, dqdt -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer i, it -> -> do i=is, ie -> ap1 = 10.*dim(ta(i), tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = tablew(it) + (ap1-it)*desw(it) -> wqsat(i) = es / (rvgas*ta(i)*den(i)) -> it = ap1 - 0.5 -> ! Finite diff, del_T = 0.1: -> dqdt(i) = 10.*(desw(it)+(ap1-it)*(desw(it+1)-desw(it)))/(rvgas*ta(i)*den(i)) -> enddo -> -> end subroutine wqs2_vect -> -> -> -> real function iqs2(ta, den, dqdt) -> ! water-ice phase; universal dry/moist formular using air density -> ! Input "den" can be either dry or moist air density -> real, intent(in):: ta, den -> real, intent(out):: dqdt -> ! local: -> real es, ap1 -> real, parameter:: tmin=tice - 160. -> integer it -> -> ap1 = 10.*dim(ta, tmin) + 1. -> ap1 = min(2621., ap1) -> it = ap1 -> es = table2(it) + (ap1-it)*des2(it) -> iqs2 = es / (rvgas*ta*den) -> it = ap1 - 0.5 -> dqdt = 10.*(des2(it) + (ap1-it)*(des2(it+1)-des2(it))) / (rvgas*ta*den) -54,56c180 -< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) -< -< end subroutine fv_sat_adj ---- -> end function iqs2 -60a185,230 -> integer, parameter:: length=2621 -> real, parameter:: rhor = 1.0e3 ! LFO83 -> real, parameter:: vdifu = 2.11e-5 -> real, parameter:: tcond = 2.36e-2 -> real, parameter:: visk = 1.259e-5 -> real, parameter:: hltc = 2.5e6 -> real, parameter:: gam290 = 1.827363 -> real, parameter:: gam380 = 4.694155 -> real, parameter:: alin = 842.0 -> !Intercept parameters -> real, parameter:: rnzr = 8.0e6 -> real, parameter:: c_cracw = 0.9 ! rain accretion efficiency -> real:: scm3, act2 -> integer i -> -> if ( mp_initialized ) return -> if (is_master()) write(*,*) 'Top layer for GFDL_MP=', kmp -> -> lat2 = (hlv + hlf) ** 2 -> -> scm3 = (visk/vdifu)**(1./3.) -> act2 = pi * rnzr * rhor -> -> crevp(1) = 2.*pi*vdifu*tcond*rvgas*rnzr -> crevp(2) = 0.78/sqrt(act2) -> crevp(3) = 0.31*scm3*gam290*sqrt(alin/visk)/act2**0.725 -> crevp(4) = tcond*rvgas -> crevp(5) = hltc**2*vdifu -> -> ! generate es table (dt = 0.1 deg. c) -> allocate ( table (length) ) -> allocate ( table2(length) ) -> allocate ( tablew(length) ) -> allocate ( des2(length) ) -> allocate ( desw(length) ) -> -> call qs_table (length ) -> call qs_table2(length ) -> call qs_tablew(length ) -> -> do i=1,length-1 -> des2(i) = max(0., table2(i+1) - table2(i)) -> desw(i) = max(0., tablew(i+1) - tablew(i)) -> enddo -> des2(length) = des2(length-1) -> desw(length) = desw(length-1) -62c232 -< call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) ---- -> mp_initialized = .true. -64a235,336 -> -> subroutine qs_table(n) -> integer, intent(in):: n -> real(kind=R_GRID):: esupc(200) -> real(kind=R_GRID):: tmin, tem, esh20 -> real(kind=R_GRID):: wice, wh2o, t_ice -> real(kind=R_GRID):: delt=0.1 -> integer i -> -> ! constants -> t_ice = tice -> -> ! compute es over ice between -160c and 0 c. -> tmin = t_ice - 160. -> do i=1,1600 -> tem = tmin+delt*real(i-1) -> table(i) = e00*exp((d2ice*log(tem/t_ice)+Li2*(tem-t_ice)/(tem*t_ice))/rvgas) -> enddo -> -> ! compute es over water between -20c and 102c. -> do i=1,1221 -> tem = 253.16+delt*real(i-1) -> esh20 = e00*exp((dc_vap*log(tem/t_ice)+Lv0*(tem-t_ice)/(tem*t_ice))/rvgas) -> if (i <= 200) then -> esupc(i) = esh20 -> else -> table(i+1400) = esh20 -> endif -> enddo -> -> ! derive blended es over ice and supercooled water between -20c and 0c -> do i=1,200 -> tem = 253.16+delt*real(i-1) -> wice = 0.05*(t_ice-tem) -> wh2o = 0.05*(tem-253.16) -> table(i+1400) = wice*table(i+1400)+wh2o*esupc(i) -> enddo -> -> end subroutine qs_table -> -> subroutine qs_tablew(n) -> ! Over water -> integer, intent(in):: n -> real(kind=R_GRID), parameter:: delt=0.1 -> real(kind=R_GRID):: tmin -> real(kind=R_GRID):: tem0, t_ice, fac1 -> integer i -> -> ! constants -> t_ice = tice -> tmin = t_ice - 160. -> do i=1,n -> tem0 = tmin + delt*real(i-1) -> ! compute es over water -> fac1 = Lv0*(tem0-t_ice) / (tem0*t_ice) -> fac1 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas -> fac1 = e00*exp(fac1) -> tablew(i) = fac1 -> enddo -> -> end subroutine qs_tablew -> -> -> subroutine qs_table2(n) -> ! 2-phase table -> integer, intent(in):: n -> real(kind=R_GRID):: delt=0.1 -> real(kind=R_GRID):: tmin -> real(kind=R_GRID):: tem0, tem1, t_ice, fac0, fac1, fac2 -> integer:: i, i0, i1 -> -> ! constants -> t_ice = tice -> tmin = t_ice - 160. -> -> ! High-precision computation: -> do i=1,n -> tem0 = tmin+delt*real(i-1) -> fac0 = (tem0-t_ice) / (tem0*t_ice) -> if ( i<= 1600 ) then -> ! compute es over ice between -160c and 0 c. -> fac1 = fac0*Li2 -> fac2 = (d2ice*log(tem0/t_ice)+fac1) / rvgas -> else -> ! compute es over water between 0c and 102c. -> fac1 = fac0*Lv0 -> fac2 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas -> endif -> fac2 = e00*exp(fac2) -> table2(i) = fac2 -> enddo -> -> !---------- -> ! smoother -> !---------- -> i0 = 1600; i1 = 1601 -> tem0 = 0.25*(table2(i0-1) + 2.*table(i0) + table2(i0+1)) -> tem1 = 0.25*(table2(i1-1) + 2.*table(i1) + table2(i1+1)) -> table2(i0) = tem0 -> table2(i1) = tem1 -> -> end subroutine qs_table2 -fv_control.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_current_grid.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_dynamics.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_fill.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_grid_utils.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_mapz.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_nesting.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_sg.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_tracer2d.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -fv_update_phys.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -sw_core.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -tp_core.F90 -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/model/ALLDIFF_JAN02 b/model/ALLDIFF_JAN02 deleted file mode 100644 index f49dd5b06..000000000 --- a/model/ALLDIFF_JAN02 +++ /dev/null @@ -1,649 +0,0 @@ ------------------------a2b_edge.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------boundary.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------dyn_core.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_arrays.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_cmp.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -24d3 -< ! use fms_mod, only: error_mesg, FATAL -29d7 -< -87c65 -< !--- ---- -> !--- -98d75 -< ! call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) -100c77,78 -< end subroutine fv_sat_adj ---- -> end subroutine fv_sat_adj -> -135a114 -> -316a296 -> ------------------------fv_control.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_current_grid.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_dynamics.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_fill.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_grid_utils.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_mapz.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nesting.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_sg.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_tracer2d.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_update_phys.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sw_core.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------tp_core.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/model/ALLDIFF_JAN03 b/model/ALLDIFF_JAN03 deleted file mode 100644 index 15aab809f..000000000 --- a/model/ALLDIFF_JAN03 +++ /dev/null @@ -1,642 +0,0 @@ ------------------------a2b_edge.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------boundary.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------dyn_core.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_arrays.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_cmp.F90----------------------- -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -24d3 -< ! use fms_mod, only: error_mesg, FATAL -29d7 -< -98d75 -< ! call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) -101a79 -> -135a114 -> -316a296 -> ------------------------fv_control.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_current_grid.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_dynamics.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_fill.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_grid_utils.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_mapz.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nesting.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_sg.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_tracer2d.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_update_phys.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sw_core.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------tp_core.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/model/get_diff.sh b/model/get_diff.sh deleted file mode 100755 index 5f824c5a1..000000000 --- a/model/get_diff.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/model' - -ofile='ALLDIFF_JAN03' -if [ -f $ofile ] ; then - rm $ofile -fi -touch -a $ofile - - -for myfile in *.*90 ; do - echo "-----------------------$myfile-----------------------" >> $ofile - diff -w $myfile $rdir/$myfile >> $ofile - echo $myfile -done - - - - diff --git a/tools/ALLDIFF_DEC30 b/tools/ALLDIFF_DEC30 deleted file mode 100644 index a6241b2a8..000000000 --- a/tools/ALLDIFF_DEC30 +++ /dev/null @@ -1,1125 +0,0 @@ ------------------------external_ic.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -2201c2200 -< call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) ---- -> call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1./grav) -2234c2233 -< ! gzc is height ---- -> ! gzc is geopotential -2237c2236 -< gz(km+1) = gzc(i,j)*grav ---- -> gz(km+1) = gzc(i,j) ------------------------external_sst.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_diagnostics.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -31c30 -< diag_field_add_attribute ---- -> diag_field_add_attribute -82c81 -< public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity ---- -> public :: get_height_given_pressure, interpolate_vertical, rh_calc, get_height_field, get_vorticity -159c158 -< trange = (/ 100., 400. /) ! temperature ---- -> trange = (/ 100., 400. /) ! temperature -293,296c292,294 -< if (id_area > 0) then -< call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') -< endif -< ---- -> if (id_area > 0) then -> call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') -> endif -299c297 -< 'surface height', 'm', interp_method='conserve_order1' ) ---- -> 'surface height', 'm', interp_method='conserve_order1' ) -436c434 -< 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) ---- -> 'surface pressure', 'Pa', missing_value=missing_value, range=(/40000.0, 110000.0/)) -494c492 -< idiag%id_hght = 1 ---- -> idiag%id_hght = 1 -496c494 -< idiag%id_hght = 0 ---- -> idiag%id_hght = 0 -502c500 -< 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) ---- -> 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) -589a588 -> -725c724 -< '850-mb vorticity', '1/s', missing_value=missing_value ) ---- -> '850-mb vorticity', '1/s', missing_value=missing_value) -732a732 -> -777a778 -> -1007c1008 -< real, allocatable :: a2(:,:),a3(:,:,:),a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) ---- -> real, allocatable :: a2(:,:),a3(:,:,:), a4(:,:,:), wk(:,:,:), wz(:,:,:), ucoor(:,:,:), vcoor(:,:,:) -2276,2277c2277 -< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & -< & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then ---- -> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS -2318,2320c2318,2320 -< call interpolate_vertical(isc, iec, jsc, jec, npz, & -< 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) -< used=send_data(idiag%id_w200, a2, Time) ---- -> call interpolate_vertical(isc, iec, jsc, jec, npz, & -> 200.e2, Atm(n)%peln, Atm(n)%w(isc:iec,jsc:jec,:), a2) -> used=send_data(idiag%id_w200, a2, Time) -2322c2322 -< ! 250-mb ---- -> ! 250-mb -2349c2349 -< if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km.ne.0)) then ---- -> if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km .ne. 0 )) then -2495,2497c2495,2497 -< x850(:,:) = x850(:,:)*a2(:,:) -< used=send_data(idiag%id_x850, x850, Time) -< deallocate ( x850 ) ---- -> x850(:,:) = x850(:,:)*a2(:,:) -> used=send_data(idiag%id_x850, x850, Time) -> deallocate ( x850 ) -2568c2568 -< call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/),& ---- -> call eqv_pot(a3, Atm(n)%pt, Atm(n)%delp, Atm(n)%delz, Atm(n)%peln, Atm(n)%pkz, (/Atm(n)%q(isd,jsd,1,sphum)/), & -2674,2865c2674,2864 -< allocate ( a4(isc:iec,jsc:jec,npz) ) -< -< ! zonal moisture flux -< if(idiag%id_uq > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uq, a4, Time) -< if(idiag%id_iuq > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuq, a2, Time) -< endif -< endif -< ! meridional moisture flux -< if(idiag%id_vq > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vq, a4, Time) -< if(idiag%id_ivq > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivq, a2, Time) -< endif -< endif -< -< ! zonal heat flux -< if(idiag%id_ut > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_ut, a4, Time) -< if(idiag%id_iut > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iut, a2, Time) -< endif -< endif -< ! meridional heat flux -< if(idiag%id_vt > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vt, a4, Time) -< if(idiag%id_ivt > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivt, a2, Time) -< endif -< endif -< -< ! zonal flux of u -< if(idiag%id_uu > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uu, a4, Time) -< if(idiag%id_iuu > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuu, a2, Time) -< endif -< endif -< ! zonal flux of v -< if(idiag%id_uv > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uv, a4, Time) -< if(idiag%id_iuv > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuv, a2, Time) -< endif -< endif -< ! meridional flux of v -< if(idiag%id_vv > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vv, a4, Time) -< if(idiag%id_ivv > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivv, a2, Time) -< endif -< endif -< -< ! terms related with vertical wind ( Atm(n)%w ): -< if(.not.Atm(n)%flagstruct%hydrostatic) then -< ! vertical moisture flux -< if(idiag%id_wq > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_wq, a4, Time) -< if(idiag%id_iwq > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iwq, a2, Time) -< endif -< endif -< ! vertical heat flux -< if(idiag%id_wt > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_wt, a4, Time) -< if(idiag%id_iwt > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iwt, a2, Time) -< endif -< endif -< ! zonal flux of w -< if(idiag%id_uw > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uw, a4, Time) -< if(idiag%id_iuw > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuw, a2, Time) -< endif -< endif -< ! meridional flux of w -< if(idiag%id_vw > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vw, a4, Time) -< if(idiag%id_ivw > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivw, a2, Time) -< endif -< endif -< ! vertical flux of w -< if(idiag%id_ww > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_ww, a4, Time) -< if(idiag%id_iww > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iww, a2, Time) -< endif -< endif -< endif -< -< deallocate ( a4 ) -< -< ---- -> allocate ( a4(isc:iec,jsc:jec,npz) ) -> -> ! zonal moisture flux -> if(idiag%id_uq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uq, a4, Time) -> if(idiag%id_iuq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuq, a2, Time) -> endif -> endif -> ! meridional moisture flux -> if(idiag%id_vq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vq, a4, Time) -> if(idiag%id_ivq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivq, a2, Time) -> endif -> endif -> -> ! zonal heat flux -> if(idiag%id_ut > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_ut, a4, Time) -> if(idiag%id_iut > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iut, a2, Time) -> endif -> endif -> ! meridional heat flux -> if(idiag%id_vt > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vt, a4, Time) -> if(idiag%id_ivt > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivt, a2, Time) -> endif -> endif -> -> ! zonal flux of u -> if(idiag%id_uu > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uu, a4, Time) -> if(idiag%id_iuu > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuu, a2, Time) -> endif -> endif -> ! zonal flux of v -> if(idiag%id_uv > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uv, a4, Time) -> if(idiag%id_iuv > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuv, a2, Time) -> endif -> endif -> ! meridional flux of v -> if(idiag%id_vv > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vv, a4, Time) -> if(idiag%id_ivv > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivv, a2, Time) -> endif -> endif -> -> ! terms related with vertical wind ( Atm(n)%w ): -> if(.not.Atm(n)%flagstruct%hydrostatic) then -> ! vertical moisture flux -> if(idiag%id_wq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_wq, a4, Time) -> if(idiag%id_iwq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iwq, a2, Time) -> endif -> endif -> ! vertical heat flux -> if(idiag%id_wt > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_wt, a4, Time) -> if(idiag%id_iwt > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iwt, a2, Time) -> endif -> endif -> ! zonal flux of w -> if(idiag%id_uw > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uw, a4, Time) -> if(idiag%id_iuw > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuw, a2, Time) -> endif -> endif -> ! meridional flux of w -> if(idiag%id_vw > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vw, a4, Time) -> if(idiag%id_ivw > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivw, a2, Time) -> endif -> endif -> ! vertical flux of w -> if(idiag%id_ww > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_ww, a4, Time) -> if(idiag%id_iww > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iww, a2, Time) -> endif -> endif -> endif -> -> deallocate ( a4 ) -> ------------------------fv_eta.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -674c673 -< data a49/ & ---- -> data a49/ & -1583c1582 -< real:: k_inc = 10 ! # of layers from bottom up to near const dz region ---- -> integer:: k_inc = 10 ! # of layers from bottom up to near const dz region ------------------------fv_grid_tools.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_io.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_mp_mod.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nggps_diag.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nudge.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_restart.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_surf_map.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -480c479 -< real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) ---- -> real, intent(IN):: sin_sg(isd:ied,jsd:jed,9) -548c547 -< real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) ---- -> real, intent(in):: sin_sg(bd%isd:bd%ied,bd%jsd:bd%jed,9) -696c695 -< ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) ---- -> ddx(i,j) = 0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) -699c698 -< ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) ---- -> ddx(i,j) = fac*0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) -757c756 -< ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) ---- -> ddy(i,j) = 0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) -760c759 -< ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) ---- -> ddy(i,j) = fac*0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) ------------------------fv_timing.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------init_hydro.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sim_nc_mod.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sorted_index.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------test_cases.F90----------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/tools/ALLDIFF_JAN02 b/tools/ALLDIFF_JAN02 deleted file mode 100644 index 6a83bf5ec..000000000 --- a/tools/ALLDIFF_JAN02 +++ /dev/null @@ -1,1050 +0,0 @@ ------------------------external_ic.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -2202d2200 -< !call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) -2235c2233 -< ! gzc is height ---- -> ! gzc is geopotential -2239d2236 -< !gz(km+1) = gzc(i,j)*grav ------------------------external_sst.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_diagnostics.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -294c293 -< call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') ---- -> call diag_field_add_attribute (id_area, 'cell_methods', 'area: sum') -296d294 -< -502c500 -< 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) ---- -> 'mean 300-500 mb temp', 'K', missing_value=missing_value, range=(/140.0,400.0/) ) -589a588 -> -732a732 -> -777a778 -> -2276,2277c2277 -< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & -< & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS ---- -> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS -2322c2322 -< ! 250-mb ---- -> ! 250-mb -2349c2349 -< if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km.ne.0)) then ---- -> if ( rainwat > 0 .and. (idiag%id_dbz>0 .or. idiag%id_maxdbz>0 .or. idiag%id_basedbz>0 .or. idiag%id_dbz4km .ne. 0 )) then -2495c2495 -< x850(:,:) = x850(:,:)*a2(:,:) ---- -> x850(:,:) = x850(:,:)*a2(:,:) -2674,2865c2674,2864 -< allocate ( a4(isc:iec,jsc:jec,npz) ) -< -< ! zonal moisture flux -< if(idiag%id_uq > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uq, a4, Time) -< if(idiag%id_iuq > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuq, a2, Time) -< endif -< endif -< ! meridional moisture flux -< if(idiag%id_vq > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vq, a4, Time) -< if(idiag%id_ivq > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivq, a2, Time) -< endif -< endif -< -< ! zonal heat flux -< if(idiag%id_ut > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_ut, a4, Time) -< if(idiag%id_iut > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iut, a2, Time) -< endif -< endif -< ! meridional heat flux -< if(idiag%id_vt > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vt, a4, Time) -< if(idiag%id_ivt > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivt, a2, Time) -< endif -< endif -< -< ! zonal flux of u -< if(idiag%id_uu > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uu, a4, Time) -< if(idiag%id_iuu > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuu, a2, Time) -< endif -< endif -< ! zonal flux of v -< if(idiag%id_uv > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uv, a4, Time) -< if(idiag%id_iuv > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuv, a2, Time) -< endif -< endif -< ! meridional flux of v -< if(idiag%id_vv > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vv, a4, Time) -< if(idiag%id_ivv > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivv, a2, Time) -< endif -< endif -< -< ! terms related with vertical wind ( Atm(n)%w ): -< if(.not.Atm(n)%flagstruct%hydrostatic) then -< ! vertical moisture flux -< if(idiag%id_wq > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_wq, a4, Time) -< if(idiag%id_iwq > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iwq, a2, Time) -< endif -< endif -< ! vertical heat flux -< if(idiag%id_wt > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_wt, a4, Time) -< if(idiag%id_iwt > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iwt, a2, Time) -< endif -< endif -< ! zonal flux of w -< if(idiag%id_uw > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_uw, a4, Time) -< if(idiag%id_iuw > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iuw, a2, Time) -< endif -< endif -< ! meridional flux of w -< if(idiag%id_vw > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_vw, a4, Time) -< if(idiag%id_ivw > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_ivw, a2, Time) -< endif -< endif -< ! vertical flux of w -< if(idiag%id_ww > 0) then -< do k=1,npz -< do j=jsc,jec -< do i=isc,iec -< a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) -< enddo -< enddo -< enddo -< used=send_data(idiag%id_ww, a4, Time) -< if(idiag%id_iww > 0) then -< call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -< used=send_data(idiag%id_iww, a2, Time) -< endif -< endif -< endif -< -< deallocate ( a4 ) -< -< ---- -> allocate ( a4(isc:iec,jsc:jec,npz) ) -> -> ! zonal moisture flux -> if(idiag%id_uq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uq, a4, Time) -> if(idiag%id_iuq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuq, a2, Time) -> endif -> endif -> ! meridional moisture flux -> if(idiag%id_vq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vq, a4, Time) -> if(idiag%id_ivq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivq, a2, Time) -> endif -> endif -> -> ! zonal heat flux -> if(idiag%id_ut > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_ut, a4, Time) -> if(idiag%id_iut > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iut, a2, Time) -> endif -> endif -> ! meridional heat flux -> if(idiag%id_vt > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vt, a4, Time) -> if(idiag%id_ivt > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivt, a2, Time) -> endif -> endif -> -> ! zonal flux of u -> if(idiag%id_uu > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%ua(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uu, a4, Time) -> if(idiag%id_iuu > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuu, a2, Time) -> endif -> endif -> ! zonal flux of v -> if(idiag%id_uv > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%va(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uv, a4, Time) -> if(idiag%id_iuv > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuv, a2, Time) -> endif -> endif -> ! meridional flux of v -> if(idiag%id_vv > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%va(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vv, a4, Time) -> if(idiag%id_ivv > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivv, a2, Time) -> endif -> endif -> -> ! terms related with vertical wind ( Atm(n)%w ): -> if(.not.Atm(n)%flagstruct%hydrostatic) then -> ! vertical moisture flux -> if(idiag%id_wq > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%q(i,j,k,sphum) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_wq, a4, Time) -> if(idiag%id_iwq > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iwq, a2, Time) -> endif -> endif -> ! vertical heat flux -> if(idiag%id_wt > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%pt(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_wt, a4, Time) -> if(idiag%id_iwt > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iwt, a2, Time) -> endif -> endif -> ! zonal flux of w -> if(idiag%id_uw > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%ua(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_uw, a4, Time) -> if(idiag%id_iuw > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iuw, a2, Time) -> endif -> endif -> ! meridional flux of w -> if(idiag%id_vw > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%va(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_vw, a4, Time) -> if(idiag%id_ivw > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_ivw, a2, Time) -> endif -> endif -> ! vertical flux of w -> if(idiag%id_ww > 0) then -> do k=1,npz -> do j=jsc,jec -> do i=isc,iec -> a4(i,j,k) = Atm(n)%w(i,j,k) * Atm(n)%w(i,j,k) -> enddo -> enddo -> enddo -> used=send_data(idiag%id_ww, a4, Time) -> if(idiag%id_iww > 0) then -> call z_sum(isc, iec, jsc, jec, npz, 0, Atm(n)%delp(isc:iec,jsc:jec,1:npz), a4, a2) -> used=send_data(idiag%id_iww, a2, Time) -> endif -> endif -> endif -> -> deallocate ( a4 ) -> ------------------------fv_eta.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -674c673 -< data a49/ & ---- -> data a49/ & ------------------------fv_grid_tools.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_io.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_mp_mod.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nggps_diag.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nudge.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_restart.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_surf_map.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -481d479 -< !real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) -550d547 -< !real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) -699d695 -< !ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) -703d698 -< !ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) -761d755 -< !ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) -766d759 -< !ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) ------------------------fv_timing.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------init_hydro.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sim_nc_mod.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sorted_index.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------test_cases.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/tools/ALLDIFF_JAN03 b/tools/ALLDIFF_JAN03 deleted file mode 100644 index bd2ac0609..000000000 --- a/tools/ALLDIFF_JAN03 +++ /dev/null @@ -1,643 +0,0 @@ ------------------------external_ic.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -2202d2200 -< !call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) -2235c2233 -< ! gzc is height ---- -> ! gzc is geopotential -2239d2236 -< !gz(km+1) = gzc(i,j)*grav ------------------------external_sst.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_diagnostics.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -296d294 -< -589a588 -> -732a732 -> -777a778 -> -2276,2277c2277 -< if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & -< & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS ---- -> if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 .or. idiag%id_basedbz .ne. 0 .or. idiag%id_dbz4km .ne. 0 ) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS -2865d2864 -< ------------------------fv_eta.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_grid_tools.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_io.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_mp_mod.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nggps_diag.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_nudge.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_restart.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------fv_surf_map.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * -481d479 -< !real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) -550d547 -< !real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) -699d695 -< !ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) -703d698 -< !ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) -761d755 -< !ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) -766d759 -< !ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) ------------------------fv_timing.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------init_hydro.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sim_nc_mod.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------sorted_index.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * ------------------------test_cases.F90----------------------- -2,19c2,18 -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . ---- -> !* GNU General Public License * -> !* This file is a part of fvGFS. * -> !* * -> !* fvGFS is free software; you can redistribute it and/or modify it * -> !* and are expected to follow the terms of the GNU General Public * -> !* License as published by the Free Software Foundation; either * -> !* version 2 of the License, or (at your option) any later version. * -> !* * -> !* fvGFS is distributed in the hope that it will be useful, but * -> !* WITHOUT ANY WARRANTY; without even the implied warranty of * -> !* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -> !* General Public License for more details. * -> !* * -> !* For the full text of the GNU General Public License, * -> !* write to: Free Software Foundation, Inc., * -> !* 675 Mass Ave, Cambridge, MA 02139, USA. * -> !* or see: http://www.gnu.org/licenses/gpl.html * diff --git a/tools/get_diff.sh b/tools/get_diff.sh deleted file mode 100755 index 4b98c7c9f..000000000 --- a/tools/get_diff.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/tools' - -ofile='ALLDIFF_JAN03' -if [ -f $ofile ] ; then - rm $ofile -fi -touch -a $ofile - - -for myfile in *.*90 ; do - echo "-----------------------$myfile-----------------------" >> $ofile - diff -w $myfile $rdir/$myfile >> $ofile - echo $myfile -done - - - - From c491a6219c915c31e74adc406b5e23f089abba6a Mon Sep 17 00:00:00 2001 From: Mikyung Lee Date: Fri, 17 Jan 2020 12:44:18 -0500 Subject: [PATCH 5/9] removed extra & in fv_diagonstics line 2277. --- tools/fv_diagnostics.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fv_diagnostics.F90 b/tools/fv_diagnostics.F90 index fe674fd65..0fdd3c2c2 100644 --- a/tools/fv_diagnostics.F90 +++ b/tools/fv_diagnostics.F90 @@ -2274,7 +2274,7 @@ subroutine fv_diag(Atm, zvir, Time, print_freq) endif if ( idiag%id_u100m>0 .or. idiag%id_v100m>0 .or. idiag%id_w100m>0 .or. idiag%id_w5km>0 .or. idiag%id_w2500m>0 & - & .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS + .or. idiag%id_basedbz.ne.0 .or. idiag%id_dbz4km.ne.0) then !! idiag%id_basedbz and idiag%id_dbz4km are INTEGERS if (.not.allocated(wz)) allocate ( wz(isc:iec,jsc:jec,npz+1) ) if ( Atm(n)%flagstruct%hydrostatic) then rgrav = 1. / grav From 0629a4c3db47e19e64f9863eb3d1a6fca6b64969 Mon Sep 17 00:00:00 2001 From: mlee03 <58964324+mlee03@users.noreply.github.com> Date: Wed, 29 Jan 2020 12:56:45 -0500 Subject: [PATCH 6/9] Delete DIFF_DEC30 --- driver/GFDL/DIFF_DEC30 | 136 ----------------------------------------- 1 file changed, 136 deletions(-) delete mode 100644 driver/GFDL/DIFF_DEC30 diff --git a/driver/GFDL/DIFF_DEC30 b/driver/GFDL/DIFF_DEC30 deleted file mode 100644 index 942cf6d45..000000000 --- a/driver/GFDL/DIFF_DEC30 +++ /dev/null @@ -1,136 +0,0 @@ -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -153,154c133,134 -< type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus -< integer :: nqv, nql, nqi, nqa ---- -> type(cmip_diag_id_type) :: ID_tnta, ID_tnhusa, ID_tnt, ID_tnhus -> integer :: nqv, nql, nqi, nqa -364,370c344,349 -< ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & -< 'Tendency of Air Temperature', 'K s-1', & -< standard_name='tendency_of_air_temperature') -< ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & -< 'Tendency of Specific Humidity', 's-1', & -< standard_name='tendency_of_specific_humidity') -< ---- -> ID_tnt = register_cmip_diag_field_3d (mod_name, 'tnt', Time, & -> 'Tendency of Air Temperature', 'K s-1', & -> standard_name='tendency_of_air_temperature') -> ID_tnhus = register_cmip_diag_field_3d (mod_name, 'tnhus', Time, & -> 'Tendency of Specific Humidity', 's-1', & -> standard_name='tendency_of_specific_humidity') -385c364 -< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & ---- -> if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & -388c367 -< query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) ---- -> query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) allocate(qtend(isc:iec, jsc:jec, 1:npz, 4)) -391,402c370,381 -< ! get tracer number for common moisture tracers -< nqv = get_tracer_index(MODEL_ATMOS,'sphum') -< nql = get_tracer_index(MODEL_ATMOS,'liq_wat') -< nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') -< nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') -< ! could zero out diagnostics if nXX = 0 -< if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & -< 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) -< if (nqv > size(qtend,4)) id_qdt_dyn = 0 -< if (nql > size(qtend,4)) id_qldt_dyn = 0 -< if (nqi > size(qtend,4)) id_qidt_dyn = 0 -< if (nqa > size(qtend,4)) id_qadt_dyn = 0 ---- -> ! get tracer number for common moisture tracers -> nqv = get_tracer_index(MODEL_ATMOS,'sphum') -> nql = get_tracer_index(MODEL_ATMOS,'liq_wat') -> nqi = get_tracer_index(MODEL_ATMOS,'ice_wat') -> nqa = get_tracer_index(MODEL_ATMOS,'cld_amt') -> ! could zero out diagnostics if nXX = 0 -> if (any((/nqv,nql,nqi,nqa/)==0)) call error_mesg ('atmosphere_mod', & -> 'at least one moisture tracer (sphum,liq_wat,ice_wat,cld_amt) does not exist', FATAL ) -> if (nqv > size(qtend,4)) id_qdt_dyn = 0 -> if (nql > size(qtend,4)) id_qldt_dyn = 0 -> if (nqi > size(qtend,4)) id_qidt_dyn = 0 -> if (nqa > size(qtend,4)) id_qadt_dyn = 0 -436c415 -< if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & ---- -> if ( id_tdt_dyn>0 .or. query_cmip_diag_id(ID_tnta) .or. query_cmip_diag_id(ID_tnt) ) & -439,440c418,419 -< query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & -< qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) ---- -> query_cmip_diag_id(ID_tnhusa) .or. query_cmip_diag_id(ID_tnhus) ) & -> qtend(:, :, :, :) = Atm(mytile)%q (isc:iec, jsc:jec, :, 1:size(qtend,4)) -489,502c468,469 -< if ( id_udt_dyn>0 ) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) -< if ( id_vdt_dyn>0 ) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) -< if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) -< if (query_cmip_diag_id(ID_tnta)) & -< used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) -< -< if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -< if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) -< if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) -< if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) -< if (query_cmip_diag_id(ID_tnhusa)) & -< used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -< -< ---- -> if (id_udt_dyn > 0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) -> if (id_vdt_dyn > 0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) -503a471,480 -> if (id_tdt_dyn > 0) used = send_data( id_tdt_dyn, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) -> if (query_cmip_diag_id(ID_tnta)) & -> used = send_cmip_data_3d ( ID_tnta, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) -> -> if (id_qdt_dyn > 0) used = send_data( id_qdt_dyn , (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -> if (id_qldt_dyn > 0) used = send_data( id_qldt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nql)-qtend(:,:,:,nql))/dt_atmos, Time) -> if (id_qidt_dyn > 0) used = send_data( id_qidt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqi)-qtend(:,:,:,nqi))/dt_atmos, Time) -> if (id_qadt_dyn > 0) used = send_data( id_qadt_dyn, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqa)-qtend(:,:,:,nqa))/dt_atmos, Time) -> if (query_cmip_diag_id(ID_tnhusa)) & -> used = send_cmip_data_3d (ID_tnhusa, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -844,845c821,822 -< Atm(mytile)%q(i,j,k,nql) + & -< Atm(mytile)%q(i,j,k,nqi) ) ---- -> Atm(mytile)%q(i,j,k,nql) + & -> Atm(mytile)%q(i,j,k,nqi) ) -955,959c932,935 -< if (query_cmip_diag_id(ID_tnt)) & -< used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) -< if (query_cmip_diag_id(ID_tnhus)) & -< used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -< ---- -> if (query_cmip_diag_id(ID_tnt)) & -> used = send_cmip_data_3d ( ID_tnt, (Atm(mytile)%pt(isc:iec,jsc:jec,:)-ttend(:,:,:))/dt_atmos, Time) -> if (query_cmip_diag_id(ID_tnhus)) & -> used = send_cmip_data_3d (ID_tnhus, (Atm(mytile)%q(isc:iec,jsc:jec,:,nqv)-qtend(:,:,:,nqv))/dt_atmos, Time) -1198a1175,1177 -> !++VAN -> call compute_g_avg(Time, 'ch4', Radiation, Atm_block) -> !--VAN From 5cb5ad18f788dee65ec3acdadcab2591fe31d0f7 Mon Sep 17 00:00:00 2001 From: mlee03 <58964324+mlee03@users.noreply.github.com> Date: Wed, 29 Jan 2020 12:56:59 -0500 Subject: [PATCH 7/9] Delete DIFF_JAN02 --- driver/GFDL/DIFF_JAN02 | 42 ------------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 driver/GFDL/DIFF_JAN02 diff --git a/driver/GFDL/DIFF_JAN02 b/driver/GFDL/DIFF_JAN02 deleted file mode 100644 index a819786ac..000000000 --- a/driver/GFDL/DIFF_JAN02 +++ /dev/null @@ -1,42 +0,0 @@ -1,20d0 -< !*********************************************************************** -< !* GNU Lesser General Public License -< !* -< !* This file is part of the FV3 dynamical core. -< !* -< !* The FV3 dynamical core is free software: you can redistribute it -< !* and/or modify it under the terms of the -< !* GNU Lesser General Public License as published by the -< !* Free Software Foundation, either version 3 of the License, or -< !* (at your option) any later version. -< !* -< !* The FV3 dynamical core is distributed in the hope that it will be -< !* useful, but WITHOUT ANYWARRANTY; without even the implied warranty -< !* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -< !* See the GNU General Public License for more details. -< !* -< !* You should have received a copy of the GNU Lesser General Public -< !* License along with the FV3 dynamical core. -< !* If not, see . -< !*********************************************************************** -488,489c468,470 -< if (id_udt_dyn>0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) -< if (id_vdt_dyn>0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) ---- -> if (id_udt_dyn > 0) used = send_data( id_udt_dyn, 2.0/dt_atmos*Atm(mytile)%ua(isc:iec,jsc:jec,:), Time) -> if (id_vdt_dyn > 0) used = send_data( id_vdt_dyn, 2.0/dt_atmos*Atm(mytile)%va(isc:iec,jsc:jec,:), Time) -> !miz -501,503d481 -< -< !miz -< -843,844c821,822 -< Atm(mytile)%q(i,j,k,nql) + & -< Atm(mytile)%q(i,j,k,nqi) ) ---- -> Atm(mytile)%q(i,j,k,nql) + & -> Atm(mytile)%q(i,j,k,nqi) ) -1196a1175 -> !++VAN -1197a1177 -> !--VAN From 196b3e78814db2c82e294c1329a913774a472c17 Mon Sep 17 00:00:00 2001 From: mlee03 <58964324+mlee03@users.noreply.github.com> Date: Wed, 29 Jan 2020 12:58:26 -0500 Subject: [PATCH 8/9] Delete get_diff.sh~ --- model/get_diff.sh~ | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100755 model/get_diff.sh~ diff --git a/model/get_diff.sh~ b/model/get_diff.sh~ deleted file mode 100755 index ac0715036..000000000 --- a/model/get_diff.sh~ +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -rdir='/ncrc/home1/Mikyung.Lee/awg/xanadu/cm4p12_xanadu00/src/atmos_cubed_sphere/model' - -ofile='ALLDIFF_JAN02' -if [ -f $ofile ] ; then - rm $ofile -fi -touch -a $ofile - - -for myfile in *.*90 ; do - echo "-----------------------$myfile-----------------------" >> $ofile - diff $myfile $rdir/$myfile >> $ofile - echo $myfile -done - - - - From 7a1c35c1aa79e4acda4fac4420adff05e3231b5f Mon Sep 17 00:00:00 2001 From: Mikyung Lee Date: Thu, 30 Jan 2020 10:18:53 -0500 Subject: [PATCH 9/9] reverts model/fv_cmp.F90 to null version; removes extraneous files ; removes commented lines after fixed lines --- model/fv_cmp.F90 | 302 +----------------------------------------- tools/external_ic.F90 | 2 - tools/fv_surf_map.F90 | 6 - 3 files changed, 5 insertions(+), 305 deletions(-) diff --git a/model/fv_cmp.F90 b/model/fv_cmp.F90 index e48f40f06..e607b5b0b 100644 --- a/model/fv_cmp.F90 +++ b/model/fv_cmp.F90 @@ -21,54 +21,20 @@ module fv_cmp_mod use constants_mod, only: pi=>pi_8, rvgas, rdgas, grav, hlv, hlf, cp_air, cp_vapor - ! use fms_mod, only: error_mesg, FATAL + use fms_mod, only: error_mesg, FATAL use fv_mp_mod, only: is_master use fv_arrays_mod, only: R_GRID implicit none - real, parameter:: cv_vap = 3.*rvgas ! 1384.8 - real, parameter:: cv_air = cp_air - rdgas ! = rdgas * (7/2-1) = 2.5*rdgas=717.68 -! 2050 at 0 deg C; 1972 at -15 C; 1818. at -40 C -! real, parameter:: c_ice = 2106. ! heat capacity of ice at 0.C (same as IFS) -! real, parameter:: c_liq = 4218. ! ECMWF-IFS at 0 deg C - real, parameter:: c_ice = 1972. ! -15 C - real, parameter:: c_liq = 4.1855e+3 ! GFS, at 15 deg C - real, parameter:: cp_vap = cp_vapor ! 4*rv_gas=1846. - real, parameter:: dc_vap = cp_vap - c_liq ! = -2344. isobaric heating/cooling - real, parameter:: dc_ice = c_liq - c_ice ! = 2084 - real, parameter:: tice = 273.16 - real, parameter:: t_wfr = tice - 40. -! Values at 0 Deg C - real, parameter:: hlv0 = 2.5e6 - real, parameter:: hlf0 = 3.3358e5 -! Latent heat at absolute zero: - real, parameter:: Lv0 = hlv0 - dc_vap*tice ! = 3.141264e6 - real, parameter:: li00 = hlf0 - dc_ice*tice ! = -2.355446e5 -! Li (T=113) ~ 0. -!!! real(kind=R_GRID), parameter:: e00 = 610.71 ! saturation vapor pressure at T0 - real(kind=R_GRID), parameter:: e00 = 611.21 ! IFS: saturation vapor pressure at T0 - real(kind=R_GRID), parameter:: d2ice = cp_vap - c_ice - real(kind=R_GRID), parameter:: Li2 = hlv0+hlf0 - d2ice*tice -! Local: - real:: dw_ocean = 0.12 ! This parameter is different from that in major MP - real:: crevp(5), lat2 - real, allocatable:: table(:), table2(:), tablew(:), des2(:), desw(:) - real:: d0_vap, lv00 - - logical:: mp_initialized = .false. - - private - public fv_sat_adj, qs_init + private + public fv_sat_adj, qs_init contains subroutine fv_sat_adj(mdt, zvir, is, ie, js, je, ng, hydrostatic, consv_te, & te0, qv, ql, qi, qr, qs, qg, dpln, delz, pt, dp, & q_con, cappa, area, dtdt, out_dt, last_step, do_qa, qa) -! This is designed for 6-class micro-physics schemes; handles the heat release -! due to in situ phase changes -! input pt is T_vir integer, intent(in):: is, ie, js, je, ng real, intent(in):: mdt ! remapping time step real, intent(in):: zvir @@ -84,275 +50,17 @@ subroutine fv_sat_adj(mdt, zvir, is, ie, js, je, ng, hydrostatic, consv_te, & real, intent(inout), dimension(is-ng:,js-ng:):: cappa real, intent(inout)::dtdt(is:ie,js:je) real, intent(out):: te0(is-ng:ie+ng,js-ng:je+ng) -!--- - real, dimension(is:ie):: wqsat, dq2dt, qpz, cvm, t0, pt1, icp2, lcp2, tcp2, tcp3, & - den, q_liq, q_sol, src, hvar - real, dimension(is:ie):: mc_air, lhl, lhi ! latent heat - real:: sink, qsw, rh, fac_v2l, fac_l2v - real:: tc, qsi, dqsdt, dq, dq0, pidep, qi_crt, tmp, dtmp - real:: condensates, tin, qstar, rqi, q_plus, q_minus - real:: sdt, dt_Bigg, adj_fac, fac_s, fac_r, fac_i2s, fac_mlt, fac_l2r - real:: factor, qim, tice0, c_air, c_vap - integer i,j - ! call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) + call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) end subroutine fv_sat_adj - real function wqs1(ta, den) -! Pure water phase; universal dry/moist formular using air density -! Input "den" can be either dry or moist air density - real, intent(in):: ta, den -! local: - real es, ap1 - real, parameter:: tmin=tice - 160. - integer it - - ap1 = 10.*dim(ta, tmin) + 1. - ap1 = min(2621., ap1) - it = ap1 - es = tablew(it) + (ap1-it)*desw(it) - wqs1 = es / (rvgas*ta*den) - - end function wqs1 - - real function iqs1(ta, den) -! water-ice phase; universal dry/moist formular using air density -! Input "den" can be either dry or moist air density - real, intent(in):: ta, den -! local: - real es, ap1 - real, parameter:: tmin=tice - 160. - integer it - - ap1 = 10.*dim(ta, tmin) + 1. - ap1 = min(2621., ap1) - it = ap1 - es = table2(it) + (ap1-it)*des2(it) - iqs1 = es / (rvgas*ta*den) - - end function iqs1 - - real function wqs2(ta, den, dqdt) -! Pure water phase; universal dry/moist formular using air density -! Input "den" can be either dry or moist air density - real, intent(in):: ta, den - real, intent(out):: dqdt -! local: - real es, ap1 - real, parameter:: tmin=tice - 160. - integer it - - ap1 = 10.*dim(ta, tmin) + 1. - ap1 = min(2621., ap1) - it = ap1 - es = tablew(it) + (ap1-it)*desw(it) - wqs2 = es / (rvgas*ta*den) - it = ap1 - 0.5 -! Finite diff, del_T = 0.1: - dqdt = 10.*(desw(it) + (ap1-it)*(desw(it+1)-desw(it))) / (rvgas*ta*den) - - end function wqs2 - - subroutine wqs2_vect(is, ie, ta, den, wqsat, dqdt) -! Pure water phase; universal dry/moist formular using air density -! Input "den" can be either dry or moist air density - integer, intent(in):: is, ie - real, intent(in), dimension(is:ie):: ta, den - real, intent(out), dimension(is:ie):: wqsat, dqdt -! local: - real es, ap1 - real, parameter:: tmin=tice - 160. - integer i, it - - do i=is, ie - ap1 = 10.*dim(ta(i), tmin) + 1. - ap1 = min(2621., ap1) - it = ap1 - es = tablew(it) + (ap1-it)*desw(it) - wqsat(i) = es / (rvgas*ta(i)*den(i)) - it = ap1 - 0.5 -! Finite diff, del_T = 0.1: - dqdt(i) = 10.*(desw(it)+(ap1-it)*(desw(it+1)-desw(it)))/(rvgas*ta(i)*den(i)) - enddo - - end subroutine wqs2_vect - - - - real function iqs2(ta, den, dqdt) -! water-ice phase; universal dry/moist formular using air density -! Input "den" can be either dry or moist air density - real, intent(in):: ta, den - real, intent(out):: dqdt -! local: - real es, ap1 - real, parameter:: tmin=tice - 160. - integer it - - ap1 = 10.*dim(ta, tmin) + 1. - ap1 = min(2621., ap1) - it = ap1 - es = table2(it) + (ap1-it)*des2(it) - iqs2 = es / (rvgas*ta*den) - it = ap1 - 0.5 - dqdt = 10.*(des2(it) + (ap1-it)*(des2(it+1)-des2(it))) / (rvgas*ta*den) - - end function iqs2 - subroutine qs_init(kmp) integer, intent(in):: kmp - integer, parameter:: length=2621 - real, parameter:: rhor = 1.0e3 ! LFO83 - real, parameter:: vdifu = 2.11e-5 - real, parameter:: tcond = 2.36e-2 - real, parameter:: visk = 1.259e-5 - real, parameter:: hltc = 2.5e6 - real, parameter:: gam290 = 1.827363 - real, parameter:: gam380 = 4.694155 - real, parameter:: alin = 842.0 - !Intercept parameters - real, parameter:: rnzr = 8.0e6 - real, parameter:: c_cracw = 0.9 ! rain accretion efficiency - real:: scm3, act2 - integer i - - if ( mp_initialized ) return - if (is_master()) write(*,*) 'Top layer for GFDL_MP=', kmp - lat2 = (hlv + hlf) ** 2 - - scm3 = (visk/vdifu)**(1./3.) - act2 = pi * rnzr * rhor - - crevp(1) = 2.*pi*vdifu*tcond*rvgas*rnzr - crevp(2) = 0.78/sqrt(act2) - crevp(3) = 0.31*scm3*gam290*sqrt(alin/visk)/act2**0.725 - crevp(4) = tcond*rvgas - crevp(5) = hltc**2*vdifu - -! generate es table (dt = 0.1 deg. c) - allocate ( table (length) ) - allocate ( table2(length) ) - allocate ( tablew(length) ) - allocate ( des2(length) ) - allocate ( desw(length) ) - - call qs_table (length ) - call qs_table2(length ) - call qs_tablew(length ) - - do i=1,length-1 - des2(i) = max(0., table2(i+1) - table2(i)) - desw(i) = max(0., tablew(i+1) - tablew(i)) - enddo - des2(length) = des2(length-1) - desw(length) = desw(length-1) - - mp_initialized = .true. + call error_mesg('fv_cmp_mod','saturation adjustment is not available.',FATAL) end subroutine qs_init - subroutine qs_table(n) - integer, intent(in):: n - real(kind=R_GRID):: esupc(200) - real(kind=R_GRID):: tmin, tem, esh20 - real(kind=R_GRID):: wice, wh2o, t_ice - real(kind=R_GRID):: delt=0.1 - integer i - -! constants - t_ice = tice - -! compute es over ice between -160c and 0 c. - tmin = t_ice - 160. - do i=1,1600 - tem = tmin+delt*real(i-1) - table(i) = e00*exp((d2ice*log(tem/t_ice)+Li2*(tem-t_ice)/(tem*t_ice))/rvgas) - enddo - -! compute es over water between -20c and 102c. - do i=1,1221 - tem = 253.16+delt*real(i-1) - esh20 = e00*exp((dc_vap*log(tem/t_ice)+Lv0*(tem-t_ice)/(tem*t_ice))/rvgas) - if (i <= 200) then - esupc(i) = esh20 - else - table(i+1400) = esh20 - endif - enddo - -! derive blended es over ice and supercooled water between -20c and 0c - do i=1,200 - tem = 253.16+delt*real(i-1) - wice = 0.05*(t_ice-tem) - wh2o = 0.05*(tem-253.16) - table(i+1400) = wice*table(i+1400)+wh2o*esupc(i) - enddo - - end subroutine qs_table - - subroutine qs_tablew(n) -! Over water - integer, intent(in):: n - real(kind=R_GRID), parameter:: delt=0.1 - real(kind=R_GRID):: tmin - real(kind=R_GRID):: tem0, t_ice, fac1 - integer i - -! constants - t_ice = tice - tmin = t_ice - 160. - do i=1,n - tem0 = tmin + delt*real(i-1) -! compute es over water - fac1 = Lv0*(tem0-t_ice) / (tem0*t_ice) - fac1 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas - fac1 = e00*exp(fac1) - tablew(i) = fac1 - enddo - - end subroutine qs_tablew - - subroutine qs_table2(n) -! 2-phase table - integer, intent(in):: n - real(kind=R_GRID):: delt=0.1 - real(kind=R_GRID):: tmin - real(kind=R_GRID):: tem0, tem1, t_ice, fac0, fac1, fac2 - integer:: i, i0, i1 - -! constants - t_ice = tice - tmin = t_ice - 160. - -! High-precision computation: - do i=1,n - tem0 = tmin+delt*real(i-1) - fac0 = (tem0-t_ice) / (tem0*t_ice) - if ( i<= 1600 ) then -! compute es over ice between -160c and 0 c. - fac1 = fac0*Li2 - fac2 = (d2ice*log(tem0/t_ice)+fac1) / rvgas - else -! compute es over water between 0c and 102c. - fac1 = fac0*Lv0 - fac2 = (dc_vap*log(tem0/t_ice)+fac1) / rvgas - endif - fac2 = e00*exp(fac2) - table2(i) = fac2 - enddo - -!---------- -! smoother -!---------- - i0 = 1600; i1 = 1601 - tem0 = 0.25*(table2(i0-1) + 2.*table(i0) + table2(i0+1)) - tem1 = 0.25*(table2(i1-1) + 2.*table(i1) + table2(i1+1)) - table2(i0) = tem0 - table2(i1) = tem1 - - end subroutine qs_table2 - end module fv_cmp_mod diff --git a/tools/external_ic.F90 b/tools/external_ic.F90 index 299178d24..556aaa8c0 100644 --- a/tools/external_ic.F90 +++ b/tools/external_ic.F90 @@ -2199,7 +2199,6 @@ subroutine remap_scalar(im, jm, km, npz, nq, ncnst, ak0, bk0, psc, gzc, ta, qa, call prt_maxmin('ZS_FV3', Atm%phis, is, ie, js, je, 3, 1, 1./grav) call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1./grav) - !call prt_maxmin('ZS_GFS', gzc, is, ie, js, je, 0, 1, 1.) call prt_maxmin('PS_Data', psc, is, ie, js, je, 0, 1, 0.01) call prt_maxmin('T_Data', ta, is, ie, js, je, 0, km, 1.) call prt_maxmin('q_Data', qa(is:ie,js:je,1:km,1), is, ie, js, je, 0, km, 1.) @@ -2236,7 +2235,6 @@ subroutine remap_scalar(im, jm, km, npz, nq, ncnst, ak0, bk0, psc, gzc, ta, qa, ! Note the following line, gz is actully Z (from Jeff's data). gz(km+1) = gzc(i,j) - !gz(km+1) = gzc(i,j)*grav do k=km,1,-1 gz(k) = gz(k+1) + rdgas*tp(i,k)*(pn0(i,k+1)-pn0(i,k)) enddo diff --git a/tools/fv_surf_map.F90 b/tools/fv_surf_map.F90 index 6c10a985a..294dd5c0f 100644 --- a/tools/fv_surf_map.F90 +++ b/tools/fv_surf_map.F90 @@ -478,7 +478,6 @@ subroutine FV3_zs_filter (bd, isd, ied, jsd, jed, npx, npy, npx_global, & real(kind=R_GRID), intent(in):: grid(isd:ied+1, jsd:jed+1,2) real(kind=R_GRID), intent(in):: agrid(isd:ied, jsd:jed, 2) real, intent(IN):: sin_sg(isd:ied,jsd:jed,9) - !real, intent(IN):: sin_sg(9,isd:ied,jsd:jed) real(kind=R_GRID), intent(IN):: stretch_fac logical, intent(IN) :: nested real, intent(inout):: phis(isd:ied,jsd,jed) @@ -547,7 +546,6 @@ subroutine two_delta_filter(npx, npy, q, area, dx, dy, dxa, dya, dxc, dyc, sin_s real, intent(in):: dxc(bd%isd:bd%ied+1,bd%jsd:bd%jed) real, intent(in):: dyc(bd%isd:bd%ied, bd%jsd:bd%jed+1) real, intent(in):: sin_sg(bd%isd:bd%ied,bd%jsd:bd%jed,9) - !real, intent(in):: sin_sg(9,bd%isd:bd%ied,bd%jsd:bd%jed) real, intent(in):: oro(bd%isd:bd%ied, bd%jsd:bd%jed) ! 0==water, 1==land logical, intent(in):: zero_ocean, check_slope logical, intent(in):: nested @@ -696,11 +694,9 @@ subroutine two_delta_filter(npx, npy, q, area, dx, dy, dxa, dya, dxc, dyc, sin_s ddx(i,j) = (q(i-1,j)-q(i,j))/dxc(i,j) if ( extm(i-1).and.extm(i) ) then ddx(i,j) = 0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) - !ddx(i,j) = 0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) elseif ( abs(ddx(i,j)) > m_slope ) then fac = min(1., max(0.1,(abs(ddx(i,j))-m_slope)/m_slope ) ) ddx(i,j) = fac*0.5*(sin_sg(i-1,j,3)+sin_sg(i,j,1))*dy(i,j)*ddx(i,j) - !ddx(i,j) = fac*0.5*(sin_sg(3,i-1,j)+sin_sg(1,i,j))*dy(i,j)*ddx(i,j) else ddx(i,j) = 0. endif @@ -758,12 +754,10 @@ subroutine two_delta_filter(npx, npy, q, area, dx, dy, dxa, dya, dxc, dyc, sin_s do i=is,ie ddy(i,j) = (q(i,j-1)-q(i,j))/dyc(i,j) if ( ext2(i,j-1) .and. ext2(i,j) ) then - !ddy(i,j) = 0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) ddy(i,j) = 0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) elseif ( abs(ddy(i,j))>m_slope ) then fac = min(1., max(0.1,(abs(ddy(i,j))-m_slope)/m_slope)) ddy(i,j) = fac*0.5*(sin_sg(i,j-1,4)+sin_sg(i,j,2))*dx(i,j)*ddy(i,j) - !ddy(i,j) = fac*0.5*(sin_sg(4,i,j-1)+sin_sg(2,i,j))*dx(i,j)*ddy(i,j) else ddy(i,j) = 0. endif