[MITgcm-support] Bug in the domain decomposition periodicity

chris hill cnh at mit.edu
Wed May 31 08:48:33 EDT 2006


Hi G.,

  Thanks.

  The code is set to always be periodic. Even when a domain is not 
periodic the code acts as if it is periodic in the MPI bits. Masks 
and/or obcs overrides are used to get the numerics to be non-periodic.

  So it shouldn't go through those lines, except if you hack code in 
eeset_parms.F (not recommended).

Chris

P.S. Any news on the PRISM interface bits you were hoping to check in?

Gianmaria Sannino wrote:
> Hi there,
> 
>  
> 
> It seems there is a bug in  INI_PROCS.F when the MPI Periodicity is set 
> to .FALSE.
> 
>  
> 
> For decomposition in X on the west side there is: mpiGridSpec(1) = 
> mpiPx-1, but in this case you are specifying an MPI RANK that is out of 
> the MPI domain.
> 
> An analogous problem is for decomposition in X on the east side.
> 
>  
> 
> To solve this problem I modified two pieces of code in INI_PROCS.F
> 
>  
> 
> For decomposition in X on the west side:
> 
> FROM:
> 
>  
> 
> C--    Get MPI id for neighboring procs.
> 
>        mpiGridSpec(1) = mpiPx-1
> 
>        IF ( mpiPeriodicity(1) .EQ. _mpiTRUE_
> 
>      &   .AND. mpiGridSpec(1) .LT. 0 )
> 
>      &  mpiGridSpec(1) = nPx-1
> 
>        mpiGridSpec(2) = mpiPy
> 
>  
> 
> TO:
> 
>  
> 
> C--    Get MPI id for neighboring procs.
> 
>        mpiGridSpec(1) = mpiPx-1
> 
>        IF ( mpiPeriodicity(1) .EQ. _mpiTRUE_
> 
>      &   .AND. mpiGridSpec(1) .LT. 0 )
> 
>      &  mpiGridSpec(1) = nPx-1
> 
>        mpiGridSpec(2) = mpiPy
> 
>  
> 
>        IF ( mpiPeriodicity(1) .EQ. _mpiFALSE_
> 
>      &      .AND. mpiGridSpec(1) .LT. 0 )
> 
>      &      mpiGridSpec(1) =  0
> 
>  
> 
> And for decomposition in X on the east side:
> 
>  
> 
> FROM:
> 
>        mpiGridSpec(1) = mpiPx+1
> 
>        IF ( mpiPeriodicity(1) .EQ. _mpiTRUE_
> 
>      &   .AND. mpiGridSpec(1) .GT. nPx-1 )
> 
>      &  mpiGridSpec(1) = 0
> 
>        mpiGridSpec(2) = mpiPy
> 
>  
> 
>  
> 
> TO:
> 
>  
> 
>        mpiGridSpec(1) = mpiPx+1
> 
>        IF ( mpiPeriodicity(1) .EQ. _mpiTRUE_
> 
>      &   .AND. mpiGridSpec(1) .GT. nPx-1 )
> 
>      &  mpiGridSpec(1) = 0
> 
>        mpiGridSpec(2) = mpiPy
> 
>  
> 
>        IF ( mpiPeriodicity(1) .EQ. _mpiFALSE_
> 
>      &   .AND. mpiGridSpec(1) .GT. nPx-1 )
> 
>      &    mpiGridSpec(1) = nPx-1
> 
>  
> 
>  
> 
>  
> 
> Could you check these errors?
> 
> Thanks in advance
> 
>  
> 
> gianmaria
> 
>  
> 
>  
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> MITgcm-support mailing list
> MITgcm-support at mitgcm.org
> http://mitgcm.org/mailman/listinfo/mitgcm-support




More information about the MITgcm-support mailing list