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 184 for trunk/NEMO/OPA_SRC/DIA/diaptr.F90 – NEMO

Ignore:
Timestamp:
2004-11-05T16:33:21+01:00 (19 years ago)
Author:
opalod
Message:

CT : BUGFIX110 : Compilation and execution errors solved

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DIA/diaptr.F90

    r134 r184  
    3838   !! * Share Module variables 
    3939   LOGICAL, PUBLIC ::   & !!! ** init namelist (namptr) ** 
    40       ln_diaptr = .FALSE.   !: Poleward transport flag (T) or not (F) 
     40      ln_diaptr = .TRUE.   !: Poleward transport flag (T) or not (F) 
    4141   INTEGER, PUBLIC ::   &  !!: ** ptr namelist (namptr) ** 
    4242      nf_ptr = 15           !: frequency of ptr computation 
     
    165165      !! * local declarations 
    166166      INTEGER  ::   ji, jj, jk        ! dummy loop arguments 
     167      INTEGER, DIMENSION (1) :: ish 
     168      INTEGER, DIMENSION (2) :: ish2 
     169      REAL(wp),DIMENSION(jpj*jpk) ::   & 
     170         zwork                        ! temporary vector for mpp_sum 
    167171      REAL(wp),DIMENSION(jpj,jpk) ::   & 
    168172         p_fval                       ! return function value 
     
    177181         END DO 
    178182      END DO 
    179       IF( lk_mpp)   CALL mpp_sum( p_fval, jpj*jpk )    !!bug  I presume 
     183      IF( lk_mpp)   THEN 
     184          ish(1) = jpj*jpk ; ish2(1)=jpj ; ish2(2)=jpk 
     185          zwork(:)= RESHAPE(p_fval, ish ) 
     186          CALL mpp_sum(zwork, jpj*jpk ) 
     187          p_fval(:,:)= RESHAPE(zwork,ish2) 
     188      END IF 
    180189 
    181190   END FUNCTION ptr_vjk 
     
    202211      !! * local declarations 
    203212      INTEGER  ::   ji, jj, jk        ! dummy loop arguments 
     213      INTEGER, DIMENSION (1) :: ish 
     214      INTEGER, DIMENSION (2) :: ish2 
     215      REAL(wp),DIMENSION(jpj*jpk) ::   & 
     216         zwork                        ! temporary vector for mpp_sum 
    204217      REAL(wp),DIMENSION(jpj,jpk) ::   & 
    205218         p_fval                       ! return function value 
     
    217230      END DO 
    218231      p_fval(:,:) = p_fval(:,:) * 0.5 
    219       IF( lk_mpp )   CALL mpp_sum( p_fval, jpj*jpk )         !!bug  I presume 
     232      IF( lk_mpp)   THEN 
     233          ish(1) = jpj*jpk ; ish2(1)=jpj ; ish2(2)=jpk 
     234          zwork(:)= RESHAPE(p_fval, ish ) 
     235          CALL mpp_sum(zwork, jpj*jpk ) 
     236          p_fval(:,:)= RESHAPE(zwork,ish2) 
     237      END IF 
    220238 
    221239   END FUNCTION ptr_vtjk 
     
    250268      v_msf_eiv(:,:) = ptr_vjk( v_eiv(:,:,:) )  
    251269      ! Bolus "Meridional" Stream-Function 
    252       DO jk = jpkm1, 1 
     270      DO jk = jpkm1, 1 , -1 
    253271         v_msf_eiv(:,jk) = v_msf_eiv(:,jk-1) + v_msf_eiv(:,jk) 
    254272      END DO 
     
    272290 
    273291      ! "Meridional" Stream-Function 
    274       DO jk = jpkm1, 1 
     292      DO jk = jpkm1, 1, -1 
    275293         v_msf(:,jk) = v_msf(:,jk-1) + v_msf(:,jk) 
    276294      END DO 
     
    345363      !! * Arguments 
    346364      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    347       REAL(wp), DIMENSION(jpjglo) ::   zphi, zfoo 
     365      REAL(wp), DIMENSION(jpj) ::   zphi, zfoo 
    348366      !!----------------------------------------------------------------------  
    349367 
     
    368386            IF( lk_mpp )   CALL mpp_sum( zphi, jpj )         
    369387            ! introduce arbitray northernmost grid point to avoid netcdf error 
    370             zphi(jpjglo) = 2*zphi(jpjglo-1)-zphi(jpjglo-2) 
     388            DO jj=mj0(jpjglo), mj1(jpjglo) 
     389               zphi(jj) = 2*zphi(jj-1)-zphi(jj-2) 
     390            ENDDO 
    371391 
    372392            !                                        ! ======================= 
     
    430450         zsto, zout, zdt, zmax, &   ! temporary scalars 
    431451         zjulian 
    432       REAL(wp), DIMENSION(jpjglo) ::   zphi, zfoo 
     452      REAL(wp), DIMENSION(jpj) ::   zphi, zfoo 
    433453      !!---------------------------------------------------------------------- 
    434454       
     
    556576         it= kt - nit000 + 1 
    557577         ndex(1) = 1 
    558          WRITE(numout,*)'kt=',kt 
    559578         CALL histwrite( numptr, "zotemglo", it, tn_jk    , jpj*jpk, ndex ) 
    560          WRITE(numout,*)'zotemglo OK' 
    561579         CALL histwrite( numptr, "zosalglo", it, sn_jk    , jpj*jpk, ndex ) 
    562          WRITE(numout,*)'zosalglo OK' 
    563580         CALL histwrite( numptr, "zomsfglo", it, v_msf    , jpj*jpk, ndex ) 
    564          WRITE(numout,*)'zomsfglo OK' 
    565          WRITE(numout,*)'MAX(pht_adv)=', MAXVAL(pht_adv) 
    566          WRITE(numout,*)'MIN(pht_adv)=', MINVAL(pht_adv) 
    567581         CALL histwrite( numptr, "sophtadv", it, pht_adv  , jpj    , ndex ) 
    568          WRITE(numout,*)'sophtadv OK' 
    569          WRITE(numout,*)'MAX(pht_ldf)=', MAXVAL(pht_ldf) 
    570          WRITE(numout,*)'MIN(pht_ldf)=', MINVAL(pht_ldf) 
    571582         CALL histwrite( numptr, "sophtldf", it, pht_ldf  , jpj    , ndex ) 
    572          WRITE(numout,*)'sophtldf OK' 
    573          WRITE(numout,*)'MAX(pht_ove)=', MAXVAL(pht_ove) 
    574          WRITE(numout,*)'MIN(pht_ove)=', MINVAL(pht_ove) 
    575583         CALL histwrite( numptr, "sophtove", it, pht_ove  , jpj    , ndex ) 
    576          WRITE(numout,*)'sophtove OK' 
    577          WRITE(numout,*)'MAX(pst_adv)=', MAXVAL(pst_adv) 
    578          WRITE(numout,*)'MIN(pst_adv)=', MINVAL(pst_adv) 
    579584         CALL histwrite( numptr, "sopstadv", it, pst_adv  , jpj    , ndex ) 
    580          WRITE(numout,*)'sopstadv OK' 
    581          WRITE(numout,*)'MAX(pst_ldf)=', MAXVAL(pst_ldf) 
    582          WRITE(numout,*)'MIN(pst_ldf)=', MINVAL(pst_ldf) 
    583585         CALL histwrite( numptr, "sopstldf", it, pst_ldf  , jpj    , ndex ) 
    584          WRITE(numout,*)'sopstldf OK' 
    585          WRITE(numout,*)'MAX(pst_ove)=', MAXVAL(pst_ove) 
    586          WRITE(numout,*)'MIN(pst_ove)=', MINVAL(pst_ove) 
    587586         CALL histwrite( numptr, "sopstove", it, pst_ove  , jpj    , ndex ) 
    588          WRITE(numout,*)'sopstove OK' 
    589587#if defined key_diaeiv 
    590588         CALL histwrite( numptr, "zomsfeiv", it, v_msf_eiv, jpj*jpk, ndex ) 
Note: See TracChangeset for help on using the changeset viewer.