Changeset 474 for trunk/NEMO/OPA_SRC/SOL
- Timestamp:
- 2006-05-11T17:24:19+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/SOL/solver.F90
r413 r474 133 133 IF(lwp) WRITE(numout,*) 134 134 IF(lwp) WRITE(numout,*) ' free surface formulation' 135 IF( lk_isl ) THEN 136 IF(lwp) WRITE(numout,cform_err) 137 IF(lwp) WRITE(numout,*) ' key_islands inconsistent with key_dynspg_flt' 138 nstop = nstop + 1 139 ENDIF 135 IF( lk_isl ) CALL ctl_stop( ' key_islands inconsistent with key_dynspg_flt' ) 136 140 137 ELSEIF( lk_dynspg_rl ) THEN 141 138 IF(lwp) WRITE(numout,*) 142 139 IF(lwp) WRITE(numout,*) ' Rigid lid formulation' 143 140 ELSE 144 IF(lwp) WRITE(numout,cform_err) 145 IF(lwp) WRITE(numout,*) ' Choose only one surface pressure gradient calculation: filtered or rigid-lid' 146 IF(lwp) WRITE(numout,*) ' Should not call this routine if dynspg_exp or dynspg_ts has been chosen' 147 nstop = nstop + 1 148 ENDIF 149 IF( lk_dynspg_flt .AND. lk_dynspg_rl ) THEN 150 IF(lwp) WRITE(numout,cform_err) 151 IF(lwp) WRITE(numout,*) ' Chose between free surface or rigid-lid, not both' 152 nstop = nstop + 1 153 ENDIF 141 CALL ctl_stop( ' Choose only one surface pressure gradient calculation: filtered or rigid-lid', & 142 & ' Should not call this routine if dynspg_exp or dynspg_ts has been chosen' ) 143 ENDIF 144 IF( lk_dynspg_flt .AND. lk_dynspg_rl ) & 145 CALL ctl_stop( ' Chose between free surface or rigid-lid, not both' ) 154 146 155 147 SELECT CASE ( nsolv ) … … 157 149 CASE ( 1 ) ! preconditioned conjugate gradient solver 158 150 IF(lwp) WRITE(numout,*) ' a preconditioned conjugate gradient solver is used' 159 IF( jpr2di /= 0 .AND. jpr2dj /= 0 ) THEN 160 IF(lwp) WRITE(numout,cform_err) 161 IF(lwp) WRITE(numout,*) ' jpr2di and jpr2dj should be equal to zero' 162 nstop = nstop + 1 163 ENDIF 151 IF( jpr2di /= 0 .AND. jpr2dj /= 0 ) & 152 CALL ctl_stop( ' jpr2di and jpr2dj should be equal to zero' ) 164 153 165 154 CASE ( 2 ) ! successive-over-relaxation solver 166 155 IF(lwp) WRITE(numout,*) ' a successive-over-relaxation solver is used' 167 IF( jpr2di /= 0 .AND. jpr2dj /= 0 ) THEN 168 IF(lwp) WRITE(numout,cform_err) 169 IF(lwp) WRITE(numout,*) ' jpr2di and jpr2dj should be equal to zero' 170 nstop = nstop + 1 171 ENDIF 156 IF( jpr2di /= 0 .AND. jpr2dj /= 0 ) & 157 CALL ctl_stop( ' jpr2di and jpr2dj should be equal to zero' ) 172 158 173 159 CASE ( 3 ) ! FETI solver 174 160 IF(lwp) WRITE(numout,*) ' the FETI solver is used' 175 IF( jpr2di /= 0 .AND. jpr2dj /= 0 ) THEN 176 IF(lwp) WRITE(numout,cform_err) 177 IF(lwp) WRITE(numout,*) ' jpr2di and jpr2dj should be equal to zero' 178 nstop = nstop + 1 179 ENDIF 161 IF( jpr2di /= 0 .AND. jpr2dj /= 0 ) & 162 CALL ctl_stop( ' jpr2di and jpr2dj should be equal to zero' ) 163 180 164 IF( .NOT.lk_mpp ) THEN 181 IF(lwp) WRITE(numout,cform_err) 182 IF(lwp) WRITE(numout,*) ' The FETI algorithm is used only with the key_mpp_... option' 183 nstop = nstop + 1 165 CALL ctl_stop( ' The FETI algorithm is used only with the key_mpp_... option' ) 184 166 ELSE 185 167 IF( jpnij == 1 ) THEN 186 IF(lwp) WRITE(numout,cform_err) 187 IF(lwp) WRITE(numout,*) ' The FETI algorithm needs more than one processor' 188 nstop = nstop + 1 168 CALL ctl_stop( ' The FETI algorithm needs more than one processor' ) 189 169 ENDIF 190 170 ENDIF … … 194 174 IF(lwp) WRITE(numout,*) ' with jpr2di =', jpr2di, ' and jpr2dj =', jpr2dj 195 175 IF( .NOT. lk_mpp .AND. jpr2di /= 0 .AND. jpr2dj /= 0 ) THEN 196 IF(lwp) WRITE(numout,cform_err) 197 IF(lwp) WRITE(numout,*) ' jpr2di and jpr2dj are not equal to zero' 198 IF(lwp) WRITE(numout,*) ' In this case this algorithm should be used only with the key_mpp_... option' 199 nstop = nstop + 1 176 CALL ctl_stop( ' jpr2di and jpr2dj are not equal to zero', & 177 & ' In this case this algorithm should be used only with the key_mpp_... option' ) 200 178 ELSE 201 179 IF( ( ( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) .OR. ( jpni /= 1 ) ) & 202 & .AND. ( jpr2di /= jpr2dj ) ) THEN 203 IF(lwp) WRITE(numout,cform_err) 204 IF(lwp) WRITE(numout,*) ' jpr2di should be equal to jpr2dj' 205 nstop = nstop + 1 206 ENDIF 180 & .AND. ( jpr2di /= jpr2dj ) ) CALL ctl_stop( ' jpr2di should be equal to jpr2dj' ) 207 181 ENDIF 208 182 209 183 CASE DEFAULT 210 IF(lwp) WRITE(numout,cform_err) 211 IF(lwp) WRITE(numout,*) ' bad flag value for nsolv = ', nsolv 212 nstop = nstop + 1 184 WRITE(ctmp1,*) ' bad flag value for nsolv = ', nsolv 185 CALL ctl_stop( ctmp1 ) 213 186 214 187 END SELECT … … 244 217 245 218 IF ( jpisl == 0 ) THEN 246 IF(lwp)WRITE(numout,cform_err) 247 IF(lwp)WRITE(numout,*) ' bad islands parameter jpisl =', jpisl 248 nstop = nstop + 1 219 WRITE(ctmp1,*) ' bad islands parameter jpisl =', jpisl 220 CALL ctl_stop( ctmp1 ) 249 221 ENDIF 250 222
Note: See TracChangeset
for help on using the changeset viewer.