multi_scale_create_rect_fe_film Subroutine

public subroutine multi_scale_create_rect_fe_film(data_f, bs_nx, bs_ny, num_pts, num_pbs, ms_fe_f)


Arguments

Type IntentOptional AttributesName
type(DATA_FILM), intent(inout) :: data_f

data of the film

integer(kind=I4), intent(in) :: bs_nx

number of nodes in direction for the bottom scale

integer(kind=I4), intent(in) :: bs_ny

number of nodes in direction for the bottom scale

type(NUM_PAR), intent(in) :: num_pts

numerical parameters for iterative solution, top scale

type(NUM_PAR), intent(in) :: num_pbs

numerical parameters for iterative solution, bottom scale

type(MS_FE_FILM), intent(inout) :: ms_fe_f

MS FE film


Calls

proc~~multi_scale_create_rect_fe_film~~CallsGraph proc~multi_scale_create_rect_fe_film multi_scale_create_rect_fe_film proc~create_rect_fe_film create_rect_FE_film proc~multi_scale_create_rect_fe_film->proc~create_rect_fe_film proc~create_rect_x_ymesh create_rect_x_ymesh proc~create_rect_fe_film->proc~create_rect_x_ymesh

Called by

proc~~multi_scale_create_rect_fe_film~~CalledByGraph proc~multi_scale_create_rect_fe_film multi_scale_create_rect_fe_film proc~init_ms_prob init_ms_prob proc~init_ms_prob->proc~multi_scale_create_rect_fe_film proc~test_slider_ms test_slider_ms proc~test_slider_ms->proc~init_ms_prob proc~test_rough_ms test_rough_ms proc~test_rough_ms->proc~init_ms_prob proc~run_test run_test proc~run_test->proc~test_slider_ms proc~run_test->proc~test_rough_ms program~main main program~main->proc~run_test

Contents


Source Code

   subroutine multi_scale_create_rect_fe_film(data_f, bs_nx, bs_ny, num_pts, num_pbs, ms_fe_f)
   implicit none
   type(DATA_FILM),  intent(inout) :: data_f     !! *data of the film*
   integer(kind=I4), intent(in   ) :: bs_nx      !! *number of nodes in \(x\) direction for the bottom scale*
   integer(kind=I4), intent(in   ) :: bs_ny      !! *number of nodes in \(y\) direction for the bottom scale*
   type(NUM_PAR),    intent(in   ) :: num_pts    !! *numerical parameters for iterative solution, top scale*
   type(NUM_PAR),    intent(in   ) :: num_pbs    !! *numerical parameters for iterative solution, bottom scale*
   type(MS_FE_FILM), intent(inout) :: ms_fe_f    !! *MS FE film*

      integer(kind=I4) :: e, ne, i1, i3

      ! creation of the top scale fe film
      call create_rect_FE_film(data_f = data_f,          &
                                num_p = num_pts,         &
                                 fe_f = ms_fe_f%ts_fe_f)

      ! allocation of the bottom scale table
      ne = ms_fe_f%ts_fe_f%m%ne
      allocate(ms_fe_f%bs_fe_f(ne))

      ! creation of the bottom scale fe_film
      do e = 1, ne
         i1    = ms_fe_f%ts_fe_f%m%con(e, 1)
         i3    = ms_fe_f%ts_fe_f%m%con(e, 3)

         ms_fe_f%bs_fe_f(e)%m%nx = bs_nx
         ms_fe_f%bs_fe_f(e)%m%ny = bs_ny
         ms_fe_f%bs_fe_f(e)%m%zx = ms_fe_f%ts_fe_f%m%x(i1)
         ms_fe_f%bs_fe_f(e)%m%zy = ms_fe_f%ts_fe_f%m%y(i1)
         ms_fe_f%bs_fe_f(e)%m%lx = ms_fe_f%ts_fe_f%m%x(i3) - ms_fe_f%bs_fe_f(e)%m%zx
         ms_fe_f%bs_fe_f(e)%m%ly = ms_fe_f%ts_fe_f%m%y(i3) - ms_fe_f%bs_fe_f(e)%m%zy
         call create_rect_FE_film(data_f = data_f,                &
                                   num_p = num_pbs,               &
                                    fe_f = ms_fe_f%bs_fe_f(e))
      enddo
   return
   endsubroutine multi_scale_create_rect_fe_film