Changeset 1976 for branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SOL
- Timestamp:
- 2010-06-29T17:41:10+02:00 (14 years ago)
- Location:
- branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SOL
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SOL/solpcg.F90
r1601 r1976 14 14 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 15 15 USE in_out_manager ! I/O manager 16 USE lib_fortran 16 17 17 18 IMPLICIT NONE … … 95 96 ! Initialization of the algorithm with standard PCG 96 97 ! ------------------------------------------------- 98 zgcr = 0.e0 99 gcr = 0.e0 97 100 98 101 CALL lbc_lnk( gcx, c_solver_pt, 1. ) ! lateral boundary condition … … 100 103 ! gcr = gcb-a.gcx 101 104 ! gcdes = gcr 102 103 105 DO jj = 2, jpjm1 104 106 DO ji = fs_2, fs_jpim1 ! vector opt. … … 114 116 115 117 ! rnorme = (gcr,gcr) 116 rnorme = SUM( gcr(:,:) * gcdmat(:,:) * gcr(:,:) ) 117 IF( lk_mpp ) CALL mpp_sum( rnorme ) ! sum over the global domain 118 rnorme = glob_sum( gcr(:,:) * gcdmat(:,:) * gcr(:,:) ) 118 119 119 120 CALL lbc_lnk( gcdes, c_solver_pt, 1. ) ! lateral boundary condition … … 129 130 130 131 ! alph = (gcr,gcr)/(gcdes,gccd) 131 radd = SUM( gcdes(:,:) * gcdmat(:,:) * gccd(:,:) ) 132 IF( lk_mpp ) CALL mpp_sum( radd ) ! sum over the global domain 132 radd = glob_sum( gcdes(:,:) * gcdmat(:,:) * gccd(:,:) ) 133 133 alph = rnorme /radd 134 134 … … 162 162 ! rnorme = (gcr,gcr) 163 163 rr = rnorme 164 zsum(1) = SUM( gcr(:,:) * gcdmat(:,:) * gcr(:,:) )165 164 166 165 ! zgcad = (zgcr,gcr) 167 zsum(2) = SUM( gcr(2:jpim1,2:jpjm1) * gcdmat(2:jpim1,2:jpjm1) * zgcr(2:jpim1,2:jpjm1) ) 168 169 IF( lk_mpp ) CALL mpp_sum( zsum, 2 ) ! sum over the global domain 166 zsum(1) = glob_sum(gcr(:,:) * gcdmat(:,:) * gcr(:,:)) 167 zsum(2) = glob_sum(gcr(:,:) * gcdmat(:,:) * zgcr(:,:) * bmask(:,:)) 168 169 !!RB we should gather the 2 glob_sum 170 170 rnorme = zsum(1) 171 171 zgcad = zsum(2) 172 173 172 ! test of convergence 174 173 IF( rnorme < epsr .OR. jn == nn_nmax ) THEN -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SOL/solsor.F90
r1601 r1976 22 22 USE lib_mpp ! distributed memory computing 23 23 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 24 USE lib_fortran 24 25 25 26 IMPLICIT NONE … … 64 65 INTEGER :: ijmppodd, ijmppeven, ijpr2d 65 66 REAL(wp) :: ztmp, zres, zres2 67 REAL(wp), DIMENSION(jpi,jpj) ::ztab 66 68 !!---------------------------------------------------------------------- 67 69 … … 131 133 ENDIF 132 134 CASE ( 1 ) ! relative precision 133 rnorme = SUM( gcr(2:nlci-1,2:nlcj-1) ) 134 IF( lk_mpp ) CALL mpp_sum( rnorme ) ! sum over the global domain 135 ztab = 0. 136 ztab(:,:) = gcr(2:nlci-1,2:nlcj-1) 137 rnorme = glob_sum( ztab) ! sum over the global domain 135 138 ! test of convergence 136 139 IF( rnorme < epsr .OR. jn == nn_nmax ) THEN -
branches/DEV_r1784_mid_year_merge_2010/NEMO/OPA_SRC/SOL/solver.F90
r1601 r1976 102 102 END SELECT 103 103 ! 104 IF( nbit_cmp == 1 ) THEN ! reproductibility test SOR required105 IF( nn_solv /= 2 ) THEN106 CALL ctl_stop( ' Reproductibility tests (nbit_cmp=1) require the SOR solver: nn_solv = 2' )107 ELSE IF( MAX( jpr2di, jpr2dj ) > 0 ) THEN108 CALL ctl_stop( ' Reproductibility tests (nbit_cmp=1) require jpr2di = jpr2dj = 0' )109 END IF110 END IF111 104 112 105 ! !* Grid-point at which the solver is applied
Note: See TracChangeset
for help on using the changeset viewer.