cinit Subroutine

public pure subroutine cinit(c, cprime, pred_ic, rpar)

Uses

  • proc~~cinit~~UsesGraph proc~cinit cinit module~web_par web_par proc~cinit->module~web_par module~daskr_kinds daskr_kinds module~web_par->module~daskr_kinds iso_fortran_env iso_fortran_env module~daskr_kinds->iso_fortran_env

This routine computes and loads the vectors of initial values.

Arguments

Type IntentOptional Attributes Name
real(kind=rk), intent(out) :: c(:)
real(kind=rk), intent(out) :: cprime(:)
real(kind=rk), intent(in) :: pred_ic
real(kind=rk), intent(inout) :: rpar(:)

Calls

proc~~cinit~~CallsGraph proc~cinit cinit proc~f~2 f proc~cinit->proc~f~2 proc~rates rates proc~f~2->proc~rates

Called by

proc~~cinit~~CalledByGraph proc~cinit cinit program~example_web example_web program~example_web->proc~cinit

Variables

Type Visibility Attributes Name Initial
integer, public :: i
integer, public :: ioff
integer, public :: iyoff
integer, public :: jx
integer, public :: jy
integer, public :: npp1
real(kind=rk), public :: argx
real(kind=rk), public :: argy
real(kind=rk), public :: fac
real(kind=rk), public :: t
real(kind=rk), public :: x
real(kind=rk), public :: y

Source Code

   pure subroutine cinit(c, cprime, pred_ic, rpar)
   !! This routine computes and loads the vectors of initial values.
      use web_par, only: ax, ay, alpha, beta, dx, dy, ns, np, mx, my, mxns, pi
      real(rk), intent(out) :: c(:)
      real(rk), intent(out) :: cprime(:)
      real(rk), intent(in)  :: pred_ic
      real(rk), intent(inout) :: rpar(:)

      integer :: i, ioff, iyoff, jx, jy, npp1
      real(rk) :: argx, argy, fac, t, x, y

      ! Load C
      npp1 = np + 1
      do jy = 1, my
         y = (jy - 1)*dy
         argy = 16*y*y*(ay - y)*(ay - y)
         iyoff = mxns*(jy - 1)
         do jx = 1, mx
            x = (jx - 1)*dx
            argx = 16*x*x*(ax - x)*(ax - x)
            ioff = iyoff + ns*(jx - 1)
            fac = one + alpha*x*y + beta*sin(4*pi*x)*sin(4*pi*y)
            do i = 1, np
               c(ioff + i) = 10.0_rk + i*argx*argy
            end do
            do i = npp1, ns
               c(ioff + i) = pred_ic
            end do
         end do
      end do

      ! Load CPRIME
      t = zero
      call f(t, c, cprime, rpar)
      do jy = 1, my
         iyoff = mxns*(jy - 1)
         do jx = 1, mx
            ioff = iyoff + ns*(jx - 1)
            do i = npp1, ns
               cprime(ioff + i) = zero
            end do
         end do
      end do

   end subroutine cinit