Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

The content of "ob.ascii" input to 4dvar is not reflected.


Hello all!

The content of "ob.ascii" input to 4dvar is not reflected. We would like to know how to make it work effectively as an input file.

We have converted "ob.ascii" to input the observation results of the vertical Doppler LIDAR we installed as well as "ob.radar" as input files for 4dvar.

The format on pages 42 and 43 of the following document was used for the conversion.

We ran 4dvar, but the results did not appear to reflect the contents of "ob.ascii.

Checking the log "rsl.out.0000", it seems that 4dvar recognizes "ob.ascii" as an input file and reads "ob.ascii".
Therefore, I believe that the format of the converted "ob.ascii" is correct.

Attached are namelist.input, rsl.out.0000 and a reduced ob.ascii.
The "ob.ascii" has dummy values for testing.

Best regards.


  • namelist.input
    7.7 KB · Views: 0
  • rsl.out.0000
    5.1 MB · Views: 0
  • ob01.ascii.txt
    51.1 KB · Views: 1
Hello all!

When I look at WRFDA Online Tutorial to convert from little_r format to ob.ascii format with obsproc.exe, In the FM code 35-37, there is a required variable Pressure and/or Height.

I interpreted this to mean that Pressure or Height is all that is required.
It is and, not and/or, and does not mean that the Pressure and Height must be present, does it?

We have only the latitude, longitude, altitude, and wind speed of the observation point as observation data.

We are in trouble because we cannot prepare the data if the pressure is required to be imported into 4dvar.

Best regards.
Last edited:
Hello all!

When I rebuilt and ran it again with the -g option, I got the following error. It seems that the error was caused by an accumulation of manipulations outside the array area that had rewritten somewhere.

forrtl: severe (408): fort: (2): Subscript #1 of the array HCOEFF has value 1801 which is greater than the upper bound of 1000
Image              PC                Routine            Line        Source
da_wrfvar.exe      00000000089CA1C5  optfil_driver_            755  dfi.f90
da_wrfvar.exe      0000000009684679  jcdfi_init_coef_           21  jcdfi.f90
da_wrfvar.exe      0000000000604F82  da_4dvar_mp_init_         633  da_4dvar.f
da_wrfvar.exe      000000000058FC50  da_4dvar_mp_da_nl          70  da_4dvar.f
da_wrfvar.exe      000000000055E111  da_wrfvar_top_mp_        3960  da_wrfvar_top.f
da_wrfvar.exe      00000000004E0134  da_wrfvar_top_mp_        2925  da_wrfvar_top.f
da_wrfvar.exe      00000000004DFFF4  da_wrfvar_top_mp_        2895  da_wrfvar_top.f
da_wrfvar.exe      000000000041E90F  MAIN__                     35  da_wrfvar_main.f
da_wrfvar.exe      000000000041E82D  Unknown               Unknown  Unknown       0000148FAC7AE13A  __libc_start_main     Unknown  Unknown
da_wrfvar.exe      000000000041E76A  Unknown               Unknown  Unknown

The above error was resolved by shortening the time 1801 was derived from the target time of 4dvar such as run_hours and run_minutes.

Perhaps our usage does not match 4dvar's design philosophy, but we think 1000 is too little for a time step. Is there any way to extend it?

Best regards.
Hello all!

We did a lot of research, but it seemed impossible, so we decided to come up with a different approach.

Thank you all.
Hello all!

The same thing happens with 3dvar, NaN occurs when ob.ascii is used as input file.

Minimize cost function using CG method

 jo_sound                               NaN
   jo%sound_u                           NaN
   jo%sound_v                           NaN
   jo%sound_t                           NaN
   jo%sound_q            0.000000000000E+00
 jo_sonde_sfc            0.000000000000E+00
   jo%sonde_sfc_u        0.000000000000E+00
   jo%sonde_sfc_v        0.000000000000E+00
   jo%sonde_sfc_t        0.000000000000E+00
   jo%sonde_sfc_p        0.000000000000E+00
   jo%sonde_sfc_q        0.000000000000E+00
   jo%total                           NaN
   jo_sound                             NaN
   jo_sonde_sfc          0.000000000000E+00
   jo_geoamv             0.000000000000E+00
   jo_polaramv           0.000000000000E+00
   jo_synop              0.000000000000E+00
   jo_satem              0.000000000000E+00
   jo_pilot              0.000000000000E+00
   jo_airep              0.000000000000E+00
   jo_metar              0.000000000000E+00
   jo_ships              0.000000000000E+00
   jo_gpspw              0.000000000000E+00
   jo_ssmi_tb            0.000000000000E+00
   jo_ssmi_rv            0.000000000000E+00
   jo_ssmt1              0.000000000000E+00
   jo_ssmt2              0.000000000000E+00
   jo_pseudo             0.000000000000E+00
   jo_qscat              0.000000000000E+00
   jo_profiler           0.000000000000E+00
   jo_buoy               0.000000000000E+00
   jo_radar              0.000000000000E+00
   jo_gpsref             0.000000000000E+00
   jo_gpseph             0.000000000000E+00
   jo_bogus              0.000000000000E+00
   jo_radiance           0.000000000000E+00
   jo_airsr              0.000000000000E+00
   jo_mtgirs             0.000000000000E+00
   jo_tamdar             0.000000000000E+00
   jo_tamdar_sfc         0.000000000000E+00
   jo_rain               0.000000000000E+00
