Subroutine to create a MS_FE_FILM
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
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 |
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