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

Temporal changing surface fields: tidal wetlands

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.


New member
Dear WRF Community,

I am analyzing the impact of tidal wetlands on WRF Simulations.
The Tidal wetlands alternate between wet and dry every 6 hours in an approximately sinusoidal fashion.
For that I need to feed the model changing Landmask, SST and LandUse (maybe others?) fields at some temporal interval.
Is there a way to do this? Maybe an existing nudging approach?

Thanks in Advance, Mares
I discussed your issue with our physics expert. They said they wouldn't change the landmask, but maybe modify some key properties and use SST for the water periods. The soil temperature would also need to respond to SST. Is this a long simulation that needs to update SST (typically more than about a week)?
Hi kwerner,
thanks for your reply. It took me a while, but this is how I approached the problem. Please tell me if I am doing something terribly wrong here.

First, I wrote a python script that generates me a tidal_mask field that is equal to one at the tidal wetlands and zero else.
Furthermore, this file contains the ssh (sea surface height) every 15 minutes downloaded from copernicus data hub.
Finally, the SST is also read in from ERA5 and modified to fit the tidal phase.

These fields are then added to wrflowinput_<domain> and read in with a auxinput4_interval of 15 minutes.

To control the program flow, I added the namelist option tidal_update.

The main changes happen in the module_surface_driver.F
Here, I added a block that changes the pixel from ocean to land and vice versa.
Right before the sst_update block.

  IF (tidal_update .eq. 1) THEN
    CALL wrf_debug( 100, 'TIDAL_UPDATE is on' )
    DO ij = 1 , num_tiles
      DO j=j_start(ij),j_end(ij)
      DO i=i_start(ij),i_end(ij)
        if(tidal_mask(i,j) .eq. 1) then
          if(ssh(i,j) .gt. 0) then
            ! turn into ocean pixel
            LANDMASK(i,j) = 0
            XLAND(i,j) = 2
            LU_INDEX(i,j) = iswater
            IVGTYP(i,j) = iswater
            VEGFRA(i,j) = 0
            ISLTYP(i,j) = 14
            ALBEDO(i,j) = 0.08
            ALBBCK(i,j) = 0.08
            EMISS(i,j) = 0.98
            EMBCK(i,j) = 0.98
            Z0(i,j) = 1.e-4
            MAVAIL(i,j) = 1
            DO nk = 1, num_soil_layers
              TSLB(i,nk,j) = SST(i,j)
              SMOIS(i,nk,j) = 1
              SH2O(i,nk,j) = 1
            TMN(i,j) = SST(i,j)
            TSK(i,j) = SST(i,j)
          else if(ssh(i,j) .lt. 0) then
            ! turn into land pixel
            LANDMASK(i,j) = 1
            XLAND(i,j) = 1
            LU_INDEX(i,j) = iswetland
            IVGTYP(i,j) = iswetland
            VEGFRA(i,j) = 81.58
            ISLTYP(i,j) = 9
            ALBEDO(i,j) = 0.14
            ALBBCK(i,j) = 0.17
            EMISS(i,j) = 0.95
            EMBCK(i,j) = 0.95
            Z0(i,j) = 0.2
            MAVAIL(i,j) = 0.6
            DO nk = 1, num_soil_layers
              !TSLB(i,nk,j) = SST(i,j)
              SMOIS(i,nk,j) = 0.14
              SH2O(i,nk,j) = 0.14
            !TMN(i,j) = SST(i,j)
            !TSK(i,j) = SST(i,j)
      ENDDO ! i
      ENDDO ! j
    ENDDO ! ij
  ENDIF ! tidal_update

If you have concernes or tipps I would be very happy to hear them.

All the best,
Hi Mares,
From what you describe, it sounds like you're on the right path. I would suggest running a short/simple simulation and take a look at the output to see if it's what you expect.