Subroutine to to solve a FE_FILM
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(FE_FILM), | intent(inout) | :: | fe_f | FE_film data type |
||
type(MAT_SOLV), | intent(inout) | :: | mat | matrices for solving |
||
integer(kind=I4), | intent(in) | :: | ass_c | assembly type |
subroutine assembly_FE_film_reynolds(fe_f, mat, ass_c)
implicit none
type(FE_FILM), intent(inout) :: fe_f !! *FE_film data type*
type(MAT_SOLV), intent(inout) :: mat !! *matrices for solving*
integer(kind=I4), intent(in) :: ass_c !! *assembly type*
integer(kind=I4), dimension(2) :: compt
integer(kind=I4), dimension(MAX_NNE) :: tind4
real(kind=R8), dimension(MAX_NNE) :: b4
real(kind=R8), dimension(MAX_NNE, MAX_NNE) :: k4
integer(kind=I4) :: e, i, ii, el_t, el_n
! assembly
compt(1:2) = 1
mat%b = 0._R8
do e = 1, fe_f%m%ne
call elementary_assembly_FE_film_reynolds(fe_f = fe_f, & !
ke_ij = k4, & ! elementary matrix : OUT
be_i = b4, & ! elementary rhs member : OUT
ind_e = tind4, & ! elementary index member : OUT
e = e, & ! element number
ass_c = ass_c) ! assembly type
do i = 1, 4
ii = tind4(i)
mat%b(ii) = mat%b(ii) + b4(i)
enddo
el_t = fe_f%m%el_t(e)
el_n = fe_f%m%el_n(e)
! assembly of the elemental matrix in the solver matrix
if (ass_c == ASS) then
call assemble_in_mat_sol(mat = mat, &
num = e, &
nelt = el_t, &
nline = el_n, &
tind = tind4, &
m_elt = k4, &
compt = compt)
endif
enddo
if (ass_c == ASS) mat%eltptr(1) = 1
return
endsubroutine assembly_FE_film_reynolds