!======================================================================!
!                                                                      !
!    Software Name : FrontCOMP_cure   Ver. 3.1                         !
!                                                                      !
!      Module Name : m_heat_mat_ass_boundary                           !
!      Category    : Heat Analysis                                     !
!                                                                      !
!      Developed based on "FrontSTR" of RSS21 project                  !
!                                                                      !
!                     Written by Yasuji Fukahori,    2006/06/01        !
!                                Tomotaka Ogasawara, 2013/03/26        !
!                                                                      !
!     Contact address :  IIS,The University of Tokyo, CISS             !
!                                                                      !
!    "Composite Material Strength & Reliability Evaluation Simulator"  !
!                                                                      !
!======================================================================!

module m_heat_mat_ass_boundary
   contains
!C***
!C*** MAT_ASS_BOUNDARY
!C***
   subroutine heat_mat_ass_boundary ( hecMESH,hecMAT,fstrHEAT,ATIME,BTIME,DTIME,BETA,incr,iterALL )

      use m_fstr
      use m_heat_mat_ass_bc_CFLUX
      use m_heat_mat_ass_bc_DFLUX
      use m_heat_mat_ass_bc_FIXT
      use m_heat_mat_ass_bc_FILM
      use m_heat_mat_ass_bc_RADIATE

      implicit none
      integer(kind=kint) incr,iterALL
      real(kind=kreal)   ATIME,BTIME,CTIME,DTIME,BETA
      type (fstr_heat         ) :: fstrHEAT
      type (hecmwST_matrix    ) :: hecMAT
      type (hecmwST_local_mesh) :: hecMESH

      CTIME = ATIME + BTIME

!C
!C +---------+
!C | !CFLUX  |
!C +---------+
!C===
      call heat_mat_ass_bc_CFLUX ( hecMAT, fstrHEAT, CTIME )
!C
!C +---------+
!C | !DFLUX  |
!C +---------+
!C===
      call heat_mat_ass_bc_DFLUX ( hecMESH, hecMAT, fstrHEAT, CTIME ,DTIME,BETA,incr,iterALL )
!C
!C +--------+
!C | !FILM  |
!C +--------+
!C===
      call heat_mat_ass_bc_FILM ( hecMESH, hecMAT, fstrHEAT, CTIME ,DTIME,BETA,incr,iterALL )
!C
!C +-----------+
!C | !RADIATE  |
!C +-----------+
!C===
      call heat_mat_ass_bc_RADIATE ( hecMESH, hecMAT, fstrHEAT, CTIME )
!C
!C +------------+
!C | !BOUNDARY  |
!C +------------+
!C===
      call heat_mat_ass_bc_FIXT ( hecMAT, fstrHEAT, CTIME )
      return

   end subroutine heat_mat_ass_boundary

!C--------------------------------------------------------------------
!C*** MAT_ASS_BOUNDARY FOR CURE
!C--------------------------------------------------------------------
   subroutine cure_mat_ass_boundary ( hecMESH,hecMAT,fstrHEAT,ATIME,BTIME,DTIME,BETA,incr,iterCUR )

      use m_fstr
      use m_heat_mat_ass_bc_CFLUX
      use m_heat_mat_ass_bc_DFLUX
      use m_heat_mat_ass_bc_FIXT
      use m_heat_mat_ass_bc_FILM
      use m_heat_mat_ass_bc_RADIATE

      implicit none
      integer(kind=kint) incr,iterCUR
      real(kind=kreal)   ATIME,BTIME,CTIME,DTIME,BETA
      type (fstr_heat         ) :: fstrHEAT
      type (hecmwST_matrix    ) :: hecMAT
      type (hecmwST_local_mesh) :: hecMESH

      CTIME = ATIME + BTIME

!C +---------+
!C | !DFLUX  |
!C +---------+
!C===
      call cure_mat_ass_bc_DFLUX ( hecMESH, hecMAT, fstrHEAT, CTIME ,DTIME,BETA,incr,iterCUR )
!C===
      return
   end subroutine cure_mat_ass_boundary 


end module m_heat_mat_ass_boundary
