Subroutine to calculate the precomputed tables on a FE_film
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(FE_FILM), | intent(inout) | :: | fe_f |
subroutine init_prc_tab(fe_f)
implicit none
type(FE_FILM), intent(inout) :: fe_f ! *FE film*
integer(kind=I4) :: i, j, k, ng
real(kind=R8), dimension(:), allocatable :: pg, wg
! number of Gauss points
ng = 2
! table allocation
allocate(pg(ng), wg(ng))
fe_f%prc%ng = ng
allocate( fe_f%prc%pg(ng), &
fe_f%prc%wg(ng), &
fe_f%prc%vni4 (4, ng, ng), &
fe_f%prc%vni4x(4, ng, ng), &
fe_f%prc%vni4y(4, ng, ng), &
fe_f%prc%vni4d(4, ng, ng), &
fe_f%prc%vcal(20, ng, ng) )
! Gauss points definition
pg(1) = - 1._R8 / sqrt(3._R8)
pg(2) = - pg(1)
wg = 1._R8
fe_f%prc%pg = pg
fe_f%prc%wg = wg
! precomputation of shape functions and derivatives at the Gauss points
do i = 1, ng
do j = 1, ng
do k = 1, 4
fe_f%prc%vni4(k, i, j) = ni4(k, pg(i), pg(j))
enddo
enddo
enddo
deallocate(pg, wg)
return
endsubroutine init_prc_tab