New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 314 for trunk/NEMO/OPA_SRC/DYN – NEMO

Changeset 314 for trunk/NEMO/OPA_SRC/DYN


Ignore:
Timestamp:
2005-09-30T12:24:23+02:00 (19 years ago)
Author:
opalod
Message:

nemo_v1_update_017:RB: added call to sol_sor_e for free surface and rigid lid.

Location:
trunk/NEMO/OPA_SRC/DYN
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/dynspg_fsc.F90

    r294 r314  
    2727   USE solsor          ! Successive Over-relaxation solver 
    2828   USE solfet          ! FETI solver 
     29   USE solsor_e        ! Successive Over-relaxation solver with MPP optimization 
    2930   USE obc_oce         ! Lateral open boundary condition 
    3031   USE obcdyn          ! ocean open boundary condition (obc_dyn routines) 
     
    257258         END DO 
    258259      END DO 
     260      ! applied the lateral boundary conditions 
     261      IF( nsolv == 4 )   CALL lbc_lnk_e( gcb, c_solver_pt, 1. )    
    259262 
    260263      ! 4. Relative precision (computation on one processor) 
    261264      ! --------------------- 
    262265      rnorme =0. 
    263       rnorme = SUM( gcb(:,:) * gcdmat(:,:) * gcb(:,:) ) 
     266      rnorme = SUM( gcb(1:jpi,1:jpj) * gcdmat(1:jpi,1:jpj) * gcb(1:jpi,1:jpj) * bmask(:,:) ) 
    264267      IF( lk_mpp )   CALL mpp_sum( rnorme )   ! sum over the global domain 
    265268 
     
    286289         ELSEIF( nsolv == 3 ) THEN     ! FETI solver 
    287290            CALL sol_fet( kindic ) 
     291         ELSEIF( nsolv == 4 ) THEN     ! successive-over-relaxation with extra outer halo 
     292            CALL sol_sor_e( kindic ) 
    288293         ELSE                          ! e r r o r in nsolv namelist parameter 
    289294            IF(lwp) WRITE(numout,cform_err) 
    290             IF(lwp) WRITE(numout,*) ' dyn_spg_fsc : e r r o r, nsolv = 1, 2 or 3' 
     295            IF(lwp) WRITE(numout,*) ' dyn_spg_fsc : e r r o r, nsolv = 1, 2 ,3 or 4' 
    291296            IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~                not = ', nsolv 
    292297            nstop = nstop + 1 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_fsc_atsk.F90

    r258 r314  
    3131   USE solsor          ! Successive Over-relaxation solver 
    3232   USE solfet          ! FETI solver 
     33   USE solsor_e        ! Successive Over-relaxation solver with MPP optimization 
    3334   USE obc_oce         ! Lateral open boundary condition 
    3435   USE obcdyn          ! ocean open boundary condition (obc_dyn routines) 
     
    274275         END DO 
    275276      END DO 
     277      ! applied the lateral boundary conditions 
     278      IF( nsolv == 4)   CALL lbc_lnk_e( gcb, c_solver_pt, 1. )   
    276279 
    277280      !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,synchro,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
     
    283286         DO ji = 1, jpi 
    284287            zgwgt  = gcdmat(ji,jj) * gcb(ji,jj) 
    285             rnorme = rnorme + gcb(ji,jj) * zgwgt 
     288            rnorme = rnorme + gcb(ji,jj) * zgwgt * bmask(ji,jj) 
    286289         END DO 
    287290      END DO 
     
    312315         ELSEIF( nsolv == 3 ) THEN     ! FETI solver 
    313316            CALL sol_fet( kindic ) 
     317         ELSEIF( nsolv == 4 ) THEN     ! successive-over-relaxation with extra outer halo 
     318            CALL sol_sor_e( kindic ) 
    314319         ELSE                          ! e r r o r in nsolv namelist parameter 
    315320            IF(lwp) WRITE(numout,cform_err) 
    316             IF(lwp) WRITE(numout,*) ' dyn_spg_fsc_atsk : e r r o r, nsolv = 1, 2 or 3' 
     321            IF(lwp) WRITE(numout,*) ' dyn_spg_fsc_atsk : e r r o r, nsolv = 1, 2, 3 or 4' 
    317322            IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~~~                not = ', nsolv 
    318323            nstop = nstop + 1 
  • trunk/NEMO/OPA_SRC/DYN/dynspg_rl.F90

    r247 r314  
    2525   USE solsor          ! Successive Over-relaxation solver 
    2626   USE solfet          ! FETI solver 
     27   USE solsor_e        ! Successive Over-relaxation solver with MPP optimization 
    2728   USE solisl          ! ??? 
    2829   USE obc_oce         ! Lateral open boundary condition 
     
    106107      !! * Local declarations 
    107108      INTEGER ::   ji, jj, jk    ! dummy loop indices 
    108       REAL(wp) ::   zgwgt, zbsfa, zgcx, z2dt 
     109      REAL(wp) ::  zbsfa, zgcx, z2dt 
    109110# if defined key_obc 
    110111      INTEGER ::   ip, ii, ij 
     
    203204         END DO 
    204205      END DO 
     206      ! applied the lateral boundary conditions 
     207      IF( nsolv == 4)   CALL lbc_lnk_e( gcb, c_solver_pt, 1. )    
    205208 
    206209      !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,synchro,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
     
    208211      ! Relative precision (computation on one processor) 
    209212      rnorme = 0.e0 
    210       DO jj = 1, jpj 
    211          DO ji = 1, jpi 
    212             zgwgt =  gcdmat(ji,jj) * gcb(ji,jj) 
    213             rnorme = rnorme + gcb(ji,jj) * zgwgt 
    214          END DO 
    215       END DO 
     213      rnorme = SUM( gcb(1:nlci,1:nlcj) * gcdmat(1:nlci,1:nlcj) * gcb(1:nlci,1:nlcj) * bmask(:,:) ) 
    216214      IF( lk_mpp )   CALL mpp_sum( rnorme )   ! sum over the global domain 
    217215 
     
    236234         CASE( 3 )                     ! FETI solver 
    237235            CALL sol_fet( kindic ) 
     236         CASE( 4 )                     ! successive-over-relaxation with extra outer halo 
     237            CALL sol_sor_e( kindic ) 
    238238         CASE DEFAULT                  ! e r r o r in nsolv namelist parameter 
    239239            IF(lwp) WRITE(numout,cform_err) 
    240             IF(lwp) WRITE(numout,*) ' dyn_spg_rl : e r r o r, nsolv = 1, 2 or 3' 
     240            IF(lwp) WRITE(numout,*) ' dyn_spg_rl : e r r o r, nsolv = 1, 2 ,3 or 4' 
    241241            IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~                not = ', nsolv 
    242242            nstop = nstop + 1 
     
    248248      ! ---------------- 
    249249 
    250       bsfd(:,:) = gcx(:,:) 
     250      bsfd(1:nlci,1:nlcj) = gcx(1:nlci,1:nlcj) 
    251251 
    252252       
Note: See TracChangeset for help on using the changeset viewer.