Form 132 (in 2019WP/AGRIF01_jchanut_small_jpi_jpj)
Saved Values
in subcontext 'abstract'
implementation:  'The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO Concerning changes required in procnames (i.e. replacement of western_side, eastern_side logicals etc...), I am less sure how AGRIF proceeds for ghost cells if a subdomain does not contain an open boundary... For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values inside the domain are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). To circumvent this, one could read the sponge array from a netcdf file (created thanks to the NESTING tools) ?'  20190515T10:12:56+02:00  —

manual:  'No change required neither in the reference manual nor in web pages.'  20190514T17:52:18+02:00  —
description:  'Contrary to other parts of the code, AGRIF interface for NEMO (NST routines) is using, for example, nbondi, western_side, eastern_side to deal with the presence or for of boundary conditions… We should use the mi0, mi1, mj0, mj1 arrays do do this in a cleaner way that would in addition work for any size of jpi and jpj (at least until 3)? '  20190514T17:52:18+02:00  —
Change History
Changed on 20190515T10:12:56+02:00 by jchanut:

implementation changed from
The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO Concerning changes required in procnames (i.e. replacement of western_side, eastern_side logicals etc...), I am less sure how AGRIF proceeds for ghost cells if a subdomain does not contain an open boundary... For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). Any idea ? Provide sponge array as an external input on the global domain ? to
The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO Concerning changes required in procnames (i.e. replacement of western_side, eastern_side logicals etc...), I am less sure how AGRIF proceeds for ghost cells if a subdomain does not contain an open boundary... For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values inside the domain are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). To circumvent this, one could read the sponge array from a netcdf file (created thanks to the NESTING tools) ?
Changed on 20190514T18:30:04+02:00 by jchanut:

implementation changed from
The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO Concerning changes required in procnames (i.e. replacement of western_side, eastern_side logicals etc...), I am less sure how AGRIF proceeds for ghost cells if a subdomain does not contain an open boundary... For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). Any idea ? to
The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO Concerning changes required in procnames (i.e. replacement of western_side, eastern_side logicals etc...), I am less sure how AGRIF proceeds for ghost cells if a subdomain does not contain an open boundary... For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). Any idea ? Provide sponge array as an external input on the global domain ?
Changed on 20190514T18:28:43+02:00 by jchanut:

implementation changed from
The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). Any idea ? to
The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO Concerning changes required in procnames (i.e. replacement of western_side, eastern_side logicals etc...), I am less sure how AGRIF proceeds for ghost cells if a subdomain does not contain an open boundary... For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). Any idea ?
Changed on 20190514T18:23:08+02:00 by jchanut:

implementation changed from
The restriction on the minimum mpp size occurs exclusively: (i) where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) in the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), we give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying sponge in bays not connected to the parent grid for instance). Any idea ? to
The restriction on the minimum mpp size occurs exclusively: (i) Where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) In the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), one should avoid the use of nbondi/nbondj variables to locate an open boundary on a local sub domain. Indeed, this would discard boundary points located at more than one subdomain size from the edge of the domain. If the sub domain has a size lower than nbghostcells + 2 (i.e. 5 in the default case), there will be an error. We give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying a sponge in bays not connected to the parent grid for instance). Any idea ?
Changed on 20190514T17:58:55+02:00 by jchanut:

implementation changed from
The restriction on the minimum mpp size occurs exclusively: (i) where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) in the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), we give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO to
The restriction on the minimum mpp size occurs exclusively: (i) where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) in the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), we give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO For case (ii), one should define the sponge coefficient thanks to global indices on the local sub domain (instead of a definition based solely on local indices). One problem remains: sponge values are null if the mask at the outer edge is null (to prevent applying sponge in bays not connected to the parent grid for instance). Any idea ?
Changed on 20190514T17:55:11+02:00 by jchanut:

implementation changed from
The restriction on the minimum mpp size occurs exclusively where (i) lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) and (ii) in the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), we give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO to
The restriction on the minimum mpp size occurs exclusively: (i) where lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) (ii) in the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), we give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO
Changed on 20190514T17:52:18+02:00 by jchanut:

implementation changed from
Describe flow chart of the changes in the code. List the .F90 files and modules to be changed. Detailed list of new variables (including namelists) to be defined. Give for each the chosen name (following coding rules) and definition. to
The restriction on the minimum mpp size occurs exclusively where (i) lateral boundary conditions are set from the parent grid (i.e. in modules agrif_oce_interp.F90 and agrif_top_interp.F90) and (ii) in the definition of the sponge layer diffusivities/viscosities (module agrif_oce_sponge.F90). For case (i), we give below an example of the change for a western open boundary in subroutine AGRIF_dyn_ts: IF((nbondi == 1).OR.(nbondi == 2)) THEN DO jj=1,jpj va_e(2:nbghostcells+1,jj) = vbdy_w(1:nbghostcells,jj) * hvr_e(2:nbghostcells+1,jj) ! Specified fluxes: ua_e(2:nbghostcells+1,jj) = ubdy_w(1:nbghostcells,jj) * hur_e(2:nbghostcells+1,jj) END DO ENDIF should be replaced by: iwstart = 2 iwend = nbghostcells+1 DO ji = mi0(iwstart), mi1(iwend) DO jj=1,jpj va_e(ji,jj) = vbdy_w(ji1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji1,jj) * hur_e(ji,jj) END DO END DO 
manual changed from
Using part 1 and 2, define the summary of changes to be done in the NEMO reference manual (tex files), and in the content of web pages. to
No change required neither in the reference manual nor in web pages. 
description changed from
Restriction on the minimum mpp size occurs exclusively where lateral boundary conditions are set from the parent grid or in the definition of the sponge layer diffusivities/viscosities. to
Contrary to other parts of the code, AGRIF interface for NEMO (NST routines) is using, for example, nbondi, western_side, eastern_side to deal with the presence or for of boundary conditions… We should use the mi0, mi1, mj0, mj1 arrays do do this in a cleaner way that would in addition work for any size of jpi and jpj (at least until 3)?