Changeset 1920 for branches/DEV_1879_mpp_rep/NEMO/OPA_SRC/SOL/solpcg.F90
- Timestamp:
- 2010-06-07T13:45:58+02:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_1879_mpp_rep/NEMO/OPA_SRC/SOL/solpcg.F90
r1601 r1920 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
Note: See TracChangeset
for help on using the changeset viewer.