problem about Relaxation/Sponge area

General scientific issues regarding ROMS

Moderators: arango, robertson

Post Reply
Message
Author
jkoceans11
Posts: 4
Joined: Thu Jan 06, 2011 2:52 pm

problem about Relaxation/Sponge area

#1 Unread post by jkoceans11 »

Hi every one.
When I used Relaxation and Sponge area, i have problem that current appeared shape of tile.
This problem appeared in figure relaxation_error.png.
Relaxation and Sponge area applied in east, west, north, south boundary.
This shape appeared in structure of temperature too.
I have difficulty about this problem.

I performed relaxation used script below in ana_nudgcoef.h.

elif defined nwp
cff1=0.5_r8/(5.0_r8*86400.0_r8) ! 5 days
Iwrk=20.0
!southern region
DO j=JstrR,MIN(Iwrk,JendR)
DO i=MAX(IstrR,j),MIN(IendR-j,IendR)
wrk(i,j)=cff1*((1.0_r8-COS(pi*REAL(j+Iwrk,r8)/ &
& REAL(Iwrk,r8)))/2.0_r8)
END DO
END DO
!northern region
DO j=JendR-Iwrk,JendR
DO i=MAX(IstrR,JendR-j),MIN(j-(Iwrk+(JendR-Iwrk-IendR)),IendR)
wrk(i,j)=cff1*((1.0_r8-COS(pi*REAL(j-JendR+Iwrk,r8)/ &
& REAL(Iwrk,r8)))/2.0_r8)
END DO
END DO
!western reigon
DO i=IstrR,MIN(Iwrk,IendR)
DO j=MAX(JstrR,i),MIN(JendR-i,JendR)
wrk(i,j)=cff1*((1.0_r8-COS(pi*REAL(i+Iwrk,r8)/ &
& REAL(Iwrk,r8)))/2.0_r8)
END DO
END DO
!eastern region
DO i=IendR-Iwrk,IendR
DO j=MAX(JstrR,IendR-i),MIN(JendR-IendR+i,JendR)
wrk(i,j)=cff1*((1.0_r8-COS(pi*REAL(i-IendR+Iwrk,r8)/ &
& REAL(Iwrk,r8)))/2.0_r8)
END DO
END DO
# ifdef TCLM_NUDGING
DO itrc=1,NT(ng)
DO j=JstrR,JendR
DO i=IstrR,IendR
CLIMA(ng)%Tnudgcof(i,j,itrc)=wrk(i,j)
END DO
END DO
END DO
# endif

This script used for sponge area in ana_hmixcoef.h too.

To solved this problem, I am using ROMS version 3.2, 3.3, 3.7. But this problem occurred in used all ROMS version.
Open boundary scheme of M3 and TS used radiation nudging.
I want any advice and comment to solved this problem.
thanks.
Attachments
relaxation_error.png

User avatar
kate
Posts: 4088
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: problem about Relaxation/Sponge area

#2 Unread post by kate »

This is why Hernan is now recommending that you set up your nudging coefficients with an external program and write them to a NetCDF file. IstrR is the starting index for the i-direction on the tile. Each process has its own value for IstrR for its own tile. The global i,j range is more like 1 to Lm, 1 to Mm. Here is my ana_nudgcoef code:

Code: Select all

!  Set nudging boundaries coefficients zone for ARCTIC2 
!  nudging coefficients vary from a thirty
!  days time scale at the boundary point to decrease linearly to 0 days
!  (i.e no nudging) 15 grids points away from the boundary.
!
      cff1=1.0_r8/(30_r8*86400.0_r8)         ! 30-day outer limit
      cff2=0.0_r8                            ! Inf days (no nudge) inner limit
      cff3=20.0_r8                           ! width of layer in grid points

! cff3-point wide linearly tapered nudging zone
      DO j=JstrT,MIN(INT(cff3),JendT)               ! SOUTH boundary
        DO i=IstrT,IendT
          wrk(i,j)=cff2+(cff3-REAL(j,r8))*(cff1-cff2)/cff3
        END DO
      END DO
! cff3-point wide linearly tapered nudging zone
      DO j=MAX(JstrT,Mm(ng)+1-INT(cff3)),JendT       ! NORTH boundary
        DO i=IstrT,IendT
          wrk(i,j)=MAX(wrk(i,j),                                        &
     &             cff1+REAL(Mm(ng)+1-j,r8)*(cff2-cff1)/cff3)
        END DO
      END DO
! cff3-point wide linearly tapered nudging zone
      DO i=IstrT,MIN(INT(cff3),IendT)                ! WEST boundary
        DO j=JstrT,MIN(JendT,120)
          wrk(i,j)=MAX(wrk(i,j),                                        &
     &             cff2+(cff3-REAL(i,r8))*(cff1-cff2)/cff3)
        END DO
      END DO
! cff3-point wide linearly tapered nudging zone
      DO i=MAX(IstrT,Lm(ng)+1-INT(cff3)),IendT       ! EAST boundary
        DO j=JstrT,MIN(JendT,410)
          wrk(i,j)=MAX(wrk(i,j),                                        &
     &             cff1+REAL(Lm(ng)+1-i,r8)*(cff2-cff1)/cff3)
        END DO
      END DO
Note that IstrR became IstrT in some revision change. I've hard-coded the 120 and the 410 for a specific application where the boundary is only open over a certain j range. The advantage of doing this outside of ROMS is that you can see your field in ncview to check it.

Post Reply