[Wrf-users] ECMWF and WRF3

Hálfdán Ágústsson halfdana at hi.is
Tue Jun 24 03:24:44 MDT 2008


Morning

We have a somewhat different solution to this problem, which is the same 
as we have used for initializing MM5 with ECMWF model-level data.

1. We first run cdo "http://www.mpimet.mpg.de/fileadmin/software/cdo/" 
to transform the model-level grib-data to chosen pressure-levels.

2. In addition, we use one or more pressure-level from the ECMWF which 
only has to include the geopotential (which does not come from the 
model-level data).

3. Modfifications to the rrpr.F routine in the ungrib part of WPS 
(similar to pregrid in MM5) inter-/extrapolate the geopotential to the 
levels where it is missing  (using dz=-RT/g dlnp).

4. Then the WPS- and WRF-suites are run as usual when using ECMWF 
pressure-level data.

Regards,
Halfdan





wrfhelp wrote:
> If Ravan can give these suggestions a try and let us know, it would be 
> helpful. Let us know.
> Thanks for helping out,
> 
> wrfhelp
> 
> On Jun 23, 2008, at 11:59 AM, Jean-Louis Monge wrote:
> 
>> On Monday 23 June 2008 17:48:13 Ravan Ahmadov wrote:
>>> Dear all,
>>>
>>> Is someone able to run successfully WPS/WRF3 with ECMWF model level
>>> data? The data which worked in the previous versions of WRF/WPS don't
>>> work with the latest ones.
>>>
>>
>> Hi Ravan,
>>
>> It's a long story, but you can do it. Be patient.
>> Here is a summary of my own fights against wrf-3 and ECMWF model levels.
>> I hope I did not forget too many things.
>>
>> Fisrst, there is a risk of segfault in geogrid, depending on the 
>> compiler you
>> use. It was already present in version 2, so you can skip if you are 
>> happy
>> with it. Here is my diff in WPS/geogrid/src/source_data_module.F :
>> ************************
>> @@ -632 +633,2 @@
>> -            if (ie - is <= 0) ie = 128
>> +            if ((ie - is <= 0) .and. (is <= 128)) then
>> +               ie = 128
>> @@ -633,0 +636 @@
>> +            end if
>> @@ -663 +669,2 @@
>> -            if (ie - is <= 0) ie = 128
>> +            if ((ie - is <= 0) .and. (is <= 128)) then
>> +               ie = 128
>> @@ -664,0 +672 @@
>> +            end if
>> **************************
>>
>> Then, the way they compute PSFC in real.F in WRFV3 is different. To 
>> make it
>> compatible with ECMWF model levels, you have to force the use of 
>> subroutine
>> sfcprs2 in module_interp_real.F. This is done by adding this line to
>> the "domains" section of namelist.input :
>>    sfcp_to_sfcp = .true.
>>
>> Next, if you download lnsp instead of sp from Mars, it works but you 
>> have to
>> modify ungrib.F :
>> *****************************
>> @@ -278 +278,2 @@
>> -           if (((field == "SST").or.(field == "SKINTEMP")) .and. &
>> +           if (((field == "SST").or.(field == "SKINTEMP").or. &
>> +                (field == "LOGSFP")) .and.                    & ! 
>> modif jlm
>> *****************************
>> Finally, I have modified calc_ecmwf_p.F to make it possible to use only a
>> subset of the 96  ECMWF model levels. It saves disk space and download 
>> time.
>> If some people are interested, I will mail them the modified code.
>>
>> Last : do not use "ucmcall = 1,1,1" in the "physics" section of 
>> namelist.input
>> if you use two-way nesting with "input_from_file = .true., .true., 
>> .true."
>> For me, it fills all the fields with NaNs at the first simulation hour.
>>
>> I hope this helps.
>>
>> -- 
>> Jean-Louis Monge
>> Ingénieur-conseil
>> 09 50 51 14 43
>> jeanlouis.monge at free.fr
> 
> _______________________________________________
> Wrf-users mailing list
> Wrf-users at ucar.edu
> http://mailman.ucar.edu/mailman/listinfo/wrf-users


More information about the Wrf-users mailing list