Is it possible in ROMS to apply Atmospheric Pressure as a body force?

Are there any current CPP options in cppdefs.h to do this?

## Applying Atm. Pressure as a body force

### Atmospheric pressure as a body force

Yes, you can apply Atm. pressure as a body force.

First, you need to include Atm. pressure in your netcdf forcing file. For example, you can edit frc_bulk.cdl in order to create forcing file. In cppdefs.h you need to undef ANA_PAIR.

Elad

First, you need to include Atm. pressure in your netcdf forcing file. For example, you can edit frc_bulk.cdl in order to create forcing file. In cppdefs.h you need to undef ANA_PAIR.

Elad

messing with body-force-type algorithm. As the matter of fact, any pressure gradient force

calculation algorithm involves (explicitly or implicitly) vertical integration of density field from

surface to the current depth z. This integration initializes pressure (or pressure gradient) at

surface as ZERO and then, starting from it, density (or density gradient) is integrated

downward. It is just sufficient to replace that ZERO with correct atmospheric pressure

(or pressure gradient) that is it: ROMS pressure gradient algorithm will do the rest: propagate

this forcing throughout the whole water column.

There are essentially two families pressure gradient routines currently in use in ROMS:

prsgrd32.F (without A)

and

prsgrd32AC1.F (amongh others, "A" stands for "alternative")

The "A" version calculates pressure explicitly, so you find loop where pressure is initialized

and insert atmospheric pressure there:

do i=istrU-1,iend

P(i,j,N)=g*z_w(i,j,N) + GRho*( rho(i,j,N)

& +0.5*(rho(i,j,N)-rho(i,j,N-1))*(z_w(i,j,N)-z_r(i,j,N))

& /(z_r(i,j,N)-z_r(i,j,N-1)) )*(z_w(i,j,N)-z_r(i,j,N))

enddo

do k=N-1,1,-1

do i=istrU-1,iend

P(i,j,k)=P(i,j,k+1)+HalfGRho*( (rho(i,j,k+1)+rho(i,j,k)) .........

in the upper loop: g*z_w(i,j,N) is contibution due to barotropic mode free surface displacement, etc... Just ADD in atmospheric pressure here, within this loop and

nowhere else.

The "non-A" (that also include pevious algorithm, such as standard and weighted jacobian)

versions calcucate horizontal density gradient first and then integrate it vertically. So you

have to compute atmospheric pressure gradient first (in BOTH directions) and then add it

into the place in the code where contribution due to free-surface disturbance is computed.

The atmospheric pressure gradient is then propagated downward naturally by the vertical

integration algorithm.