! ! sample write ! use wgrib2api real, allocatable :: grid2(:,:) integer (kind=8) :: date integer, parameter :: size=144*73; real grid(size) character (len=200) :: file, template, template_inv, metadata, var template = 'global_template.g2' file = 'newfile.grb2' template_inv = '@mem:0' ! find grid size to make sure iret = grb2_mk_inv(template, template_inv) if (iret.ne.0) stop 1 ! search using variable and regular date YYYYMMDDHH var = '^1:' iret = grb2_inq(template,template_inv,var,nx=nx,ny=ny,regex=1) if (iret.ne.1) then if (iret.eq.0) write(*,*) 'could not find message' if (iret.gt.1) write(*,*) 'found multiple messages ', iret stop 2 endif write(*,*) ' grid=',nx,ny allocate (grid2(nx,ny)) ! using a non-allocatable grid .. old-style code grid = 1.234 metadata="d=2001011212:TMP:10 mb:anl:ENS=+11:80 ens members:" iret = grb2_wrt(file, template, 1, data1=grid, meta=metadata) write(*,*) iret ! using a dynamic grid grid2 = 2.2 grid2(1,1) = 1.0 metadata="d=2016101700:UGRD:10 m above ground:0-6 hour ave fcst:ENS=hi-res:80 ens members:" iret = grb2_wrt(file, template, 1, data2=grid2, meta=metadata) write(*,*) iret, ' write file into ',trim(file) stop stop end