#2099 closed Bug (fixed)
ln_nnogather and land suppression
Reported by: | mathiot | Owned by: | mathiot |
---|---|---|---|
Priority: | high | Milestone: | 2018 release-4.0 |
Component: | OCE | Version: | trunk |
Severity: | major | Keywords: | MPP OPA v4.0 |
Cc: |
Description (last modified by nicolasmartin)
Context
With some processor decompositions, eORCA12 with land suppression activated and ln_nnogather = .true. hangs during the call of the first lbclnk. eORCA025 and ORCA2 with land suppression and ln_nogather = .true. are working fine.
Analysis
In case of land suppression, 'nfilcit' is not initialised every where. It leads to some random value on our computer. So if there are land processors along the north fold, the tests in mpp_init_nfdcom give wrong value for the processor list 'isendto' used in mpp_nfd_generic.h90.
Fix
I suggest in mppini.F90 to replace:
DO jproc = 1, jpnij ... nfilcit(ii,ij) = ilci(ii,ij) END DO
by
DO jproc = 1, jpnij ... END DO nfilcit(:,:) = ilci(:,:)
With this correction, the processor list seems OK and the model doesn't hang anymore and run the 100 time steps I ask for.
I have a long run in queue to check. Comments welcome to confirm the fix or to mention potential side effects.
Change History (6)
comment:1 Changed 6 years ago by nicolasmartin
- Description modified (diff)
comment:2 Changed 6 years ago by mocavero
comment:3 Changed 6 years ago by acc
Yes this is the correct fix. It isn't obvious but the mpp_init_nfdcom logic works with the original, fully populated, decomposition. The land suppression is taken care of inside lib_mpp where messages are only sent if:
nfipproc(isendto(jr),jpnj) .ne. -1
so a simple calculation of which are the neighbours across the north fold is all that is required and isendto can be the complete set even if some have been suppressed (because nfipproc is set appropriately).
comment:4 Changed 6 years ago by mathiot
- Owner set to mathiot
- Resolution set to fixed
- Status changed from new to closed
In 9796:
comment:5 Changed 6 years ago by smasson
yes! nice one...
comment:6 Changed 3 years ago by nemo
- Keywords OPA v4.0 added
In the original implementation 'nfilcit' was initialised outside the loop, for all the processes. I agree with this fix.