Line data Source code
1 : module mo_lin_matrix 2 : private 3 : public :: linmat 4 : contains 5 2174023800 : subroutine linmat01( mat, y, rxt, het_rates ) 6 : !---------------------------------------------- 7 : ! ... linear matrix entries for implicit species 8 : !---------------------------------------------- 9 : use chem_mods, only : gas_pcnst, rxntot, nzcnt 10 : use shr_kind_mod, only : r8 => shr_kind_r8 11 : implicit none 12 : !---------------------------------------------- 13 : ! ... dummy arguments 14 : !---------------------------------------------- 15 : real(r8), intent(in) :: y(gas_pcnst) 16 : real(r8), intent(in) :: rxt(rxntot) 17 : real(r8), intent(in) :: het_rates(max(1,gas_pcnst)) 18 : real(r8), intent(inout) :: mat(nzcnt) 19 2174023800 : mat(1) = -( het_rates(1) ) 20 2174023800 : mat(2) = -( het_rates(2) ) 21 2174023800 : mat(3) = -( rxt(8) + het_rates(3) ) 22 2174023800 : mat(4) = -( rxt(9) + het_rates(4) ) 23 2174023800 : mat(5) = -( rxt(10) + het_rates(5) ) 24 2174023800 : mat(7) = -( rxt(11) + rxt(12) + rxt(14) + het_rates(7) ) 25 2174023800 : mat(9) = -( het_rates(8) ) 26 2174023800 : mat(10) = -( het_rates(9) ) 27 2174023800 : mat(11) = -( het_rates(10) ) 28 2174023800 : mat(12) = -( rxt(1) + rxt(5) + het_rates(11) ) 29 2174023800 : mat(14) = -( het_rates(12) ) 30 2174023800 : mat(25) = rxt(13) 31 2174023800 : mat(15) = -( rxt(7) + het_rates(13) ) 32 2174023800 : mat(16) = -( het_rates(14) ) 33 2174023800 : mat(17) = -( het_rates(15) ) 34 2174023800 : mat(18) = -( het_rates(16) ) 35 2174023800 : mat(19) = -( het_rates(17) ) 36 2174023800 : mat(20) = -( het_rates(18) ) 37 2174023800 : mat(21) = -( het_rates(19) ) 38 2174023800 : mat(22) = -( het_rates(20) ) 39 2174023800 : mat(23) = -( het_rates(21) ) 40 2174023800 : mat(24) = -( het_rates(22) ) 41 2174023800 : mat(26) = -( rxt(13) + het_rates(23) ) 42 2174023800 : mat(8) = rxt(11) + rxt(12) + .500_r8*rxt(14) 43 2174023800 : mat(27) = -( het_rates(24) ) 44 2174023800 : mat(28) = -( het_rates(25) ) 45 2174023800 : mat(29) = -( het_rates(26) ) 46 2174023800 : mat(30) = -( rxt(2) + het_rates(27) ) 47 2174023800 : mat(31) = -( rxt(3) + het_rates(28) ) 48 2174023800 : mat(32) = -( rxt(15) + het_rates(29) ) 49 2174023800 : mat(34) = -( het_rates(30) ) 50 2174023800 : mat(33) = rxt(15) 51 2174023800 : mat(35) = -( rxt(4) + het_rates(31) ) 52 2174023800 : mat(13) = rxt(5) 53 2174023800 : mat(6) = 2.000_r8*rxt(10) 54 2174023800 : end subroutine linmat01 55 2174023800 : subroutine linmat( mat, y, rxt, het_rates ) 56 : !---------------------------------------------- 57 : ! ... linear matrix entries for implicit species 58 : !---------------------------------------------- 59 : use chem_mods, only : gas_pcnst, rxntot, nzcnt 60 : use shr_kind_mod, only : r8 => shr_kind_r8 61 : implicit none 62 : !---------------------------------------------- 63 : ! ... dummy arguments 64 : !---------------------------------------------- 65 : real(r8), intent(in) :: y(gas_pcnst) 66 : real(r8), intent(in) :: rxt(rxntot) 67 : real(r8), intent(in) :: het_rates(max(1,gas_pcnst)) 68 : real(r8), intent(inout) :: mat(nzcnt) 69 2174023800 : call linmat01( mat, y, rxt, het_rates ) 70 2174023800 : end subroutine linmat 71 : end module mo_lin_matrix