Grab the entire region’s stations (https://coastwatch.glerl.noaa.gov/marobs/stations.lmd) or for a specific lake “stations-superior.lmd”. And save it to the target path. The address might change. Please see the screenshot below.
The station lmd files can be found in the following link: https://drive.google.com/drive/u/0/folders/1Kod6ECcryiDvwRIcrT4RfLRuxD7KfAbKIn the directory (target path) where you want to create the forcing, edit the file “metedit.in” and update the.lmd file and the glsea-temps.dat files on lines 2, 3 and 4. Also edit the year in lines 5 and 6, and then change line 8 to the appropriate # of hours (8760 in normal years, 8784 in leap years).
metedit.in shows like below:
# leave first line blankstations_superior.lmd2008.lmd glsea-temps2008_1024.dat e2008001002008001 00 IYR,IJD,IHR1. DTWIND8784NHRS2SELECTMOD- The *lmd file for line 3 can be downloaded here: https://coastwatch.glerl.noaa.gov/AnnualLMD/(now have been updated to https://apps.glerl.noaa.gov/marobs/lmd/)
- The glsea-temps files for line 4 can be downloaded here: https://coastwatch.glerl.noaa.gov/ftp/glsea/avgtemps/1995/glsea-temps1995_1024.dat (Note: remove all the lines of headers)
wgethttps://coastwatch.glerl.noaa.gov/ftp/glsea/avgtemps/1995/glsea-temps1995_1024.dat- Compile metedit-crmod.f
module load intel/2016.1 ifort-ometedit-crmod.exe metedit-crmod.f ./metedit-crmod.exe<metedit.in>metedit.out- This program will create both an output file (metedit.out) and an adjusted meteorology file (metobs.dat)
- edit “interp.in” to update the year (Line 5), and the # of hours on Line 7 (8761 for normal years, 8785 for leap years)
superior_grd.dat metobs.dat e2008001002008001 00 IYR,IJD,IHR1. DTWIND8785NHRS- Compile interpun.f
The original interpun.f has some issue on reading grid file. Some modification has been made. Please see below.
!====Chuyan2026/04/06====CHARACTER(LEN=100):: linegrd INTEGER :: pos!====Chuyan2026/04/06====..... C READ ELEMENT DESCRIPTION SECTION!READ(1,'(15X,I6)')NS!ori!READ(1,'(15X,i6)')NEL!ori!========Chuyan2026/04/06=====C ---------- READ NODE / CELL NUMBER ---------- C Node Number READ(1,'(A)')linegrd pos=INDEX(linegrd,'=')READ(linegrd(pos+1:),*)NS C Cell Number READ(1,'(A)')linegrd pos=INDEX(linegrd,'=')READ(linegrd(pos+1:),*)NEL!=======Chuyan2026/04/06=====Check the grid dat file, when it contains 5 columns,
ode Number=6106Cell Number=115091617121621382614283158431use:
1READ(1,*)(N,(NV(I,J),I=1,3),N,J=1,NEL)!oriwhen it contains 4 columns,
Node Number=1133Cell Number=201911133112911312113311311132312644165276use:
1READ(1,*)(N,(NV(I,J),I=1,3),J=1,NEL)!Chuyan2026/04/06module load intel/2016.1 icc-cstack.c stackpair.c volume.c ifort-O-ointerpun-new.exe interpun.f stack.o stackpair.o volume.oqsub interpun.sh- rename *_uvw.dat to *_wnd.dat
- Edit your “*_forcing.nml” file (superior_forcing.nml in example) with appropriate dates, file locations, and file names (note: this assumes wind speed is being used instead of stress)
&NML_SURFACE_FORCE INPUT_DIR='./', OUTPUT_DIR='./', INPUT_FILE='e200800100', INPUT_FILE_TYPE='binary speed', OUTPUT_FILE='e200800100_forcing_marobs.nc', OUTPUT_FILE_TYPE='unstructured', GRID_FILE='superior_grd.dat', GRID_FILE_UNITS='degrees', PROJECTION_REFERENCE='none', DATE_FORMAT='YMD', START_DATE='2008-01-01 00:00:00', TIMEZONE='UTC', END_DATE='2009-01-01 00:00:00', OUT_INTERVAL='seconds=3600.0', ZERO_TIME='2008-01-01 00:00:00', DATE_REFERENCE='1858-11-17 00:00:00', /- Make sure there is “xsurfaceforce” executable file in the present directory.
To generate “xsurfaceforce”, first compile the fvcom code (/pexue5/chuyan/generate_forcing/forcing/code_xsurfaceforce), then compile (/pexue5/chuyan/generate_forcing/forcing/code_xsurfaceforce/input/surface_forcing). qsub xsurfaceforce.sh- The new generated nc file is the target forcing input file.