NOAA-EMC / RDASApp

Regional DAS
GNU Lesser General Public License v2.1
1 stars 9 forks source link

Understanding the differences between GSI and JEDI geovals #54

Open delippi opened 3 months ago

delippi commented 3 months ago

In hofx testing, most testing has been done using GSI-IODA file derived from the GSI diagnostic files and forcing JEDI to use GSI derived geovals. When using the fv3jedi executable it is not [currently] possible to force JEDI to use the GSI geovals. The purpose of this issue is to document findings in understanding the differences in how GSI and JEDI compute geovals which lead to slight differences in hofx validation. Those slight differences in hofx validation should be considered "okay" so long as we can show where those differences come from.

delippi commented 3 months ago

For fv3_regional in GSI:guess_grids.F90, the following method is used for computing the layer midpoint pressure (ges_prsl).:

       if (fv3_regional) then
          do jj=1,nfldsig
             do k=1,nsig
                 kp=k+1
                do j=1,lon2
                   do i=1,lat2
                      ges_prsl(i,j,k,jj)=(ges_prsi(i,j,k,jj)+ges_prsi(i,j,kp,jj))*half
                      ges_lnprsl(i,j,k,jj)=log(ges_prsl(i,j,k,jj))

                   end do
                end do
             end do
          end do

There only seems to be [currently] one recipe in VADER for computing air_pressure and that is src/vader/recipes/AirPressure_A.cc. In this recipe the method for computing the layer midpoint pressure (airPressure) is the Phillips method:

        airPressure(hh, vv) = pow(((pow(airPressureLevels(hh, vv+1), kap1) -
                                    pow(airPressureLevels(hh, vv), kap1)) /
                                    (kap1*(airPressureLevels(hh, vv+1) -
                                    airPressureLevels(hh, vv)))), kapr);

A new recipe for air_pressure could be added to match the GSI method for fv3_regional. For now, I modified the current recipe as follows to test my theory:

airPressure(hh, vv) = (airPressureLevels(hh, vv+1) + airPressureLevels(hh, vv)) / 2;

After making this change, I get almost identical results for the first 20 layers or so. There are still differences near the surface. I think perhaps due to the hybrid vcoord? Actually, I'm almost certain that is the case. I'm finding that about the top 20 pressure levels match and the rest do not just by switching the pressure layer midpoint calculation to average of pressure interfaces vs phillips method. I'm thinking that the problem here is going to be similar to the problem with temperature in that maybe there are differences due to 3 vs 4 grid point interpolation. I think it might not be a problem for the top of the model pressure levels because there is no variability at those top levels. For example, at the top of the model the pressure interface would be 200 Pa at every grid point so using 3 vs 4 grid points to interpolate doesn't matter. It wouldn't matter until there starts to be variability when there is variability in the vertical coordinate due to the hybrid coordinate.

prsl_gsi = [755.7465, 1868.048, 2983.182, 4102.358, 5226.591, 6361.438, 7513.978,
    8686.738, 9889.828, 11128.3, 12402.16, 13726.57, 15106.59, 16562.43,
    18134.53, 19868.4, 21799.41, 23937.67, 26313.52, 28932.05, 31763.08,
    34761.34, 37866.24, 41037.25, 44264.14, 47536.71, 50835.7, 54139.8,
    57427.77, 60690.47, 63912.74, 67069.27, 70149.92, 73119.31, 75921.8,
    78521.98, 80899.55, 83054.5, 84976.8, 86676.51, 88178.94, 89488.99,
    90636.95, 91628.1, 92482.77, 93251.43, 93959.38, 94631.98, 95274.23,
    95886.12, 96472.73, 97039.1, 97585.28, 98116.29, 98637.13, 99147.9,
    99648.55, 100139.1, 100623.5, 101105.1]

prsl_jedi = [755.7465, 1868.049, 2983.182, 4102.358, 5226.591, 6361.438, 7513.978,
    8686.738, 9889.828, 11128.3, 12402.16, 13726.57, 15106.59, 16562.43,
    18134.53, 19868.4, 21799.41, 23937.67, 26313.52, 28932.05, 31763.11,
    34761.43, 37866.45, 41037.61, 44264.67, 47537.44, 50836.63, 54140.95,
    57429.14, 60692.07, 63914.55, 67071.3, 70152.17, 73121.77, 75924.45,
    78524.82, 80902.55, 83057.66, 84980.09, 86679.92, 88182.46, 89492.6,
    90640.66, 91631.87, 92486.59, 93255.31, 93963.32, 94635.97, 95278.27,
    95890.2, 96476.84, 97043.26, 97589.48, 98120.53, 98641.41, 99152.21,
    99652.91, 100143.5, 100627.9, 101109.6]