Starting outer iteration :   1
Starting cost function:                    NaN, Gradient=                    NaN
For this outer iteration gradient target is:                          NaN
              Loop Iter     Cost Function              Gradient                   Step
 minimize_cg    1    0                        NaN                        NaN      0.000000000000000D+00

Best regards.
Hello all!

We know the cause at this point.

First, ERROR and QC were set to 0 as test data in ob.ascii, which caused zero division.

Second, we have 281 layers of data, and the logs show that 281 layers were read, but the bottom layer was not read, and 0 was set to the imaginary top layer. The zero division still occurred and an error occurred.

Best Regards.
Hello all!

I understand that the row with the SRFC_FMT data must exist.

So I added the rows with SRFC_FMT as missing values.

Does anyone know if the value to be set to ELEVATION in the INFO_FMT row is a number that includes the SRFC_FMT row?

Best regards.
Hi KiyoTom,
I am trying to assimilate my surface observation (AWS data-wind data) using wrfda(v4.5.2).
I produced the little.r format file using AWS data (F16-SYNOP) and ran the obsproc successfully. The data assimilation module worked successfully but the observation was not assimilated. I am trying to find the reason. I provided surface pressure, altitude, wind speed, direction, temperature and dew point temperature.

Can you please help me to solve this issue.


  • namelist.input
    1.9 KB · Views: 1
  • obs.2024021100.txt
    1.4 MB · Views: 1
  • rsl.error.0000
    844 bytes · Views: 1
  • rsl.out.0000
    2.8 KB · Views: 1
Hi Litta!

Have you checked the contents of the ascii file you converted with obsproc?
Is it possible that you made a mistake in the namelist settings in obsproc and some of the observation data was lost?

If you set print_detail_XXXX in namelist of da to TRUE, it will output the read status of the observation data. You will get a message if the time of the observation data is out of sync with the target time of da, or if the latitude and longitude are out of sync.

Best regards.
Hello KiyoTom,
Thank you for your support!
I solved this issue. there was a mistake in nameless.input date information. I got wrf_var output and the details of the observation assimilated.
I did da_update_bc.exe after getting wrfvar_output. Then I copied wrfbdy_d01 and wrfvar_output wrfinput_d01. Then I ran wrf.exe.
But there is no difference in the wind plot at 00 UTC. Please check the image. Any suggestion?
Thanks and best regards,


  • Screenshot 2024-04-02 at 17.05.31.png
    Screenshot 2024-04-02 at 17.05.31.png
    122.4 KB · Views: 6
  • Screenshot 2024-04-04 at 15.16.04.png
    Screenshot 2024-04-04 at 15.16.04.png
    241.1 KB · Views: 5
Dear KiyoTom,
Thank you for your suggestion. I never used it. I saw some difference here. Why it is not showing in the image?
Thanks and best regards,


  • Screenshot 2024-04-08 at 19.11.41.png
    Screenshot 2024-04-08 at 19.11.41.png
    289.4 KB · Views: 5
Hi Litta!

You have confirmed that 4dvar is able to capture the observation results since there is a difference by comparing the results using diffwrf.

Best regards.
Dear KiyoTom,
Thank you for your suggestions.
I tried for data assimilation (3DVAR). It is worked well. But no difference in the output plot (like SYNOP data assimilation). Please check attachments. It is a different issue I think. Any suggestions.

with best regards,


  • Screenshot 2024-04-11 at 16.41.08.png
    Screenshot 2024-04-11 at 16.41.08.png
    152.3 KB · Views: 1
  • Screenshot 2024-04-11 at 16.40.50.png
    Screenshot 2024-04-11 at 16.40.50.png
    222 KB · Views: 1