Form 132 (in 2019WP/AGRIF-01_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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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) ?' by jchanut2019-05-15T10:12:56+02:00
manual: 'No change required neither in the reference manual nor in web pages.' by jchanut2019-05-14T17: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)? ' by jchanut2019-05-14T17:52:18+02:00

Change History

Changed on 2019-05-15T10: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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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 2019-05-14T18: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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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 2019-05-14T18: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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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 2019-05-14T18: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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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 2019-05-14T17: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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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 2019-05-14T17: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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,jj) * hur_e(ji,jj) END DO END DO

Changed on 2019-05-14T17: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(ji-1,jj) * hvr_e(ji,jj) ! Specified fluxes: ua_e(ji,jj) = ubdy_w(ji-1,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)?