!Description:
!  原子番号とその個数から分子量を計算する
!
! Current Code Owner: sugiyama@gfd-dennou.org
!
! History: 
!   Version    Date          Comment
!   -------    ----------    -------
!   1.0        2003-01-19    新規作成
!   1.1        2003-01-23    原子記号を原子番号に変換するように
!   1.2        2003-01-24    インターフェイス文も含める
!
! Copyright (C) SUGIYAMA Ko-ichiro, 2003, All rights reserved

!!!
!!!インターフェイス文
!!!
module interface_atm2wt

  interface
     subroutine atm2wt(atmnum, enum, molwt)
       integer, intent(in)   :: atmnum(:)
       real(8), intent(in)   :: enum(:)
       real(8), intent(out)  :: molwt
     end subroutine atm2wt
  end interface

end module interface_atm2wt


!!!
!!!サブルーチン
!!!
subroutine atm2wt(atmnum, enum, molwt)
  use prm_chem, only: atmwt, amax
  implicit none
  
  integer, intent(in)   :: atmnum(:)
  real(8), intent(in)   :: enum(:)
  real(8), intent(out)  :: molwt

  real(8), allocatable  :: atmwt_tmp(:)
  integer               :: M
  integer               :: num
  

!!!
!!!変数の初期化
!!!
  M = size(atmnum, 1)
  allocate(atmwt_tmp(M))
  
  do num = 1, M
     atmwt_tmp(num) = atmwt(atmnum(num))
  end do
     

!!!
!!!分子量の計算
!!!
  molwt = dot_product(atmwt_tmp, enum)


!!!
!!!後片付け
!!!
  deallocate(atmwt_tmp)

end subroutine atm2wt
