tides_update_eta_eq_impl Subroutine

private subroutine tides_update_eta_eq_impl(nx, ny, nconst, species_c, amp_cos, amp_sin, cos_struct, sin_struct, eta_eq)

Flat-impl device fill (explicit-shape dummies — no descriptor walk). eta_eq(i,j) = sum_c amp_cos(c)cos_struct(i,j,m) + amp_sin(c)sin_struct(i,j,m), m = species_c(c). Contiguous index (i) innermost.

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: nx
integer, intent(in) :: ny
integer, intent(in) :: nconst
integer, intent(in) :: species_c(nconst)
real(kind=wp), intent(in) :: amp_cos(nconst)
real(kind=wp), intent(in) :: amp_sin(nconst)
real(kind=wp), intent(in) :: cos_struct(nx,ny,3)
real(kind=wp), intent(in) :: sin_struct(nx,ny,3)
real(kind=wp), intent(out) :: eta_eq(nx,ny)

Calls

proc~~tides_update_eta_eq_impl~~CallsGraph proc~tides_update_eta_eq_impl tides_update_eta_eq_impl local local proc~tides_update_eta_eq_impl->local

Called by

proc~~tides_update_eta_eq_impl~~CalledByGraph proc~tides_update_eta_eq_impl tides_update_eta_eq_impl proc~tides_update_eta_eq tides_update_eta_eq proc~tides_update_eta_eq->proc~tides_update_eta_eq_impl proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~tides_update_eta_eq proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step_split proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_step proc~rdb_ocean_step rdb_ocean_step proc~rdb_ocean_step->proc~engine_step proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean

Variables

Type Visibility Attributes Name Initial
real(kind=wp), private :: acc
integer, private :: c
integer, private :: i
integer, private :: j
integer, private :: m

Source Code

   subroutine tides_update_eta_eq_impl(nx, ny, nconst, species_c, amp_cos, &
                                       amp_sin, cos_struct, sin_struct, eta_eq)
      !! Flat-impl device fill (explicit-shape dummies — no descriptor
      !! walk).  eta_eq(i,j) = sum_c amp_cos(c)*cos_struct(i,j,m)
      !!                            + amp_sin(c)*sin_struct(i,j,m),
      !! m = species_c(c).  Contiguous index (i) innermost.
      integer, intent(in) :: nx, ny, nconst
      integer, intent(in) :: species_c(nconst)
      real(wp), intent(in) :: amp_cos(nconst), amp_sin(nconst)
      real(wp), intent(in) :: cos_struct(nx, ny, 3), sin_struct(nx, ny, 3)
      real(wp), intent(out) :: eta_eq(nx, ny)
      integer :: i, j, c, m
      real(wp) :: acc

      do concurrent(j=1:ny, i=1:nx) local(acc, c, m)
         acc = 0.0_wp
         do c = 1, nconst
            m = species_c(c)
            acc = acc + amp_cos(c)*cos_struct(i, j, m) + amp_sin(c)*sin_struct(i, j, m)
         end do
         eta_eq(i, j) = acc
      end do
   end subroutine tides_update_eta_eq_impl