Advertisement
salu1987

Untitled

May 13th, 2024
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Fortran 230.88 KB | Source Code | 0 0
  1. module coeffi
  2.     implicit none
  3. !   Control variables
  4.     integer :: ncall, fisorion
  5.  
  6.     !20210608
  7.     !integers defining the size of the system
  8.     integer :: N_loop_start, N_C15_st
  9.     integer :: N_SIAs_m, N_VACs_m, N_C15, N_VACs, N_L111, N_L111t, N_L100, Nu_L111t, Nu_L100, Nu_VACs
  10.     double precision :: dparate, f_g2s
  11.     !absorption rate
  12.     double precision, dimension(:,:), pointer :: k_SIAs_SIAs, k_SIAs_VACs, k_SIAs_C15,k_SIAs_L111,k_SIAs_L111t,k_SIAs_L100
  13.     double precision, dimension(:,:), pointer :: k_VACs_VACs, k_VACs_C15,  k_VACs_L111,k_VACs_L111t, k_VACs_L100
  14.     double precision, dimension(:,:), pointer :: k_VACs_uVACs,k_L111_L111, k_L111_L111t,k_L111_L100
  15.     double precision, dimension(:,:), pointer :: k_L111t_L111t,k_L111t_L100, k_C15_L111t,k_SIAs_uVACs
  16.     double precision, dimension(:,:), pointer :: k_L111t_uVACs,k_L111_uVACs, k_uL111t_uVACs
  17.     !emission rate
  18.     double precision, dimension(:), pointer :: g_SIA_SIAs, g_VAC_SIAs,g_SIA_VACs,g_VAC_VACs,g_SIA_C15, g_VAC_C15
  19.     double precision, dimension(:), pointer :: g_SIA_L111, g_VAC_L111,g_SIA_L111t,g_VAC_L111t,g_SIA_L100, g_VAC_L100
  20.     double precision, dimension(:), pointer :: g_trap_L111t, k_trap_L111, k_trap_L111t, k_trap_uL111t, k_trap_VACs
  21.     double precision, dimension(:), pointer :: fcascade_SIAs_c15,fcascade_SIAs_L111,fcascade_SIAs_L100
  22.     double precision, dimension(:), pointer :: fcascade_SIAs, fcascade_VACs,f_trans111, f_trans100
  23.     double precision, dimension(:), pointer :: loss_SIAs, loss_VACs, loss_L111,loss_L111t
  24.     !mesh para
  25.     integer, dimension(:), pointer :: mesh_x0, mesh_ust, mesh_ued, mesh_dlta
  26.     !equlibriem concentration
  27.     double precision, dimension(:), pointer :: Ceq_SIAs, Ceq_VACs
  28.     double precision, dimension(:), pointer   :: testval1
  29.     double precision, dimension(:,:), pointer :: testval2
  30.     double precision, dimension(:,:,:), pointer :: testval3
  31.     double precision, dimension(:,:), pointer :: k_SIAs_uL111t, k_VACs_uL111t, k_L111_uL111t, k_L111t_uL111t, k_L100_uL111t
  32.     double precision, dimension(:), pointer   :: g_SIA_uVACs,g_VAC_uVACs,g_SIA_uL111t,  g_VAC_uL111t, loss_uL111t
  33.     !for L100 group
  34.     double precision, dimension(:,:), pointer :: k_SIAs_uL100, k_VACs_uL100, k_L111_uL100, k_L111t_uL100
  35.     double precision, dimension(:), pointer   :: g_SIA_uL100, g_VAC_uL100
  36.     double precision, dimension(:,:), pointer :: k_uL111t_uL111t, k_uL111t_uL100
  37. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  38. !factor of +group_k = dft + group_j    
  39.     double precision, dimension(:,:,:), pointer ::akaL0_Idef_L0, akaL0_Idef_L1, akaL1_Idef_L0, akaL1_Idef_L1
  40.     double precision, dimension(:,:,:), pointer ::akaL0_Vdef_L0, akaL0_Vdef_L1, akaL1_Vdef_L0, akaL1_Vdef_L1
  41.     double precision, dimension(:,:,:), pointer ::akavL0_Idef_L0, akavL0_Idef_L1, akavL1_Idef_L0, akavL1_Idef_L1
  42.     double precision, dimension(:,:,:), pointer ::akavL0_Vdef_L0, akavL0_Vdef_L1, akavL1_Vdef_L0, akavL1_Vdef_L1
  43. !factor of -group_j = (dft) + group_j(full group)
  44.     double precision, dimension(:), pointer :: abL0_L0, abL0_L1, abL1_L0, abL1_L1
  45. !factor of dft = (dft) + group_j
  46.     double precision, dimension(:), pointer :: adft_L0, adft_L1
  47. !factor of +group_k = group_i + group_j
  48.     double precision, dimension(:,:,:), pointer :: akaL0_L0L0, akaL0_L0L1, akaL0_L1L0, akaL0_L1L1
  49.     double precision, dimension(:,:,:), pointer :: akaL1_L0L0, akaL1_L0L1, akaL1_L1L0, akaL1_L1L1
  50. !factor of -group_i (group_i + group_j -> group_k)
  51.     double precision, dimension(:,:,:), pointer :: akbLi0_Li0L0, akbLi0_Li0L1, akbLi0_Li1L0, akbLi0_Li1L1
  52.     double precision, dimension(:,:,:), pointer :: akbLi1_Li0L0, akbLi1_Li0L1, akbLi1_Li1L0, akbLi1_Li1L1
  53.  
  54. !factor of +group_k = group_i + group_j
  55.     double precision, dimension(:,:,:), pointer :: akavL0_L0L0, akavL0_L0L1, akavL0_L1L0, akavL0_L1L1
  56.     double precision, dimension(:,:,:), pointer :: akavL1_L0L0, akavL1_L0L1, akavL1_L1L0, akavL1_L1L1
  57. !factor of -group_i (group_i + group_j -> group_k)
  58.     double precision, dimension(:,:,:), pointer :: akbvLi0_Li0L0, akbvLi0_Li0L1, akbvLi0_Li1L0, akbvLi0_Li1L1
  59.     double precision, dimension(:,:,:), pointer :: akbvLi1_Li0L0, akbvLi1_Li0L1, akbvLi1_Li1L0, akbvLi1_Li1L1
  60. !####################################################
  61.  
  62. !add L111 trapped by C15 01052022
  63. integer :: N_lpc15
  64. !add cascade overlap parameters 01012022
  65. integer :: Nmax_cas, Nmin_cas
  66. double precision :: CascadeRate,f111t
  67. double precision, dimension(:), pointer :: f_L111toL100, f_L111ttoL100
  68. double precision, dimension(:), pointer :: f_L111toC15 , f_L111ttoC15
  69. double precision, dimension(:), pointer :: f_L100toC15 , f_L100toL100
  70. double precision, dimension(:), pointer :: f_C15toL100 , f_C15toC15
  71. double precision, dimension(:), pointer :: f_VACtoVAC
  72.  
  73. contains
  74. double precision function v1(x,ugroup)
  75.     implicit none
  76.     integer x, ugroup
  77.     v1 = 1.*(x-mesh_x0(ugroup))/(1+mesh_dlta(ugroup))
  78.     return
  79. end function v1
  80.  
  81. double precision function uf0(ugroup)
  82.     implicit none
  83.     integer ugroup
  84.     uf0 = 1./(1+2*mesh_dlta(ugroup))
  85.     return
  86. end function uf0
  87.  
  88. double precision function uf1(ugroup)
  89.     implicit none
  90.     integer ugroup
  91.     uf1 = 3./mesh_dlta(ugroup)/(1+2*mesh_dlta(ugroup))
  92.     return
  93. end function uf1
  94.  
  95. end module coeffi
  96.  
  97.  
  98. subroutine get_CascadeOverlap(f_L111toL100py,f_L111toC15py,f_L100toC15py, f_L100toL100py, &                        
  99.                         &     f_C15toL100py, f_C15toC15py,f_VACtoVACpy,Nmax_caspy)
  100. use coeffi
  101. implicit none
  102. integer :: Nmax_caspy
  103. double precision, target :: f_L111toL100py(0:Nmax_caspy), f_L111toC15py(0:Nmax_caspy)
  104. double precision, target :: f_L100toC15py(0:Nmax_caspy),  f_L100toL100py(0:Nmax_caspy)
  105. double precision, target :: f_C15toL100py(0:Nmax_caspy),  f_C15toC15py(0:Nmax_caspy)
  106. double precision, target :: f_VACtoVACpy(0:Nmax_caspy)
  107.        
  108. f_L111toL100  => f_L111toL100py
  109. f_L111ttoL100 => f_L111toL100py
  110. f_L111toC15   => f_L111toC15py
  111. f_L111ttoC15  => f_L111toC15py
  112. f_L100toC15   => f_L100toC15py
  113. f_L100toL100  => f_L100toL100py
  114. f_C15toL100   => f_C15toL100py
  115. f_C15toC15    => f_C15toC15py
  116. f_VACtoVAC    => f_VACtoVACpy
  117. end subroutine get_CascadeOverlap
  118.  
  119.  
  120. !20210621 transfer subroutine from python to fortran
  121. !20210611 get irradiation paras
  122. subroutine Get_coeff_iff(fvpy,fsiapy_c15,fsiapy_L111,fsiapy_L100, N_VAC_maxpy,N_C15py)
  123. use coeffi
  124. implicit none
  125. integer :: binpy, N_VAC_maxpy, N_C15py, i
  126. double precision , target :: fvpy(0:N_VAC_maxpy)
  127. double precision , target :: fsiapy_c15(0:N_C15py), fsiapy_L111(0:N_C15py), fsiapy_L100(0:N_C15py)
  128. fcascade_VACs  => fvpy
  129. fcascade_SIAs_c15  => fsiapy_c15
  130. fcascade_SIAs_L111 => fsiapy_L111
  131. fcascade_SIAs_L100 => fsiapy_L100
  132. do i=1, N_C15py
  133. write (*,*) fcascade_SIAs_c15(i),  fcascade_SIAs_L111(i),  fcascade_SIAs_L100(i),fcascade_VACs(i)
  134. enddo
  135. end subroutine Get_coeff_iff
  136.  
  137. !     !20210611 get c15 collaspe paras
  138. subroutine Get_coeff_trancoeffi(f_trans111py, f_trans100py, N_C15py)
  139. use coeffi
  140. implicit none
  141. integer :: N_C15py
  142. double precision , target :: f_trans111py(0:N_C15py), f_trans100py(0:N_C15py)
  143. f_trans111  => f_trans111py
  144. f_trans100  => f_trans100py
  145. end subroutine Get_coeff_trancoeffi
  146.  
  147. !     !20210611 get equlibriem cons of mobile species
  148. subroutine Get_coeff_equli_concen(Ceq_SIAs_py, Ceq_VACs_py,N_SIAs_mpy, N_VACs_mpy)
  149. use coeffi
  150. implicit none
  151. integer :: N_SIAs_mpy, N_VACs_mpy
  152. double precision , target :: Ceq_SIAs_py(0:N_SIAs_mpy), Ceq_VACs_py(0:N_VACs_mpy)
  153. Ceq_SIAs => Ceq_SIAs_py
  154. Ceq_VACs => Ceq_VACs_py
  155. end subroutine Get_coeff_equli_concen
  156.  
  157. !20210621 get loss strength
  158. subroutine Get_coeff_loss(loss_SIAs_py, loss_VACs_py, loss_L111_py,loss_L111t_py,loss_uL111t_py, &
  159.                         & N_SIAs_mpy, N_VACs_mpy, N_L111py, N_L111t_py,ngroup_py)
  160. use coeffi
  161. implicit none
  162. integer ::  N_SIAs_mpy, N_VACs_mpy, N_L111py, N_L111t_py, ngroup_py
  163. double precision , target :: loss_SIAs_py(0:N_SIAs_mpy), loss_VACs_py(0:N_VACs_mpy), &
  164.                             & loss_L111_py(0:N_L111py), loss_L111t_py(0:N_L111t_py), &
  165.                             & loss_uL111t_py(0:ngroup_py)
  166. loss_SIAs  => loss_SIAs_py
  167. loss_VACs  => loss_VACs_py
  168. loss_L111  => loss_L111_py
  169. loss_L111t => loss_L111t_py
  170. loss_uL111t => loss_uL111t_py
  171. end subroutine Get_coeff_loss
  172.  
  173. subroutine Get_meshpara(mesh_ust_py, mesh_ued_py,mesh_dlta_py, mesh_x0_py,ngroup_py)
  174. use coeffi
  175. implicit none
  176. integer :: ngroup_py
  177. integer, target :: mesh_ust_py(0:ngroup_py),mesh_ued_py(0:ngroup_py)
  178. integer, target :: mesh_dlta_py(0:ngroup_py),mesh_x0_py(0:ngroup_py)
  179. mesh_ust => mesh_ust_py
  180. mesh_ued => mesh_ued_py
  181. mesh_dlta => mesh_dlta_py
  182. mesh_x0   => mesh_x0_py  
  183. end subroutine Get_meshpara
  184.  
  185. !20210608
  186. subroutine Get_coeff_SIAs_VACs_C15(kSIAs_SIAspy,kSIAs_VACspy,kSIAs_C15py,kVACs_VACspy,kVACs_C15py,         &
  187.                                 &   gSIA_SIAspy, gVAC_SIAspy,gSIA_VACspy,gVAC_VACspy,gSIA_C15py,gVAC_C15py, &
  188.                                 &   N_SIAs_m_py, N_VACs_py,N_VACs_m_py, N_C15_py)
  189. use coeffi
  190. implicit none
  191. integer :: i
  192. integer :: N_SIAs_m_py, N_VACs_py,N_VACs_m_py, N_C15_py
  193. double precision, target :: kSIAs_SIAspy(0:N_SIAs_m_py,0:N_SIAs_m_py), kSIAs_VACspy(0:N_SIAs_m_py, 0:N_VACs_py)
  194. double precision, target :: kSIAs_C15py(0:N_SIAs_m_py,0:N_C15_py), kVACs_VACspy(0:N_VACs_m_py,0:N_VACs_py)
  195. double precision, target :: kVACs_C15py(0:N_VACs_m_py,0:N_C15_py), gSIA_SIAspy(0:N_SIAs_m_py), gVAC_SIAspy(0:N_SIAs_m_py)
  196. double precision, target :: gSIA_VACspy(0:N_VACs_py), gVAC_VACspy(0:N_VACs_py)
  197. double precision, target :: gSIA_C15py(0:N_C15_py), gVAC_C15py(0:N_C15_py)
  198.  
  199. k_SIAs_SIAs  =>  kSIAs_SIAspy
  200. k_SIAs_VACs  =>  kSIAs_VACspy
  201. k_SIAs_C15   =>  kSIAs_C15py
  202. k_VACs_VACs  =>  kVACs_VACspy
  203. k_VACs_C15   =>  kVACs_C15py
  204.  
  205. g_SIA_SIAs  =>  gSIA_SIAspy
  206. g_VAC_SIAs  =>  gVAC_SIAspy
  207. g_SIA_VACs  =>  gSIA_VACspy
  208. g_VAC_VACs  =>  gVAC_VACspy
  209. g_SIA_C15   =>  gSIA_C15py
  210. g_VAC_C15   =>  gVAC_C15py
  211.  
  212. end subroutine Get_coeff_SIAs_VACs_C15
  213.  
  214. !20220216
  215. subroutine Get_coeff_loop(kSIAs_L111py,kVACs_L111py,gVAC_L111py,gSIA_L111py,kL111_L111py,kL111_L111tpy,   &
  216.                         &kL111_L100py, kSIAs_L111tpy, kVACs_L111tpy, gV_L111tpy, gSIA_L111tpy,           &
  217.                         &kL111t_L111tpy, kL111t_L100py, gV_L100py, gSIA_L100py,kSIAs_L100py,kVACs_L100py,&
  218.                         &ktrap_L111py,ktrap_L111tpy, ktrap_uL111tpy,&
  219.                         &ktrap_VACspy, gtrap_L111tpy, kC15_L111tpy,&
  220.                         &N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy, N_L100py, &
  221.                         &N_ulpc15_py, N_C15_py,N_ugroup_py)
  222. use coeffi
  223. implicit none
  224. integer :: i, N_ulpc15_py, N_C15_py, N_ugroup_py
  225. integer :: N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy,N_L100py
  226. double precision, target :: kSIAs_L111py(0:N_SIAs_mpy,0:N_L111py), kVACs_L111py(0:N_VACs_py,0:N_L111py)
  227. double precision, target :: kL111_L111py(0:N_L111py,0:N_L111py), kL111_L111tpy(0:N_L111py,0:N_L111tpy)
  228. double precision, target :: kL111_L100py(0:N_L111py,0:N_L100py)
  229. double precision, target :: kSIAs_L111tpy(0:N_SIAs_mpy,0:N_L111tpy), kVACs_L111tpy(0:N_VACs_py,0:N_L111tpy)
  230. double precision, target :: kC15_L111tpy(0:N_C15_py,0:N_ulpc15_py)
  231. double precision, target :: kL111t_L111tpy(0:N_L111tpy,0:N_L111tpy), kL111t_L100py(0:N_L111tpy,0:N_L100py)
  232. double precision, target :: kSIAs_L100py(0:N_SIAs_mpy,0:N_L100py), kVACs_L100py(0:N_VACs_mpy,0:N_L100py)
  233. double precision, target :: gV_L111tpy(0:N_L111tpy), gSIA_L111tpy(0:N_L111tpy)
  234. double precision, target :: gVAC_L111py(0:N_L111py), gSIA_L111py(0:N_L111py)
  235. double precision, target :: gV_L100py(0:N_L100py), gSIA_L100py(0:N_L100py)
  236. double precision, target :: ktrap_L111py(0:N_L111py), gtrap_L111tpy(0:N_L111tpy)
  237. double precision, target :: ktrap_L111tpy(0:N_L111tpy), ktrap_uL111tpy(0:N_ugroup_py), ktrap_VACspy(0:N_VACs_mpy)
  238.  
  239. k_VACs_L111 =>  kVACs_L111py
  240. g_VAC_L111  =>  gVAC_L111py
  241. g_SIA_L111  =>  gSIA_L111py
  242. k_L111_L111 =>  kL111_L111py
  243. k_L111_L111t =>  kL111_L111tpy
  244. k_L111_L100 =>  kL111_L100py
  245. k_SIAs_L111 =>  kSIAs_L111py
  246. k_SIAs_L111t =>  kSIAs_L111tpy
  247. k_VACs_L111t =>  kVACs_L111tpy
  248. g_VAC_L111t  =>  gV_L111tpy
  249. g_SIA_L111t  =>  gSIA_L111tpy
  250. k_L111t_L111t =>  kL111t_L111tpy
  251. k_L111t_L100 =>  kL111t_L100py
  252.  
  253. k_C15_L111t => kC15_L111tpy
  254.  
  255. g_VAC_L100  => gV_L100py
  256. g_SIA_L100  => gSIA_L100py
  257. k_SIAs_L100 => kSIAs_L100py
  258. k_VACs_L100 => kVACs_L100py
  259.  
  260. k_trap_L111  => ktrap_L111py
  261. g_trap_L111t => gtrap_L111tpy
  262.  
  263. k_trap_L111t => ktrap_L111tpy
  264. k_trap_uL111t=> ktrap_uL111tpy
  265. k_trap_VACs  => ktrap_VACspy
  266.  
  267. !do i=10, 20
  268. !write (*,*) d111_sigme2(50,60), d111_sigme2(70,80) !, k_He_SIAs(i), g_SIA_SIAs(i)
  269. !end do
  270. end subroutine Get_coeff_loop
  271.  
  272. subroutine Get_coeff_grouploop(k_SIAs_uVACs_py, k_VACs_uVACs_py,k_L111t_uVACs_py,k_L111_uVACs_py,&
  273.                             &   k_uL111t_uVACs_py,k_SIAs_uL111t_py, &
  274.                             &  k_VACs_uL111t_py, k_L111_uL111t_py, k_L111t_uL111t_py, &
  275.                     & k_L100_uL111t_py,g_SIA_uVACs_py, g_VAC_uVACs_py, g_SIA_uL111t_py, g_VAC_uL111t_py,&
  276.                             & k_SIAs_uL100_py,  k_VACs_uL100_py, k_L111_uL100_py,    k_L111t_uL100_py, &
  277.                             & g_SIA_uL100_py,   g_VAC_uL100_py,  k_uL111t_uL111t_py, k_uL111t_uL100_py,&
  278.                             & N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy,N_L100py,N_ugroup)
  279. use coeffi
  280. implicit none
  281. integer :: N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy,N_L100py,N_ugroup
  282.  
  283. double precision, target :: k_SIAs_uL111t_py(0:N_SIAs_mpy,0:N_ugroup), k_VACs_uL111t_py(0:N_VACs_py,0:N_ugroup)
  284. double precision, target :: k_SIAs_uVACs_py(0:N_SIAs_mpy,0:N_ugroup),k_VACs_uVACs_py(0:N_VACs_mpy,0:N_ugroup)
  285. double precision, target :: k_L111_uL111t_py(0:N_L111py,0:N_ugroup),   k_L111t_uL111t_py(0:N_L111tpy,0:N_ugroup)
  286. double precision, target :: k_L111t_uVACs_py(0:N_L111tpy,0:N_ugroup),   k_L111_uVACs_py(0:N_L111py,0:N_ugroup)
  287. double precision, target :: k_L100_uL111t_py(0:N_L100py,0:N_ugroup),k_uL111t_uVACs_py(0:N_ugroup,0:N_ugroup)
  288. double precision, target :: g_SIA_uL111t_py(0:N_ugroup),               g_VAC_uL111t_py(0:N_ugroup)
  289. double precision, target :: g_SIA_uVACs_py(0:N_ugroup),               g_VAC_uVACs_py(0:N_ugroup)
  290.  
  291. double precision, target :: k_SIAs_uL100_py(0:N_SIAs_mpy,0:N_ugroup), k_VACs_uL100_py(0:N_VACs_mpy,0:N_ugroup)
  292.  
  293.  
  294. double precision, target :: k_L111_uL100_py(0:N_L111py,0:N_ugroup),   k_L111t_uL100_py(0:N_L111tpy,0:N_ugroup)
  295. double precision, target :: g_SIA_uL100_py(0:N_ugroup),               g_VAC_uL100_py(0:N_ugroup)
  296.  
  297. double precision, target :: k_uL111t_uL111t_py(0:N_ugroup,0:N_ugroup), k_uL111t_uL100_py(0:N_ugroup,0:N_ugroup)
  298. k_SIAs_uVACs   => k_SIAs_uVACs_py
  299. k_VACs_uVACs => k_VACs_uVACs_py
  300. k_L111t_uVACs   => k_L111t_uVACs_py
  301. k_L111_uVACs => k_L111_uVACs_py
  302. k_uL111t_uVACs => k_uL111t_uVACs_py
  303. k_SIAs_uL111t   => k_SIAs_uL111t_py
  304. k_VACs_uL111t   => k_VACs_uL111t_py
  305. k_L111_uL111t   => k_L111_uL111t_py
  306. k_L111t_uL111t  => k_L111t_uL111t_py
  307. k_L100_uL111t   => k_L100_uL111t_py
  308. g_SIA_uVACs    => g_SIA_uVACs_py  
  309. g_VAC_uVACs   => g_VAC_uVACs_py
  310. g_SIA_uL111t    => g_SIA_uL111t_py  
  311. g_VAC_uL111t    => g_VAC_uL111t_py  
  312.                    
  313. k_SIAs_uL100   =>  k_SIAs_uL100_py  
  314. k_VACs_uL100   =>  k_VACs_uL100_py  
  315. k_L111_uL100   =>  k_L111_uL100_py  
  316. k_L111t_uL100  =>  k_L111t_uL100_py
  317. g_SIA_uL100    =>  g_SIA_uL100_py  
  318. g_VAC_uL100    =>  g_VAC_uL100_py  
  319.                
  320. k_uL111t_uL111t => k_uL111t_uL111t_py
  321. k_uL111t_uL100  => k_uL111t_uL100_py
  322.  
  323. end subroutine Get_coeff_grouploop
  324.  
  325.     !2022/02/16
  326.     !get group coeffi
  327.     subroutine get_group_coeffi(akaL0_Idef_L0_py, akaL0_Idef_L1_py, akaL1_Idef_L0_py, akaL1_Idef_L1_py,&
  328.                             &  akaL0_Vdef_L0_py, akaL0_Vdef_L1_py, akaL1_Vdef_L0_py, akaL1_Vdef_L1_py,&
  329.                             & akavL0_Idef_L0_py, akavL0_Idef_L1_py, akavL1_Idef_L0_py, akavL1_Idef_L1_py,&
  330.                             &  akavL0_Vdef_L0_py, akavL0_Vdef_L1_py, akavL1_Vdef_L0_py, akavL1_Vdef_L1_py,&
  331.                             &  abL0_L0_py,       abL0_L1_py,       abL1_L0_py,       abL1_L1_py,      &
  332.                             &  adft_L0_py,       adft_L1_py,                                          &
  333.                             &  akaL0_L0L0_py,    akaL0_L0L1_py,    akaL0_L1L0_py,    akaL0_L1L1_py,   &
  334.                             &  akaL1_L0L0_py,    akaL1_L0L1_py,    akaL1_L1L0_py,    akaL1_L1L1_py,   &
  335.                             &  akbLi0_Li0L0_py,  akbLi0_Li0L1_py,  akbLi0_Li1L0_py,  akbLi0_Li1L1_py, &
  336.                             &  akbLi1_Li0L0_py,  akbLi1_Li0L1_py,  akbLi1_Li1L0_py,  akbLi1_Li1L1_py, &
  337.                             &  akavL0_L0L0_py, akavL0_L0L1_py,  akavL0_L1L0_py, akavL0_L1L1_py, &
  338.                             &  akavL1_L0L0_py, akavL1_L0L1_py,  akavL1_L1L0_py, akavL1_L1L1_py, &
  339.                             &  akbvLi0_Li0L0_py,  akbvLi0_Li0L1_py,  akbvLi0_Li1L0_py,  akbvLi0_Li1L1_py, &
  340.                             &  akbvLi1_Li0L0_py,  akbvLi1_Li0L1_py,  akbvLi1_Li1L0_py,  akbvLi1_Li1L1_py, &
  341.                             &  ngp_py, ndft_py)
  342.                             use coeffi
  343.  
  344.     implicit none
  345.     integer :: ngp_py, ndft_py
  346.    
  347.     double precision,target :: akaL0_Idef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akaL0_Idef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  348.     double precision,target :: akaL1_Idef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akaL1_Idef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  349.     double precision,target :: akaL0_Vdef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akaL0_Vdef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  350.     double precision,target :: akaL1_Vdef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akaL1_Vdef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  351.     double precision,target :: akavL0_Idef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akavL0_Idef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  352.     double precision,target :: akavL1_Idef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akavL1_Idef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  353.     double precision,target :: akavL0_Vdef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akavL0_Vdef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  354.     double precision,target :: akavL1_Vdef_L0_py(0:ngp_py,0:ndft_py,0:ngp_py),akavL1_Vdef_L1_py(0:ngp_py,0:ndft_py,0:ngp_py)
  355.     !factor of -group_j = (dft) + group_j(full group)  
  356.     double precision,target :: abL0_L0_py(0:ngp_py), abL0_L1_py(0:ngp_py), abL1_L0_py(0:ngp_py), abL1_L1_py(0:ngp_py)
  357.     !factor of dft = (dft) + group_j
  358.     double precision,target :: adft_L0_py(0:ngp_py),adft_L1_py(0:ngp_py)
  359.     !factor of +group_k = group_i + group_j
  360.     double precision,target :: akaL0_L0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akaL0_L0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  361.     double precision,target :: akaL0_L1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akaL0_L1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  362.     double precision,target :: akaL1_L0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akaL1_L0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  363.     double precision,target :: akaL1_L1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akaL1_L1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  364.     !factor of -group_i (group_i + group_j -> group_k)
  365.     double precision,target :: akbLi0_Li0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbLi0_Li0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  366.     double precision,target :: akbLi0_Li1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbLi0_Li1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  367.     double precision,target :: akbLi1_Li0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbLi1_Li0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  368.     double precision,target :: akbLi1_Li1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbLi1_Li1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  369.  
  370.     !factor of +group_k = group_i + group_j
  371.     double precision,target :: akavL0_L0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akavL0_L0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  372.     double precision,target :: akavL0_L1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akavL0_L1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  373.     double precision,target :: akavL1_L0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akavL1_L0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  374.     double precision,target :: akavL1_L1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akavL1_L1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  375.     !factor of -group_i (group_i + group_j -> group_k)
  376.     double precision,target :: akbvLi0_Li0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbvLi0_Li0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  377.     double precision,target :: akbvLi0_Li1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbvLi0_Li1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  378.     double precision,target :: akbvLi1_Li0L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbvLi1_Li0L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  379.     double precision,target :: akbvLi1_Li1L0_py(0:ngp_py,0:ngp_py,0:ngp_py),akbvLi1_Li1L1_py(0:ngp_py,0:ngp_py,0:ngp_py)
  380.    
  381.     akaL0_Idef_L0 => akaL0_Idef_L0_py
  382.     akaL0_Idef_L1 => akaL0_Idef_L1_py
  383.     akaL1_Idef_L0 => akaL1_Idef_L0_py
  384.     akaL1_Idef_L1 => akaL1_Idef_L1_py
  385.    
  386.     akaL0_Vdef_L0 => akaL0_Vdef_L0_py
  387.     akaL0_Vdef_L1 => akaL0_Vdef_L1_py
  388.     akaL1_Vdef_L0 => akaL1_Vdef_L0_py
  389.     akaL1_Vdef_L1 => akaL1_Vdef_L1_py
  390.  
  391.     akavL0_Idef_L0 => akavL0_Idef_L0_py
  392.     akavL0_Idef_L1 => akavL0_Idef_L1_py
  393.     akavL1_Idef_L0 => akavL1_Idef_L0_py
  394.     akavL1_Idef_L1 => akavL1_Idef_L1_py
  395.  
  396.     akavL0_Vdef_L0 => akavL0_Vdef_L0_py
  397.     akavL0_Vdef_L1 => akavL0_Vdef_L1_py
  398.     akavL1_Vdef_L0 => akavL1_Vdef_L0_py
  399.     akavL1_Vdef_L1 => akavL1_Vdef_L1_py
  400.     abL0_L0 => abL0_L0_py
  401.     abL0_L1 => abL0_L1_py
  402.     abL1_L0 => abL1_L0_py
  403.     abL1_L1 => abL1_L1_py
  404.    
  405.     adft_L0 => adft_L0_py
  406.     adft_L1 => adft_L1_py
  407.    
  408.     akaL0_L0L0 => akaL0_L0L0_py
  409.     akaL0_L0L1 => akaL0_L0L1_py
  410.     akaL0_L1L0 => akaL0_L1L0_py
  411.     akaL0_L1L1 => akaL0_L1L1_py
  412.    
  413.     akaL1_L0L0 => akaL1_L0L0_py
  414.     akaL1_L0L1 => akaL1_L0L1_py
  415.     akaL1_L1L0 => akaL1_L1L0_py
  416.     akaL1_L1L1 => akaL1_L1L1_py
  417.    
  418.     akbLi0_Li0L0 => akbLi0_Li0L0_py
  419.     akbLi0_Li0L1 => akbLi0_Li0L1_py
  420.     akbLi0_Li1L0 => akbLi0_Li1L0_py
  421.     akbLi0_Li1L1 => akbLi0_Li1L1_py
  422.    
  423.     akbLi1_Li0L0 => akbLi1_Li0L0_py
  424.     akbLi1_Li0L1 => akbLi1_Li0L1_py
  425.     akbLi1_Li1L0 => akbLi1_Li1L0_py
  426.     akbLi1_Li1L1 => akbLi1_Li1L1_py
  427.  
  428.     akavL0_L0L0 => akavL0_L0L0_py
  429.     akavL0_L0L1 => akavL0_L0L1_py
  430.     akavL0_L1L0 => akavL0_L1L0_py
  431.     akavL0_L1L1 => akavL0_L1L1_py
  432.    
  433.     akavL1_L0L0 => akavL1_L0L0_py
  434.     akavL1_L0L1 => akavL1_L0L1_py
  435.     akavL1_L1L0 => akavL1_L1L0_py
  436.     akavL1_L1L1 => akavL1_L1L1_py
  437.    
  438.     akbvLi0_Li0L0 => akbvLi0_Li0L0_py
  439.     akbvLi0_Li0L1 => akbvLi0_Li0L1_py
  440.     akbvLi0_Li1L0 => akbvLi0_Li1L0_py
  441.     akbvLi0_Li1L1 => akbvLi0_Li1L1_py
  442.    
  443.     akbvLi1_Li0L0 => akbvLi1_Li0L0_py
  444.     akbvLi1_Li0L1 => akbvLi1_Li0L1_py
  445.     akbvLi1_Li1L0 => akbvLi1_Li1L0_py
  446.     akbvLi1_Li1L1 => akbvLi1_Li1L1_py
  447.    
  448.     end subroutine get_group_coeffi
  449.  
  450.  
  451.  
  452.  
  453.     subroutine Test(test1, test2, test3, ngp_py, dftpy)
  454.     use coeffi
  455.    
  456.     implicit none
  457.     integer :: dftpy, ngp_py, i
  458.     double precision , target :: test1(0:ngp_py), test2(0:ngp_py, 0:ngp_py), test3(0:ngp_py, 0:dftpy, 0:ngp_py)
  459.     testval1  => test1
  460.     testval2  => test2
  461.     testval3  => test3
  462.     write (*,*) testval1(20), testval2(20,20), testval3(20,20,18)
  463.     end subroutine Test
  464.  
  465.     subroutine checkcoeff()
  466.     use coeffi
  467.     implicit none
  468.     write (*,*) "---------check fortran parameters-------"
  469.     write (*,*) "1"
  470.     write (*,*) k_SIAs_SIAs(2,2)
  471.     write (*,*) k_SIAs_VACs(2,50)
  472.     write (*,*) k_SIAs_C15(2,50)
  473.     write (*,*) k_VACs_VACs(2,50)
  474.     write (*,*) k_VACs_C15(2,50)
  475.     write (*,*) g_SIA_SIAs(2)
  476.     write (*,*) g_VAC_SIAs(2)
  477.     write (*,*) g_SIA_VACs(50)
  478.     write (*,*) g_VAC_VACs(50)
  479.     write (*,*) g_SIA_C15(50)
  480.     write (*,*) g_VAC_C15(50)
  481.     write (*,*) "4 ungroup loop"
  482.     write (*,*) k_SIAs_L111(2,30)
  483.     write (*,*) k_VACs_L111(2,10)
  484.     write (*,*) g_VAC_L111(30)
  485.     write (*,*) g_SIA_L111(30)
  486.     write (*,*) k_SIAs_L111t(2,30)
  487.     write (*,*) k_VACs_L111t(2,10)
  488.     write (*,*) g_VAC_L111t(30)
  489.     write (*,*) g_SIA_L111t(30)
  490.     write (*,*) g_VAC_L100(30)
  491.     write (*,*) g_SIA_L100(30)
  492.     write (*,*) k_SIAs_L100(2,30)
  493.     write (*,*) k_VACs_L100(2,10)
  494.     write (*,*) "5"
  495.    
  496.     write (*,*) loss_SIAs(2)
  497.     write (*,*) loss_VACs(2)
  498.     write (*,*) loss_L111(30)
  499.     write (*,*) loss_L111t(30)
  500.     write (*,*) loss_uL111t(30)
  501.     write (*,*) "6 grouped loop"
  502.     write (*,*) k_SIAs_uL111t(2,30)
  503.     write (*,*) k_VACs_uL111t(2,10)
  504.     write (*,*) g_VAC_uL111t(30)
  505.     write (*,*) g_SIA_uL111t(30)
  506.     write (*,*) g_VAC_uL100(20)
  507.     write (*,*) g_SIA_uL100(30)
  508.     write (*,*) k_SIAs_uL100(2,30)
  509.     write (*,*) k_VACs_uL100(2,10)
  510.     write (*,*) "7 grouping scheme"
  511.     write (*,*) mesh_x0(14)
  512.     write (*,*) mesh_ust(14)
  513.     write (*,*) mesh_ued(14)
  514.     write (*,*) mesh_dlta(14)
  515.     write (*,*) "8 ungroup loop raction"
  516.     write (*,*) k_L111_L111(25,15),k_L111_L111(15,25)
  517.     write (*,*) k_L111_L100(20,15),k_L111_L100(15,20)
  518.     write (*,*) k_L111_L111t(20,15)
  519.     write (*,*) k_L111t_L100(20,15)
  520.     write (*,*) k_L111t_L111t(20,15), k_L111t_L111t(15,20)
  521.     write (*,*) k_trap_L111(20)
  522.     write (*,*) g_trap_L111t(20)
  523.     write (*,*) k_C15_L111t(20,20)
  524.     write (*,*) k_trap_uL111t(10)
  525.     write (*,*) k_trap_VACs(3)
  526.     write (*,*) "8.2 grouped loop raction"
  527.     write (*,*) k_L111_uL100(20,15),k_L111_uL100(15,20)
  528.     write (*,*) k_L111t_uL100(20,15)
  529.     write (*,*) k_L111_uL111t(20,15)
  530.     write (*,*) k_L111t_uL111t(20,15), k_L111t_uL111t(15,20)
  531.     write (*,*) k_L100_uL111t(20,15), k_L100_uL111t(15,20)
  532.     write (*,*) k_uL111t_uL100(20,15), k_uL111t_uL100(15,20)
  533.     write (*,*) "9"
  534.     write (*,*) dparate, Nmax_cas, Nmin_cas, CascadeRate
  535.     write (*,*) f_L111toL100(20), f_L111ttoL100(20), f_L111toC15(20), f_L111ttoC15(20)
  536.     write (*,*) f_L100toC15(20) , f_L100toL100(20) , f_C15toL100(20), f_C15toC15(20)
  537.     write (*,*) "10 grouping coefficient"
  538.     write (*,*) "Idef"
  539.     write (*,*) akaL0_Idef_L0(20,20,20), akaL0_Idef_L0(20,20,19), akaL0_Idef_L0(20,20,18)
  540.     write (*,*) akaL0_Idef_L1(20,20,20), akaL0_Idef_L1(20,20,19), akaL0_Idef_L1(20,20,18)
  541.     write (*,*) akaL1_Idef_L0(20,20,20), akaL1_Idef_L0(20,20,19), akaL1_Idef_L0(20,20,18)
  542.     write (*,*) akaL1_Idef_L1(20,20,20), akaL1_Idef_L1(20,20,19), akaL1_Idef_L1(20,20,18)
  543.     write (*,*) "Vdef"
  544.     write (*,*) akaL0_Vdef_L0(20,20,20), akaL0_Vdef_L0(20,20,21), akaL0_Vdef_L0(20,20,19)
  545.     write (*,*) akaL0_Vdef_L1(20,20,20), akaL0_Vdef_L1(20,20,21), akaL0_Vdef_L1(20,20,19)
  546.     write (*,*) akaL1_Vdef_L0(20,20,20), akaL1_Vdef_L0(20,20,21), akaL1_Vdef_L0(20,20,19)
  547.     write (*,*) akaL1_Vdef_L1(20,20,20), akaL1_Vdef_L1(20,20,21), akaL1_Vdef_L1(20,20,19)
  548.     write (*,*) "10.1"
  549.     write (*,*) abL0_L0(20)
  550.     write (*,*) abL0_L1(20)
  551.     write (*,*) abL1_L0(20)
  552.     write (*,*) abL1_L1(20)
  553.     write (*,*) ""
  554.     write (*,*) adft_L0(20)
  555.     write (*,*) adft_L1(20)
  556.     write (*,*) "10.2"
  557.     write (*,*) akaL0_L0L0(20,5,21), akaL0_L0L0(20,5,22)
  558.     write (*,*) akaL0_L0L1(20,5,21), akaL0_L0L1(20,5,22)
  559.     write (*,*) akaL0_L1L0(20,5,21), akaL0_L1L0(20,5,22)
  560.     write (*,*) akaL0_L1L1(20,5,21), akaL0_L1L1(20,5,22)
  561.     write (*,*) ""
  562.     write (*,*) akaL1_L0L0(20,5,21), akaL1_L0L0(20,5,22)
  563.     write (*,*) akaL1_L0L1(20,5,21), akaL1_L0L1(20,5,22)
  564.     write (*,*) akaL1_L1L0(20,5,21), akaL1_L1L0(20,5,22)
  565.     write (*,*) akaL1_L1L1(20,5,21), akaL1_L1L1(20,5,22)
  566.     write (*,*) ""
  567.     write (*,*) akbLi0_Li0L0(20,5,21), akbLi0_Li0L0(20,5,22)
  568.     write (*,*) akbLi0_Li0L1(20,5,21), akbLi0_Li0L1(20,5,22)
  569.     write (*,*) akbLi0_Li1L0(20,5,21), akbLi0_Li1L0(20,5,22)
  570.     write (*,*) akbLi0_Li1L1(20,5,21), akbLi0_Li1L1(20,5,22)
  571.     write (*,*) ""
  572.     write (*,*) akbLi1_Li0L0(20,5,21), akbLi1_Li0L0(20,5,22)
  573.     write (*,*) akbLi1_Li0L1(20,5,21), akbLi1_Li0L1(20,5,22)
  574.     write (*,*) akbLi1_Li1L0(20,5,21), akbLi1_Li1L0(20,5,22)
  575.     write (*,*) akbLi1_Li1L1(20,5,21), akbLi1_Li1L1(20,5,22)
  576.     write (*,*) "11"
  577.     write (*,*) N_C15_st, f_g2s
  578.    
  579.     END SUBROUTINE checkcoeff
  580.  
  581.  
  582. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  583. !!!!!!!  rhs function of the ode
  584. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  585.     subroutine f_f77(neq, t, u, udot)
  586.         use coeffi
  587.        
  588.         implicit none
  589.         !f2py   intent(hide) neq
  590.         !f2py   intent(out) udot
  591.         integer neq
  592.         double precision t
  593.         !       u is the the unkown function of time!!!
  594.         double precision, target :: u, udot
  595.         dimension u(neq), udot(neq)
  596.         !~ !    auxiliary variable for calculation
  597.        
  598.     integer nvac, nsia, isia, isia1, isia2, nsia_m, nvac_im, check,nvac_m
  599.     integer u_idx, u_idx1, u_idx2, ugroup, ugroup2, st, ed, st1, ed1,uidx
  600.     integer sumv00, sumv01, sumv10, sumv11, flag
  601.    
  602.     double precision, pointer :: Ctrap, dCtrap
  603.     double precision, dimension(:), pointer :: sinkSIAs, sinkVACs, sinkL111,sinkL111t, sinkL111tL0, sinkL111tL1
  604.     double precision, dimension(:), pointer :: dsinkSIAs, dsinkVACs, dsinkL111,dsinkL111t, dsinkL111tL0, dsinkL111tL1
  605.     double precision, dimension(:), pointer :: CSIAs, dCSIAs, CVACs, dCVACs, C_C15, dC_C15,CVACsL0,CVACsL1
  606.     double precision, dimension(:), pointer :: CL111, CL111t, CL111tL0, CL111tL1
  607.     double precision, dimension(:), pointer :: dCL111, dCL111t, dCL111tL0, dCL111tL1,dCVACsL0, dCVACsL1
  608.     double precision, dimension(:), pointer :: CL100, CL100L0, CL100L1, dCL100, dCL100L0, dCL100L1
  609.    
  610.     integer N_offsinkL111, N_offsinkL111t, N_offsinkL111tL0, N_sink
  611.     integer N_offSIA, N_offVAC,N_offVACg,N_offVACg2, N_offC15, N_offL111, N_offL111t, N_offL111tL0, N_offL111tL1
  612.     integer N_offL100, N_offL100L0, bin_length
  613.    
  614.     double precision :: zero
  615.     double precision :: temp, factor
  616.     !write (*,*) k_L111t_uVACs(20,15), k_uL111t_uL100(15,20)
  617.     N_offsinkL111   = N_SIAs_m +N_VACs_m +N_L111
  618.     N_offsinkL111t  = N_offsinkL111      +N_L111t
  619.     N_offsinkL111tL0= N_offsinkL111t     +Nu_L111t
  620.     N_sink          = N_offsinkL111tL0   +Nu_L111t  !sink L111
  621.    
  622.     N_offSIA = N_sink +N_SIAs_m
  623.     N_offVAC = N_offSIA +N_VACs
  624.  
  625.     N_offC15 = N_offVAC +N_C15
  626.    
  627.     N_offL111   = N_offC15 +N_L111
  628.    
  629.     N_offL111t   = N_offL111 +N_L111t
  630.     N_offL111tL0 = N_offL111t +Nu_L111t
  631.     N_offL111tL1 = N_offL111tL0 +Nu_L111t
  632.    
  633.     N_offL100   = N_offL111tL1 +N_L100
  634.     N_offL100L0 = N_offL100 +Nu_L100
  635.     bin_length  = N_offL100L0 +Nu_L100 +1
  636.     sinkSIAs(1:N_SIAs_m)  => u(1:N_SIAs_m)
  637.     sinkVACs(1:N_VACs_m)  => u(N_SIAs_m+1:N_VACs_m)
  638.     sinkL111(1:N_L111)    => u(N_SIAs_m+N_VACs_m+1:N_L111)
  639.     sinkL111t(1:N_L111t)  => u(N_offsinkL111+1:N_L111t)
  640.     sinkL111tL0(1:Nu_L111t)=> u(N_offsinkL111t+1:Nu_L111t)
  641.     sinkL111tL1(1:Nu_L111t)=> u(N_offsinkL111tL0+1:Nu_L111t)
  642.    
  643.     dsinkSIAs(1:N_SIAs_m)   => udot(1:N_SIAs_m)
  644.     dsinkVACs(1:N_VACs_m)   => udot(N_SIAs_m+1:N_VACs_m)
  645.     dsinkL111(1:N_L111)     => udot(N_SIAs_m+N_VACs_m+1:N_L111)
  646.     dsinkL111t(1:N_L111t)   => udot(N_offsinkL111+1:N_L111t)
  647.     dsinkL111tL0(1:Nu_L111t)=> udot(N_offsinkL111t+1:Nu_L111t)
  648.     dsinkL111tL1(1:Nu_L111t)=> udot(N_offsinkL111tL0+1:Nu_L111t)
  649.  
  650.     CSIAs(1:N_SIAs_m)    => u(N_sink+1:N_SIAs_m)
  651.     CVACs(1:N_VACs)      => u(N_offSIA+1:N_VACs)
  652.  
  653.     C_C15(1:N_C15)       => u(N_offVAC+1:N_C15)
  654.     CL111(1:N_L111)      => u(N_offC15+1:N_L111)
  655.     CL111t(1:N_L111t)    => u(N_offL111+1:N_L111t)
  656.     CL111tL0(1:Nu_L111t) => u(N_offL111t+1:Nu_L111t)
  657.     CL111tL1(1:Nu_L111t) => u(N_offL111tL0+1:Nu_L111t)
  658.     CL100(1:N_L100)      => u(N_offL111tL1+1:N_L100)
  659.     CL100L0(1:Nu_L100)   => u(N_offL100+1:Nu_L100)
  660.     CL100L1(1:Nu_L100)   => u(N_offL100L0+1:Nu_L100)
  661.    
  662.    
  663.    
  664.     dCSIAs(1:N_SIAs_m)    => udot(N_sink+1:N_SIAs_m)
  665.     dCVACs(1:N_VACs)      => udot(N_offSIA+1:N_VACs)
  666.  
  667.     dC_C15(1:N_C15)       => udot(N_offVAC+1:N_C15)
  668.     dCL111(1:N_L111)      => udot(N_offC15+1:N_L111)
  669.     dCL111t(1:N_L111t)    => udot(N_offL111+1:N_L111t)
  670.     dCL111tL0(1:Nu_L111t) => udot(N_offL111t+1:Nu_L111t)
  671.     dCL111tL1(1:Nu_L111t) => udot(N_offL111tL0+1:Nu_L111t)
  672.     dCL100(1:N_L100)      => udot(N_offL111tL1+1:N_L100)
  673.     dCL100L0(1:Nu_L100)   => udot(N_offL100+1:Nu_L100)
  674.     dCL100L1(1:Nu_L100)   => udot(N_offL100L0+1:Nu_L100)
  675.     !write(*,*) bin_length
  676.     Ctrap    => u(bin_length)
  677.     dCtrap   => udot(bin_length)
  678.    
  679.     zero = 1.D-100     !define the value for the nummerical zero
  680.  
  681.     !write (*,*) neq
  682.     ! write (*,*) Nu_VACs
  683.     ! write (*,*) N_sink          
  684.     !!write (*,*)  N_SIAs_m
  685.     !write (*,*) N_C15
  686.     !write (*,*) N_L111
  687.     !write (*,*) N_offVAC
  688.     !write (*,*) N_offVACg
  689.     !write (*,*) N_offVAC
  690.     !write (*,*) N_offC15
  691.     !write (*,*) N_offL111
  692.     !write (*,*) N_offL111t
  693.     !write (*,*) N_offL111tL0
  694.     !write (*,*) N_offL111tL1
  695.     !write (*,*) N_offL100
  696.     !write (*,*) N_offL100L0
  697.    
  698.     ncall = ncall+1  ! increase ncall every time rhs is called
  699.     temp = 0.
  700.     check = 0
  701.     !write (*,*) akavL0_Idef_L0
  702.         !!!!!!!!!!!!!!!!!!!!!
  703.     !------SIA-----------
  704.     dsinkSIAs(1) = +loss_SIAs(1) *(CSIAs(1)-Ceq_SIAs(1))
  705.     dCSIAs(1) = dparate*fcascade_SIAs_L111(1)-loss_SIAs(1)*(CSIAs(1)-Ceq_SIAs(1))-3*k_SIAs_SIAs(1,1)*CSIAs(1)*CSIAs(1)                                    
  706.     do isia = 1, N_SIAs_m
  707.        dCSIAs(1) = dCSIAs(1) -k_SIAs_SIAs(1,isia)*CSIAs(1)*CSIAs(isia)
  708.     enddo
  709.    
  710.     do nvac = 1, N_VACs
  711.        dCSIAs(1) = dCSIAs(1) -k_SIAs_VACs(1,nvac)*CSIAs(1)*CVACs(nvac)
  712.        if ((nvac+1) .le. N_SIAs_m) then
  713.            dCSIAs(1) = dCSIAs(1) +k_SIAs_VACs(nvac+1,nvac)*CSIAs(nvac+1)*CVACs(nvac)
  714.        endif
  715.        if (nvac .gt. 1) then
  716.           dCSIAs(1) = dCSIAs(1) +g_SIA_VACs(nvac)*CVACs(nvac)
  717.        endif
  718.     enddo
  719.    
  720.    
  721.     !~with loop ungrouped L111
  722.     do nsia = N_loop_start, N_L111
  723.        dCSIAs(1) = dCSIAs(1) +g_SIA_L111(nsia)*CL111(nsia)
  724.      
  725.        dCSIAs(1) = dCSIAs(1) - k_SIAs_L111(1,nsia)*CSIAs(1)*CL111(nsia)
  726.        
  727.        do nvac = 1, N_VACs
  728.            if ((nvac+1) .eq. nsia) then
  729.               dCSIAs(1) = dCSIAs(1) +k_VACs_L111(nvac,nsia)*CVACs(nvac)*CL111(nsia)
  730.              
  731.            endif
  732.        enddo
  733.        
  734.      
  735.     enddo
  736.    
  737.  
  738.  
  739.     !~with loop ungrouped L111t
  740.     do nsia = N_loop_start, N_L111t
  741.        dCSIAs(1) = dCSIAs(1) +g_SIA_L111t(nsia)*CL111t(nsia)
  742.        do nvac = 1, N_VACs
  743.           if ((nvac+1) .eq. nsia) then
  744.               dCSIAs(1) = dCSIAs(1) +k_VACs_L111t(nvac,nsia)*CVACs(nvac)*CL111t(nsia)                          
  745.           endif
  746.        enddo
  747.        dCSIAs(1) = dCSIAs(1) -k_SIAs_L111t(1,nsia)*CSIAs(1)*CL111t(nsia)
  748.     enddo
  749.  
  750.     !~with loop groups of L111t
  751.     do u_idx = 1, Nu_L111t
  752.        dCSIAs(1) = dCSIAs(1) +g_SIA_uL111t(u_idx)*adft_L0(u_idx)*CL111tL0(u_idx) &
  753.                             & +g_SIA_uL111t(u_idx)*adft_L1(u_idx)*CL111tL1(u_idx)
  754.  
  755.        dCSIAs(1) = dCSIAs(1) -k_SIAs_uL111t(1,u_idx)*adft_L0(u_idx)*CSIAs(1)*CL111tL0(u_idx)&
  756.                             & -k_SIAs_uL111t(1,u_idx)*adft_L1(u_idx)*CSIAs(1)*CL111tL1(u_idx)
  757.  
  758.        do nvac = 1, N_VACs
  759.           if ((nvac+1) .ge. mesh_ust(u_idx) .and. (nvac+1) .le. mesh_ued(u_idx)) then
  760.               dCSIAs(1) = dCSIAs(1) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx) &
  761.                                 & +k_VACs_uL111t(nvac,u_idx)*v1(nvac+1,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
  762.           endif
  763.        enddo
  764.     enddo
  765.        
  766.     !~with loop ungrouped L100
  767.     do nsia = N_loop_start, N_L100
  768.        dCSIAs(1) = dCSIAs(1) +g_SIA_L100(nsia)*CL100(nsia)
  769.        do nvac = 1, N_VACs_m
  770.           if ((nvac+1) .eq. nsia) then
  771.               dCSIAs(1) = dCSIAs(1) +k_VACs_L100(nvac,nsia)*CVACs(nvac)*CL100(nsia)                    
  772.           endif
  773.        enddo
  774.        dCSIAs(1) = dCSIAs(1) -k_SIAs_L100(1,nsia)*CSIAs(1)*CL100(nsia)
  775.     enddo
  776.     !~with loop groups of L100 
  777.     do u_idx = 1, Nu_L100
  778.         dCSIAs(1) = dCSIAs(1) +g_SIA_uL100(u_idx)*adft_L0(u_idx)*CL100L0(u_idx) &
  779.                             & +g_SIA_uL100(u_idx)*adft_L1(u_idx)*CL100L1(u_idx)
  780.        
  781.         dCSIAs(1) = dCSIAs(1) -k_SIAs_uL100(1,u_idx)*adft_L0(u_idx)*CSIAs(1)*CL100L0(u_idx)&
  782.                             & -k_SIAs_uL100(1,u_idx)*adft_L1(u_idx)*CSIAs(1)*CL100L1(u_idx)
  783.                            
  784.         do nvac = 1, N_VACs_m
  785.           if ((nvac+1) .ge. mesh_ust(u_idx) .and. (nvac+1) .le. mesh_ued(u_idx)) then
  786.              dCSIAs(1) = dCSIAs(1) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)*CL100L0(u_idx) &
  787.                                 & +k_VACs_uL100(nvac,u_idx)*v1(nvac+1,u_idx)*CVACs(nvac)*CL100L1(u_idx)
  788.           endif
  789.         enddo  
  790.     enddo
  791.  
  792.     ! with other defects
  793.     do isia = N_C15_st, N_C15
  794.         dCSIAs(1) = dCSIAs(1) + g_SIA_C15(isia)*C_C15(isia)
  795.         if ((isia-1) .ge. 1 .and. (isia-1) .le. N_VACs_m) then
  796.            dCSIAs(1) = dCSIAs(1) + k_VACs_C15(isia-1,isia)*CVACs(isia-1)*C_C15(isia)
  797.         endif
  798.     enddo
  799.  
  800.     do isia = N_C15_st, N_C15
  801.        if ((1+isia) .le. N_C15) then
  802.           dCSIAs(1) = dCSIAs(1) -k_SIAs_C15(1,isia)*CSIAs(1)*C_C15(isia)
  803.        endif
  804.     enddo
  805.  
  806.     do isia = 2, N_SIAs_m
  807.         dCSIAs(1) = dCSIAs(1) + g_SIA_SIAs(isia)*CSIAs(isia)
  808.     enddo
  809.     dCSIAs(1) = dCSIAs(1) + 3*g_SIA_SIAs(2)*CSIAs(2)
  810.  
  811.         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  812.     !-mobile SIAs-------------------
  813.     do nsia_m = 2, N_SIAs_m
  814.        dsinkSIAs(nsia_m) = +loss_SIAs(nsia_m)*(CSIAs(nsia_m)-Ceq_SIAs(nsia_m))
  815.        dCSIAs(nsia_m) = dparate*fcascade_SIAs_L111(nsia_m) -loss_SIAs(nsia_m)*(CSIAs(nsia_m)-Ceq_SIAs(nsia_m))
  816.        do isia = 1, N_SIAs_m
  817.           dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_SIAs(nsia_m,isia)*CSIAs(nsia_m)*CSIAs(isia)
  818.        enddo
  819.        do isia = 1, nsia_m/2
  820.           if ((nsia_m-isia) .ge. 1 ) then
  821.              dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_SIAs_SIAs(nsia_m-isia,isia)*CSIAs(nsia_m-isia)*CSIAs(isia)
  822.           endif
  823.        enddo
  824.  
  825.        do nvac = 1, N_VACs
  826.           dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_VACs(nsia_m,nvac)*CSIAs(nsia_m)*CVACs(nvac)
  827.        enddo
  828.        !write(*,*) g_SIA_uVACs
  829.        do isia = nsia_m+1, N_SIAs_m
  830.           if ((isia-nsia_m) .ge. 1 .and. (isia-nsia_m) .le. N_VACs) then
  831.              dCSIAs(nsia_m) = dCSIAs(nsia_m) + k_SIAs_VACs(isia,isia-nsia_m)*CSIAs(isia)*CVACs(isia-nsia_m)
  832.           endif
  833.        enddo
  834.            
  835.         !~with loop ungrouped L111
  836.        do nsia = N_loop_start, N_L111
  837.           do nvac = 1, N_VACs
  838.                 if ((nvac+nsia_m) .eq. nsia) then
  839.                    dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_L111(nvac,nsia)*CVACs(nvac)*CL111(nsia)
  840.                 endif
  841.           enddo
  842.           dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_L111(nsia_m,nsia)*CSIAs(nsia_m)*CL111(nsia)
  843.        enddo
  844.         ! reaction with group uL111            
  845.        
  846.         !~with loop ungrouped L111t
  847.        do nsia = N_loop_start, N_L111t
  848.           do nvac = 1, N_VACs
  849.              if ((nvac+nsia_m) .eq. nsia) then
  850.                   dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_L111t(nvac,nsia)*CVACs(nvac)*CL111t(nsia)
  851.              endif
  852.           enddo
  853.           dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_L111t(nsia_m,nsia)*CSIAs(nsia_m)*CL111t(nsia)
  854.        enddo
  855.             ! reaction with group uL111t
  856.        do u_idx = 1, Nu_L111t
  857.           do nvac = 1, N_VACs
  858.              if ((nvac+nsia_m) .ge. mesh_ust(u_idx) .and. (nvac+nsia_m) .le. mesh_ued(u_idx)) then
  859.                 dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx) &
  860.                                                 & +k_VACs_uL111t(nvac,u_idx)*v1(nvac+nsia_m,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
  861.              endif
  862.           enddo
  863.           dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_uL111t(nsia_m,u_idx)*adft_L0(u_idx)*CSIAs(nsia_m)*CL111tL0(u_idx) &
  864.                                             & -k_SIAs_uL111t(nsia_m,u_idx)*adft_L1(u_idx)*CSIAs(nsia_m)*CL111tL1(u_idx)
  865.        enddo
  866.         ! reaction with group vacancy
  867.    
  868.  
  869.  
  870.         !~with loop ungrouped L100
  871.         do nsia = N_loop_start, N_L100
  872.             do nvac = 1, N_VACs_m
  873.                if ((nvac+nsia_m) .eq. nsia) then
  874.                   dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_L100(nvac,nsia)*CVACs(nvac)*CL100(nsia)
  875.                 endif
  876.             enddo
  877.             dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_L100(nsia_m,nsia)*CSIAs(nsia_m)*CL100(nsia)
  878.         enddo
  879.         ! reaction with loop group of L100
  880.         do u_idx = 1, Nu_L100
  881.             dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_uL100(nsia_m,u_idx)*adft_L0(u_idx)*CSIAs(nsia_m)*CL100L0(u_idx) &
  882.                                             & -k_SIAs_uL100(nsia_m,u_idx)*adft_L1(u_idx)*CSIAs(nsia_m)*CL100L1(u_idx)
  883.             do nvac = 1, N_VACs_m
  884.                 if ((nvac+nsia_m) .ge. mesh_ust(u_idx) .and. (nvac+nsia_m) .le. mesh_ued(u_idx)) then
  885.                     dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)*CL100L0(u_idx) &
  886.                                                 & +k_VACs_uL100(nvac,u_idx)*v1(nvac+nsia_m,u_idx)*CVACs(nvac)*CL100L1(u_idx)
  887.                 endif
  888.             enddo
  889.         enddo
  890.                
  891.         do isia = N_C15_st, N_C15
  892.             if ((nsia_m +isia) .le. N_C15) then
  893.                dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_C15(nsia_m,isia)*CSIAs(nsia_m)*C_C15(isia)
  894.             endif
  895.             if ((isia-nsia_m) .ge. 1 .and. (isia-nsia_m) .le. N_VACs_m) then
  896.                dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_C15(isia-nsia_m,isia)*CVACs(isia-nsia_m)*C_C15(isia)
  897.             endif
  898.         enddo
  899.         dCSIAs(nsia_m) = dCSIAs(nsia_m) -g_SIA_SIAs(nsia_m)*CSIAs(nsia_m) -g_VAC_SIAs(nsia_m)*CSIAs(nsia_m)
  900.         if ((nsia_m-1) .gt. 1) then
  901.            dCSIAs(nsia_m) = dCSIAs(nsia_m) +g_VAC_SIAs(nsia_m-1)*CSIAs(nsia_m-1)
  902.         endif
  903.            
  904.     enddo
  905.     dCSIAs(2) = dCSIAs(2) + k_SIAs_SIAs(1,1)*CSIAs(1)*CSIAs(1) -g_SIA_SIAs(2)*CSIAs(2)    !dI2 = 2KI1*I1 - 2gI2
  906.     !dCSIAs(N_SIAs_m) = dCSIAs(N_SIAs_m) +g_SIA_C15(N_SIAs_m+1)*C_C15(N_SIAs_m+1)
  907.        
  908.         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  909.         !-----------C15-------------------
  910.     do nsia = N_C15_st, N_C15
  911.        dC_C15(nsia) = dparate*fcascade_SIAs_c15(nsia) -f_trans100(nsia)*C_C15(nsia)-f_trans111(nsia)*C_C15(nsia)
  912.         do isia = 1, N_SIAs_m
  913.             if ((isia+nsia) .le. N_C15) then
  914.                dC_C15(nsia)= dC_C15(nsia) - k_SIAs_C15(isia,nsia)*CSIAs(isia)*C_C15(nsia)
  915.             endif
  916.             if ((nsia-isia) .le. N_C15 .and. (nsia-isia) .ge. N_C15_st) then
  917.                dC_C15(nsia)= dC_C15(nsia)+ k_SIAs_C15(isia,nsia-isia)*CSIAs(isia)*C_C15(nsia-isia)
  918.             endif
  919.         enddo
  920.         do nvac = 1, N_VACs_m
  921.             dC_C15(nsia)= dC_C15(nsia)- k_VACs_C15(nvac,nsia)*CVACs(nvac)*C_C15(nsia)
  922.             if ((nsia+nvac) .le. N_C15 .and. (nsia+nvac) .ge. N_C15_st) then
  923.                dC_C15(nsia)= dC_C15(nsia)+ k_VACs_C15(nvac,nsia+nvac)*CVACs(nvac)*C_C15(nsia+nvac)
  924.             endif
  925.         enddo
  926.                
  927.             !add L111 trapped by C15 01052022
  928.             !do u_idx = mesh_uidx(N_loop_start), mesh_uidx(N_lpc15)
  929.             !   isia = mesh_x0(u_idx)
  930.             !   if ((isia+nsia) .le. N_C15) then
  931.             !   dC_C15(nsia)= dC_C15(nsia) &
  932.             !                    & -k_C15_L111t(nsia,mesh_uidx(isia))*CL111t(isia)*C_C15(nsia)
  933.             !   endif
  934.             !   if ((nsia-isia) .le. N_C15 .and. (nsia-isia) .ge. (N_SIAs_m+1) ) then
  935.             !   dC_C15(nsia)= dC_C15(nsia) &
  936.             !                    & +k_C15_L111t(nsia-isia,mesh_uidx(isia))*CL111t(isia)*C_C15(nsia-isia)
  937.             !   endif
  938.             !enddo
  939.  
  940.         dC_C15(nsia)= dC_C15(nsia)-g_SIA_C15(nsia)*C_C15(nsia)
  941.         if ((nsia-1) .ge. N_C15_st .and. (nsia-1) .lt. N_C15) then
  942.             dC_C15(nsia)= dC_C15(nsia)+g_VAC_C15(nsia-1)*C_C15(nsia-1)
  943.         endif
  944.         if (nsia .lt. N_C15) then
  945.             dC_C15(nsia)= dC_C15(nsia)+g_SIA_C15(nsia+1)*C_C15(nsia+1)-g_VAC_C15(nsia)*C_C15(nsia)
  946.         endif
  947.         !add cascade overlap 01032022
  948.         if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
  949.             dC_C15(nsia)= dC_C15(nsia) -(1-f_C15toC15(nsia))*CascadeRate*C_C15(nsia)
  950.             if (nsia .le. N_L111t) then
  951.                dC_C15(nsia)= dC_C15(nsia) +f_L111ttoC15(nsia)*CascadeRate*CL111t(nsia)  &
  952.                                     &   +f_L111toC15(nsia)*CascadeRate*CL111(nsia)   &
  953.                                     &   +f_L100toC15(nsia)*CascadeRate*CL100(nsia)    
  954.             endif
  955.         endif
  956.     enddo
  957.            
  958.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  959.     !-----------L111-------------------    
  960.     !~ungrouped
  961.     do nsia = N_loop_start, N_L111
  962.         dCL111(nsia) = 0
  963.         dsinkL111(nsia) = +loss_L111(nsia)*CL111(nsia)
  964.         if (nsia .le. N_C15) then
  965.            dCL111(nsia) = +dparate*fcascade_SIAs_L111(nsia) +C_C15(nsia)*f_trans111(nsia)
  966.         endif
  967.         dCL111(nsia) = dCL111(nsia) -loss_L111(nsia)*CL111(nsia)
  968.         dCL111(nsia) = dCL111(nsia) -k_trap_L111(nsia)*Ctrap*CL111(nsia) &
  969.                                     & +g_trap_L111t(nsia)*CL111t(nsia)
  970.        
  971.         do isia = 1, N_SIAs_m
  972.             dCL111(nsia) = dCL111(nsia) -k_SIAs_L111(isia,nsia)*CSIAs(isia)*CL111(nsia)
  973.         enddo
  974.         do isia = 1, N_SIAs_m
  975.             if ((nsia-isia) .ge. N_loop_start ) then
  976.             dCL111(nsia) = dCL111(nsia) +k_SIAs_L111(isia,nsia-isia)*CSIAs(isia)*CL111(nsia-isia)
  977.             endif
  978.         enddo
  979.         do nvac = 1, N_VACs
  980.             dCL111(nsia) = dCL111(nsia) -k_VACs_L111(nvac,nsia)*CVACs(nvac)*CL111(nsia)
  981.         enddo
  982.  
  983.         do nvac = 1, N_VACs
  984.             if ((nsia+nvac) .le. N_L111) then
  985.             dCL111(nsia) = dCL111(nsia) +k_VACs_L111(nvac,(nsia+nvac))*CVACs(nvac)*CL111(nsia+nvac)
  986.             endif
  987.         enddo
  988.                                        
  989.         !!!~reacrion with ungrouped L111
  990.         do isia = N_loop_start, N_L111
  991.             dCL111(nsia) = dCL111(nsia) -k_L111_L111(nsia,isia)*CL111(nsia)*CL111(isia)
  992.             if ((isia .lt. nsia/2.) .and. ((nsia-isia) .ge. N_loop_start)) then  
  993.             !reaction between same size of L111 excluded
  994.             dCL111(nsia) = dCL111(nsia) +k_L111_L111(nsia-isia,isia) *CL111(nsia-isia)*CL111(isia)
  995.             endif
  996.         enddo
  997.         !ungrouped L111t
  998.         do isia = N_loop_start, N_L111t
  999.             dCL111(nsia) = dCL111(nsia) -k_L111_L111t(nsia,isia)*CL111(nsia)*CL111t(isia)
  1000.         enddo
  1001.         !ungrouped L100
  1002.         do isia = N_loop_start, N_L100
  1003.             dCL111(nsia) = dCL111(nsia) -k_L111_L100(nsia,isia)*CL111(nsia)*CL100(isia)
  1004.             if ((isia .lt. (nsia-isia)) .and. ((nsia-isia) .ge. N_loop_start)) then  
  1005.             !reaction between L111 and L100 of same size included
  1006.             dCL111(nsia) = dCL111(nsia) +k_L111_L100(nsia-isia,isia)*CL111(nsia-isia)*CL100(isia)
  1007.             endif
  1008.         enddo
  1009.        
  1010.      
  1011.  
  1012.  
  1013.  
  1014.         !!!~reacrion involving grouped L111t and L100
  1015.         do ugroup = 1, Nu_L111t
  1016.             dCL111(nsia) = dCL111(nsia) -k_L111_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111(nsia)*CL111tL0(ugroup) &
  1017.                                         &-k_L111_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111(nsia)*CL111tL1(ugroup)
  1018.         enddo
  1019.         do ugroup = 1, Nu_L100
  1020.             dCL111(nsia) = dCL111(nsia) -k_L111_uL100(nsia,ugroup)*adft_L0(ugroup)*CL111(nsia)*CL100L0(ugroup) &
  1021.                                         &-k_L111_uL100(nsia,ugroup)*adft_L1(ugroup)*CL111(nsia)*CL100L1(ugroup)
  1022.         enddo
  1023.        
  1024.         !!!~emission
  1025.         if ((nsia .ge. (N_loop_start+1)) .and. (nsia .le. (N_L111-1))) then
  1026.             dCL111(nsia) = dCL111(nsia) -g_SIA_L111(nsia)*CL111(nsia) -g_VAC_L111(nsia)*CL111(nsia) &
  1027.                                     &  +g_SIA_L111(nsia+1)*CL111(nsia+1) +g_VAC_L111(nsia-1)*CL111(nsia-1)
  1028.         endif
  1029.         if (nsia == N_loop_start) then
  1030.             dCL111(nsia) = dCL111(nsia) -g_VAC_L111(nsia)*CL111(nsia) +g_SIA_L111(nsia+1)*CL111(nsia+1)
  1031.                                                        
  1032.         endif
  1033.         if (nsia == N_L111) then
  1034.             dCL111(nsia) = dCL111(nsia) -g_SIA_L111(nsia)*CL111(nsia) +g_VAC_L111(nsia-1)*CL111(nsia-1)
  1035.         endif
  1036.        
  1037.         !add cascade overlap 01032022
  1038.         if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
  1039.             dCL111(nsia) = dCL111(nsia) -f_L111toC15(nsia)*CascadeRate*CL111(nsia)  &
  1040.                                                         & -f_L111toL100(nsia)*CascadeRate*CL111(nsia) &
  1041.                         & +(1-f111t)*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate*CL100(nsia) &
  1042.                         & +(1-f111t)*(1-f_C15toL100(nsia) -f_C15toC15(nsia)) *CascadeRate*C_C15(nsia)  
  1043.         endif
  1044.     enddo
  1045.     !!!!!!!!!!!!!!
  1046.     !~group L111~!
  1047.     !!!!!!!!!!!!!!     
  1048.     ! remove uL111 in this version
  1049.    
  1050.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   
  1051.     !-----------L111t-------------------       
  1052.     !~ungrouped
  1053.     do nsia = N_loop_start, N_L111t
  1054.         dCL111t(nsia) = 0
  1055.         dsinkL111t(nsia) = +loss_L111t(nsia) *CL111t(nsia)
  1056.  
  1057.         dCL111t(nsia) = dCL111t(nsia) -loss_L111t(nsia)*CL111t(nsia)
  1058.         dCL111t(nsia) = dCL111t(nsia) +k_trap_L111(nsia)*Ctrap*CL111(nsia)-g_trap_L111t(nsia)*CL111t(nsia)
  1059.        
  1060.         do isia = 1, N_SIAs_m
  1061.             dCL111t(nsia) = dCL111t(nsia) -k_SIAs_L111t(isia,nsia)*CSIAs(isia)*CL111t(nsia)
  1062.         enddo
  1063.         do isia = 1, N_SIAs_m
  1064.             if ((nsia-isia) .ge. N_loop_start ) then
  1065.             dCL111t(nsia) = dCL111t(nsia) +k_SIAs_L111t(isia,nsia-isia)*CSIAs(isia)*CL111t(nsia-isia)
  1066.             endif
  1067.         enddo
  1068.         do nvac = 1, N_VACs
  1069.             dCL111t(nsia) = dCL111t(nsia) -k_VACs_L111t(nvac,nsia)*CVACs(nvac)*CL111t(nsia)
  1070.         enddo
  1071.  
  1072.         do nvac = 1, N_VACs
  1073.             if ((nsia+nvac) .le. N_L111t) then
  1074.             dCL111t(nsia) = dCL111t(nsia) +k_VACs_L111t(nvac,nsia+nvac)*CVACs(nvac)*CL111t(nsia+nvac)
  1075.             endif
  1076.         enddo
  1077.  
  1078.         !!!~reacrion with ungrouped L111
  1079.         do isia = N_loop_start, N_L111
  1080.             dCL111t(nsia) = dCL111t(nsia) -k_L111_L111t(isia,nsia)*CL111t(nsia)*CL111(isia)
  1081.             if ((nsia-isia) .ge. N_loop_start .and. (nsia-isia) .ne. isia) then  
  1082.             !reaction between same size of L111 excluded
  1083.             dCL111t(nsia) = dCL111t(nsia) +k_L111_L111t(isia,nsia-isia)*CL111t(nsia-isia)*CL111(isia)
  1084.             endif
  1085.         enddo
  1086.         !ungrouped L111t
  1087.         do isia = N_loop_start, N_L111t
  1088.             dCL111t(nsia) = dCL111t(nsia) -k_L111t_L111t(nsia,isia)*CL111t(nsia)*CL111t(isia)
  1089.             if ((isia .lt. nsia/2.) .and. ((nsia-isia) .ge. N_loop_start)) then
  1090.             dCL111t(nsia) = dCL111t(nsia) +k_L111t_L111t(nsia-isia,isia)*CL111t(nsia-isia)*CL111t(isia)
  1091.             endif
  1092.         enddo
  1093.         !ungrouped L100
  1094.         do isia = N_loop_start, N_L100
  1095.             dCL111t(nsia) = dCL111t(nsia) -k_L111t_L100(nsia,isia)*CL111t(nsia)*CL100(isia)
  1096.             if ((isia .lt. (nsia-isia)) .and. ((nsia-isia) .ge. N_loop_start)) then  
  1097.             !reaction between L111 and L100 of same size included
  1098.             dCL111t(nsia) = dCL111t(nsia) +k_L111t_L100(nsia-isia,isia)*CL111t(nsia-isia)*CL100(isia)
  1099.             endif
  1100.         enddo
  1101.        
  1102.    
  1103.         !!!~reacrion involving grouped L111t
  1104.         do ugroup = 1, Nu_L111t
  1105.             dCL111t(nsia) = dCL111t(nsia) -k_L111t_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111t(nsia)*CL111tL0(ugroup) &
  1106.                                         &-k_L111t_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111t(nsia)*CL111tL1(ugroup)
  1107.             do nvac = 1, N_VACs
  1108.                 if (((nvac+nsia).ge. mesh_ust(ugroup)) .and. ((nvac+nsia) .le. mesh_ued(ugroup))) then
  1109.  
  1110.                 dCL111t(nsia) = dCL111t(nsia) +k_VACs_uL111t(nvac,ugroup)*CVACs(nvac)*CL111tL0(ugroup) &
  1111.                                             +k_VACs_uL111t(nvac,ugroup)*v1(nsia +nvac,ugroup)*CVACs(nvac)*CL111tL1(ugroup)
  1112.                 endif
  1113.             enddo
  1114.         enddo
  1115.         dCL111t(N_L111) = dCL111t(N_L111) +g_SIA_uL111t(1)*CL111tL0(1) &
  1116.                                         & +g_SIA_uL111t(1)*v1(N_L111+1,1)*CL111tL1(1)
  1117.                                        
  1118.         !!!~reacrion involving grouped L100
  1119.         do ugroup = 1, Nu_L100
  1120.             dCL111t(nsia) = dCL111t(nsia) -k_L111t_uL100(nsia,ugroup)*adft_L0(ugroup)*CL111t(nsia)*CL100L0(ugroup) &
  1121.                                         &-k_L111t_uL100(nsia,ugroup)*adft_L1(ugroup)*CL111t(nsia)*CL100L1(ugroup)
  1122.         enddo
  1123.        
  1124.         !!!~emission
  1125.         if ((nsia .ge. (N_loop_start+1)) .and. (nsia .le. (N_L111t-1))) then
  1126.             dCL111t(nsia) = dCL111t(nsia) -g_SIA_L111t(nsia)*CL111t(nsia) -g_VAC_L111t(nsia)*CL111t(nsia) &
  1127.                                         &  +g_SIA_L111t(nsia+1)*CL111t(nsia+1) +g_VAC_L111t(nsia-1)*CL111t(nsia-1)
  1128.         endif
  1129.         if (nsia == N_loop_start) then
  1130.             dCL111t(nsia) = dCL111t(nsia) -g_VAC_L111t(nsia)*CL111t(nsia) +g_SIA_L111t(nsia+1)*CL111t(nsia+1)
  1131.                                                        
  1132.         endif
  1133.         if (nsia == N_L111t) then
  1134.             dCL111t(nsia) = dCL111t(nsia) -g_SIA_L111t(nsia)*CL111t(nsia) +g_VAC_L111t(nsia-1)*CL111t(nsia-1) &
  1135.                                                                         & -g_VAC_L111t(nsia)*CL111t(nsia)
  1136.         endif
  1137.        
  1138.         !add cascade overlap 01032022
  1139.         if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
  1140.             dCL111t(nsia) = dCL111t(nsia) &
  1141.                         & -(f_L111ttoL100(nsia) +f_L111ttoC15(nsia))*CascadeRate*CL111t(nsia)    &
  1142.                     & +f111t*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate*CL100(nsia)    &
  1143.                     & +f111t*(1-f_C15toL100(nsia) -f_C15toC15(nsia)) *CascadeRate*C_C15(nsia)
  1144.         endif
  1145.     enddo
  1146.    
  1147.     !!!!!!!!!!!!!!!
  1148.     !~group L111t~
  1149.     !!!!!!!!!!!!!!!    
  1150.     do ugroup = 1, Nu_L111t
  1151.         dCL111tL0(ugroup) = 0.
  1152.         dCL111tL1(ugroup) = 0.
  1153.            
  1154.         dsinkL111tL0(ugroup) = +loss_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup) &
  1155.                                 &+loss_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
  1156.         dsinkL111tL1(ugroup) = +loss_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup) &
  1157.                                 &+loss_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
  1158.         dCL111tL0(ugroup) = dCL111tL0(ugroup) -loss_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup) &
  1159.                                                 &-loss_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
  1160.         dCL111tL1(ugroup) = dCL111tL1(ugroup) -loss_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup) &
  1161.                                                 &-loss_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
  1162.        
  1163.         !group- from group+SIA                                           
  1164.         do isia = 1, N_SIAs_m
  1165.             dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_SIAs_uL111t(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)*CL111tL0(ugroup) &
  1166.                                                 & -k_SIAs_uL111t(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)*CL111tL1(ugroup)
  1167.             dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_SIAs_uL111t(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)*CL111tL0(ugroup) &
  1168.                                                 & -k_SIAs_uL111t(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)*CL111tL1(ugroup)
  1169.         enddo
  1170.         !group- from group+vac
  1171.         do nvac = 1, N_VACs
  1172.             dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_VACs_uL111t(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)*CL111tL0(ugroup) &
  1173.                                                 & -k_VACs_uL111t(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)*CL111tL1(ugroup)
  1174.             dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_VACs_uL111t(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)*CL111tL0(ugroup) &
  1175.                                                 & -k_VACs_uL111t(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)*CL111tL1(ugroup)
  1176.         enddo
  1177.         !group- from group+L111, L111t, L100                                         
  1178.         do isia = N_loop_start, N_L111
  1179.             dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_L111_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)*CL111tL0(ugroup) &
  1180.                                                 & -k_L111_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)*CL111tL1(ugroup)
  1181.             dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_L111_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)*CL111tL0(ugroup) &
  1182.                                                 & -k_L111_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)*CL111tL1(ugroup)
  1183.         enddo
  1184.         do isia = N_loop_start, N_L111t
  1185.             dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_L111t_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)*CL111tL0(ugroup) &
  1186.                                                 & -k_L111t_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)*CL111tL1(ugroup)
  1187.             dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_L111t_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)*CL111tL0(ugroup) &
  1188.                                                 & -k_L111t_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)*CL111tL1(ugroup)
  1189.         enddo
  1190.         do isia = N_loop_start, N_L100
  1191.             dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_L100_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL100(isia)*CL111tL0(ugroup) &
  1192.                                                 & -k_L100_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL100(isia)*CL111tL1(ugroup)
  1193.             dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_L100_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL100(isia)*CL111tL0(ugroup) &
  1194.                                                 & -k_L100_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL100(isia)*CL111tL1(ugroup)
  1195.         enddo
  1196.  
  1197.         !group+ from group+SIA         
  1198.         do isia1 = 1, N_SIAs_m
  1199.             st = mesh_ust(ugroup) -isia1
  1200.             ed = mesh_ued(ugroup) -isia1
  1201.             do ugroup2 = 1, ugroup
  1202.                 st1 = mesh_ust(ugroup2)
  1203.                 ed1 = mesh_ued(ugroup2)
  1204.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1205.                     dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_SIAs_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
  1206.                                                                                         &*CSIAs(isia1)*CL111tL0(ugroup2)&
  1207.                                                     &+k_SIAs_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
  1208.                                                                                         &*CSIAs(isia1)*CL111tL1(ugroup2)
  1209.                     dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_SIAs_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
  1210.                                                                                         &*CSIAs(isia1)*CL111tL0(ugroup2)&
  1211.                                                     &+k_SIAs_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
  1212.                                                                                         &*CSIAs(isia1)*CL111tL1(ugroup2)
  1213.                 endif
  1214.             enddo
  1215.         enddo
  1216.         !write (*,*) akaL0_Idef_L0(1,1,1), akaL0_Idef_L1(1,1,1),  abL0_L0(1), abL0_L1(1)
  1217.         !write (*,*) akaL1_Idef_L0(1,1,1), akaL1_Idef_L1(1,1,1),  abL1_L0(1), abL1_L1(1)
  1218.         !write (*,*) akaL0_Idef_L0(5,1,5), akaL0_Idef_L1(5,1,5)
  1219.         !write (*,*) "!!!!!!!!!"
  1220.         !group+ from group+vac
  1221.         do nvac = 1, N_VACs
  1222.             st = mesh_ust(ugroup)+nvac
  1223.             ed = mesh_ued(ugroup)+nvac
  1224.             do ugroup2 = ugroup, Nu_L111t
  1225.                 st1 = mesh_ust(ugroup2)
  1226.                 ed1 = mesh_ued(ugroup2)
  1227.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1228.                    dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_VACs_uL111t(nvac,ugroup2)*akaL0_Vdef_L0(ugroup,nvac,ugroup2)&
  1229.                                                                                     &*CVACs(nvac)*CL111tL0(ugroup2)&
  1230.                                                     &+k_VACs_uL111t(nvac,ugroup2)*akaL0_Vdef_L1(ugroup,nvac,ugroup2)&
  1231.                                                                                     &*CVACs(nvac)*CL111tL1(ugroup2)
  1232.                    dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_VACs_uL111t(nvac,ugroup2)*akaL1_Vdef_L0(ugroup,nvac,ugroup2)&
  1233.                                                                                     &*CVACs(nvac)*CL111tL0(ugroup2)&
  1234.                                                     &+k_VACs_uL111t(nvac,ugroup2)*akaL1_Vdef_L1(ugroup,nvac,ugroup2)&
  1235.                                                                                     &*CVACs(nvac)*CL111tL1(ugroup2)
  1236.                 endif
  1237.             enddo  
  1238.         enddo
  1239.         !write(*,*) k_VACs_uVACs
  1240.         !group+ from group+L111
  1241.         do isia1 = N_loop_start, N_L111
  1242.             st = mesh_ust(ugroup) -isia1
  1243.             ed = mesh_ued(ugroup) -isia1
  1244.             do ugroup2 = 1, ugroup
  1245.                 st1 = mesh_ust(ugroup2)
  1246.                 ed1 = mesh_ued(ugroup2)
  1247.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1248.                    dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
  1249.                                                                                         &*CL111(isia1)*CL111tL0(ugroup2)&
  1250.                                                     &+k_L111_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
  1251.                                                                                         &*CL111(isia1)*CL111tL1(ugroup2)
  1252.                    dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
  1253.                                                                                         &*CL111(isia1)*CL111tL0(ugroup2) &
  1254.                                                     &+k_L111_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
  1255.                                                                                         &*CL111(isia1)*CL111tL1(ugroup2)
  1256.                 endif
  1257.             enddo
  1258.         enddo
  1259.         !group+ from group+L111t
  1260.         do isia1 = N_loop_start, N_L111t
  1261.             st = mesh_ust(ugroup) -isia1
  1262.             ed = mesh_ued(ugroup) -isia1
  1263.             do ugroup2 = 1, ugroup
  1264.                 st1 = mesh_ust(ugroup2)
  1265.                 ed1 = mesh_ued(ugroup2)
  1266.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1267.                    dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111t_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
  1268.                                                                                         &*CL111t(isia1)*CL111tL0(ugroup2)&
  1269.                                                     &+k_L111t_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
  1270.                                                                                         &*CL111t(isia1)*CL111tL1(ugroup2)
  1271.                    dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111t_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
  1272.                                                                                         &*CL111t(isia1)*CL111tL0(ugroup2)&
  1273.                                                     &+k_L111t_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
  1274.                                                                                         &*CL111t(isia1)*CL111tL1(ugroup2)
  1275.                 endif
  1276.             enddo
  1277.         enddo
  1278.         !group+ from group+L100
  1279.         do isia1 = N_loop_start, N_L100
  1280.             st = mesh_ust(ugroup) -isia1
  1281.             ed = mesh_ued(ugroup) -isia1
  1282.             do ugroup2 = 1, ugroup
  1283.                 st1 = mesh_ust(ugroup2)
  1284.                 ed1 = mesh_ued(ugroup2)
  1285.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1286.                    dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L100_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
  1287.                                                                                         &*CL100(isia1)*CL111tL0(ugroup2)&
  1288.                                                     &+k_L100_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
  1289.                                                                                         &*CL100(isia1)*CL111tL1(ugroup2)
  1290.                    dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L100_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
  1291.                                                                                         &*CL100(isia1)*CL111tL0(ugroup2)&
  1292.                                                     &+k_L100_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
  1293.                                                                                         &*CL100(isia1)*CL111tL1(ugroup2)
  1294.                 endif  
  1295.             enddo
  1296.         enddo
  1297.        
  1298.         !group+ from group uL111+L111t eg. group2_(40-50)+10 -> group_(55-65)
  1299.        
  1300.  
  1301.         !group- from group emission SIA, VAC
  1302.         dCL111tL0(ugroup) = dCL111tL0(ugroup) -g_SIA_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup)&
  1303.                                                 &-g_SIA_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
  1304.         dCL111tL1(ugroup) = dCL111tL1(ugroup) -g_SIA_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup)&
  1305.                                                 &-g_SIA_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
  1306.         dCL111tL0(ugroup) = dCL111tL0(ugroup) -g_VAC_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup)&
  1307.                                                 &-g_VAC_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
  1308.         dCL111tL1(ugroup) = dCL111tL1(ugroup) -g_VAC_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup)&
  1309.                                                 &-g_VAC_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
  1310.         !group+ from group emission of SIA, VAC
  1311.         do u_idx = ugroup, ugroup+1
  1312.             if (u_idx .le. Nu_L111t) then
  1313.                dCL111tL0(ugroup) = dCL111tL0(ugroup) +g_SIA_uL111t(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
  1314.                                                 &+g_SIA_uL111t(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)
  1315.                dCL111tL1(ugroup) = dCL111tL1(ugroup) +g_SIA_uL111t(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
  1316.                                                 &+g_SIA_uL111t(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)
  1317.             endif
  1318.         enddo
  1319.        
  1320.         do u_idx =  ugroup-1, ugroup
  1321.             if (u_idx .ge. 1) then
  1322.                dCL111tL0(ugroup) = dCL111tL0(ugroup) +g_VAC_uL111t(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
  1323.                                                 &+g_VAC_uL111t(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)
  1324.                dCL111tL1(ugroup) = dCL111tL1(ugroup) +g_VAC_uL111t(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
  1325.                                                 &+g_VAC_uL111t(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)              
  1326.             endif
  1327.         enddo
  1328.        
  1329.        
  1330.         !~defect to group
  1331.         !L111t emit vac join group
  1332.         if (ugroup .eq. 1) then
  1333.            dCL111tL0(ugroup) = dCL111tL0(ugroup) +g_VAC_L111t(N_L111t)*CL111t(N_L111t)*uf0(ugroup)
  1334.            dCL111tL1(ugroup) = dCL111tL1(ugroup) +g_VAC_L111t(N_L111t)*CL111t(N_L111t)*(N_L111t+1-mesh_x0(ugroup))*uf1(ugroup)
  1335.         endif
  1336.         !L111t absorb SIA join group
  1337.         do isia1 = N_loop_start, N_L111t
  1338.             do isia2 = 1, N_SIAs_m
  1339.                 if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
  1340.                    dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_SIAs_L111t(isia2,isia1)*CSIAs(isia2)*CL111t(isia1)*uf0(ugroup)
  1341.                    dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_SIAs_L111t(isia2,isia1)*CSIAs(isia2)*CL111t(isia1)&
  1342.                                                             &*(isia1 +isia2 -mesh_x0(ugroup))*uf1(ugroup)
  1343.                 endif
  1344.             enddo
  1345.         enddo
  1346.         !L111t absorb L111t join group
  1347.         do isia1 = N_loop_start, N_L111t
  1348.             do isia2 = isia1+1, N_L111t   !not from N_Loop_start avoid reptition and same size
  1349.             temp = (isia1 + isia2)
  1350.             if ((temp .ge. mesh_ust(ugroup)) .and. (temp .le. mesh_ued(ugroup))) then
  1351.                dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111t_L111t(isia2,isia1)*CL111t(isia2)*CL111t(isia1)*uf0(ugroup)
  1352.                dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111t_L111t(isia2,isia1)*CL111t(isia2)*CL111t(isia1) &
  1353.                                                             &*(isia1 + isia2 -mesh_x0(ugroup))*uf1(ugroup)
  1354.             endif
  1355.             enddo
  1356.         enddo
  1357.         !L111t absorb L111 join group
  1358.         do isia1 = N_loop_start, N_L111
  1359.             do isia2 = N_loop_start, N_L111t
  1360.             if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
  1361.                dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111_L111t(isia1,isia2)*CL111t(isia2)*CL111(isia1)*uf0(ugroup)
  1362.                dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111_L111t(isia1,isia2)*CL111t(isia2)*CL111(isia1)&
  1363.                                                             &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
  1364.             endif
  1365.             enddo
  1366.         enddo
  1367.         !L111t absorb L100(smaller) join group
  1368.         do isia1 = N_loop_start, N_L111t
  1369.             do isia2 = N_loop_start, isia1-1 !isia1 > isia2
  1370.                if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
  1371.                   dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)*uf0(ugroup)
  1372.                   dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)&
  1373.                                                             &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
  1374.                endif
  1375.             enddo
  1376.         enddo
  1377.                
  1378.         !~~~group+group~~~
  1379.         !group- from uL111     
  1380.         !group+ from uL111 
  1381.        
  1382.         !group- from uL111t
  1383.         do u_idx1 = 1, Nu_L111t
  1384.             do u_idx2 =max(u_idx1,ugroup), Nu_L111t
  1385.                dCL111tL0(ugroup) = dCL111tL0(ugroup) &
  1386.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL0(u_idx1) &
  1387.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL1(u_idx1) &
  1388.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL0(u_idx1) &
  1389.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL1(u_idx1)
  1390.                        
  1391.                dCL111tL1(ugroup) = dCL111tL1(ugroup) &
  1392.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL0(u_idx1) &
  1393.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL1(u_idx1) &
  1394.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL0(u_idx1) &
  1395.                         &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL1(u_idx1)
  1396.             enddo
  1397.         enddo
  1398.         !write (*,*) k_uL111t_uL111t
  1399.    
  1400.      
  1401.         do u_idx1 = 1, ugroup
  1402.             do u_idx2 = u_idx1, ugroup !from from 1, to avoid reptition
  1403.             dCL111tL0(ugroup) = dCL111tL0(ugroup) &
  1404.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L0L0(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL0(u_idx2) &
  1405.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L1L0(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL0(u_idx2) &
  1406.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L0L1(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL1(u_idx2) &
  1407.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L1L1(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL1(u_idx2)
  1408.             dCL111tL1(ugroup) = dCL111tL1(ugroup) &
  1409.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L0L0(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL0(u_idx2) &
  1410.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L1L0(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL0(u_idx2) &
  1411.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L0L1(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL1(u_idx2) &
  1412.                         &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L1L1(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL1(u_idx2)
  1413.             enddo
  1414.         enddo
  1415.         !group- from uL100     
  1416.         do u_idx1 = 1, Nu_L100
  1417.             do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t,Nu_L100)
  1418.             dCL111tL0(ugroup) = dCL111tL0(ugroup) &
  1419.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL0(ugroup) &
  1420.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL1(ugroup) &
  1421.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL0(ugroup) &
  1422.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL1(ugroup)
  1423.             dCL111tL1(ugroup) = dCL111tL1(ugroup) &
  1424.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL0(ugroup) &
  1425.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL1(ugroup) &
  1426.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL0(ugroup) &
  1427.                         &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL1(ugroup)
  1428.             enddo
  1429.         enddo
  1430.         !group+ from uL100         
  1431.         do u_idx1 = 1, ugroup
  1432.             do u_idx2 = 1, min(ugroup, Nu_L100)
  1433.                if (u_idx1 .eq. u_idx2) then
  1434.                   factor = 0.5
  1435.                elseif (u_idx1 .gt. u_idx2) then
  1436.                   factor = 1.0
  1437.                else
  1438.                 factor = 0.
  1439.                endif  
  1440.                   dCL111tL0(ugroup) = dCL111tL0(ugroup) &
  1441.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
  1442.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
  1443.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
  1444.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)              
  1445.                   dCL111tL1(ugroup) = dCL111tL1(ugroup) &
  1446.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
  1447.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
  1448.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
  1449.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)    
  1450.             enddo
  1451.         enddo
  1452.    
  1453.  
  1454.  
  1455.         !!add L111 trapped by C15 01052022
  1456.         !if (mesh_uidx(nsia) .le. mesh_uidx(N_lpc15)) then
  1457.         !do isia = N_SIAs_m+1, N_C15                     
  1458.         !   if ((isia+nsia) .le. N_C15) then
  1459.         !   dCL111t(nsia) = dCL111t(nsia) &
  1460.         !                     & -k_C15_L111t(isia,mesh_uidx(nsia))*C_C15(isia)*CL111t(nsia)  
  1461.         !   endif
  1462.         !enddo
  1463.         !endif
  1464.     enddo
  1465.     !write(*,*)   dCL111tL1,  dCL111tL0
  1466.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1467.     !-----------L100-------------------
  1468.     !~ungrouped L100
  1469.     do nsia = N_loop_start, N_L100
  1470.         dCL100(nsia) = 0.
  1471.        
  1472.         if (nsia .le. N_C15) then
  1473.         !12/29/2021 add formation from cascade
  1474.            dCL100(nsia) = +dparate*fcascade_SIAs_L100(nsia) +C_C15(nsia)*f_trans100(nsia)
  1475.         endif
  1476.        
  1477.         do isia = 1, N_SIAs_m
  1478.             dCL100(nsia) = dCL100(nsia) -k_SIAs_L100(isia,nsia)*CSIAs(isia)*CL100(nsia)
  1479.         enddo
  1480.         do isia = 1, N_SIAs_m
  1481.             if ((nsia-isia) .ge. N_loop_start ) then
  1482.                dCL100(nsia) = dCL100(nsia) +k_SIAs_L100(isia,nsia-isia)*CSIAs(isia)*CL100(nsia-isia)
  1483.             endif
  1484.         enddo
  1485.         do nvac = 1, N_VACs_m
  1486.             dCL100(nsia) = dCL100(nsia) -k_VACs_L100(nvac,nsia)*CVACs(nvac)*CL100(nsia)
  1487.         enddo
  1488.  
  1489.         do nvac = 1, N_VACs_m
  1490.             if ((nsia+nvac) .le. N_L100) then
  1491.                dCL100(nsia) = dCL100(nsia) +k_VACs_L100(nvac,(nsia+nvac))*CVACs(nvac)*CL100(nsia+nvac)
  1492.             endif
  1493.         enddo
  1494.  
  1495.         !!!~reacrion with ungrouped L111
  1496.         do isia = N_loop_start, N_L111
  1497.             dCL100(nsia) = dCL100(nsia) -k_L111_L100(isia,nsia)*CL100(nsia)*CL111(isia)
  1498.             if ((nsia-isia) .ge. isia) then
  1499.                dCL100(nsia) = dCL100(nsia) +k_L111_L100(isia,nsia-isia)*CL100(nsia-isia)*CL111(isia)
  1500.             endif
  1501.         enddo
  1502.         !ungrouped L111t
  1503.         do isia = N_loop_start, N_L111t
  1504.             dCL100(nsia) = dCL100(nsia) -k_L111t_L100(isia,nsia)*CL100(nsia)*CL111t(isia)
  1505.             if ((nsia-isia) .ge. isia) then
  1506.                dCL100(nsia) = dCL100(nsia) +k_L111t_L100(isia,nsia-isia)*CL100(nsia-isia)*CL111t(isia)
  1507.             endif
  1508.         enddo
  1509.        
  1510.         !!!~add L100 formation from L111+L111
  1511.         if (nsia/2 .ge. N_Loop_start) then
  1512.            dCL100(nsia) = dCL100(nsia) +f_g2s*k_L111_L111(nsia/2,nsia/2)*CL111(nsia/2)*CL111(nsia/2)    &
  1513.                                     & +f_g2s*k_L111t_L111t(nsia/2,nsia/2)*CL111t(nsia/2)*CL111t(nsia/2)&
  1514.                                     & +f_g2s*k_L111_L111t(nsia/2,nsia/2)*CL111(nsia/2)*CL111t(nsia/2)
  1515.         endif
  1516.        
  1517.         !!!~reacrion involving grouped L111t
  1518.         do ugroup = 1, Nu_L111t
  1519.             dCL100(nsia) = dCL100(nsia) -k_L100_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL100(nsia)*CL111tL0(ugroup) &
  1520.                                         &-k_L100_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL100(nsia)*CL111tL1(ugroup)
  1521.         enddo
  1522.                            
  1523.         !!!~reacrion involving grouped L100
  1524.         do ugroup = 1, Nu_L100
  1525.             do nvac = 1, N_VACs_m
  1526.                if (((nvac+nsia).ge. mesh_ust(ugroup)) .and. ((nvac+nsia) .le. mesh_ued(ugroup))) then
  1527.                   dCL100(nsia) = dCL100(nsia) +k_VACs_uL100(nvac,ugroup)*CVACs(nvac)*CL100L0(ugroup) &
  1528.                                             +k_VACs_uL100(nvac,ugroup)*v1(nsia+nvac,ugroup)*CVACs(nvac)*CL100L1(ugroup)
  1529.                endif
  1530.             enddo
  1531.         enddo
  1532.         dCL100(N_L100) = dCL100(N_L100) +g_SIA_uL100(1)*CL100L0(1) &
  1533.                                         & +g_SIA_uL100(1)*v1(N_L100+1,1)*CL100L1(1)
  1534.                                        
  1535.         !!!~emission
  1536.         if ((nsia .ge. (N_loop_start+1)) .and. (nsia .le. (N_L100-1))) then
  1537.             dCL100(nsia) = dCL100(nsia) -g_SIA_L100(nsia)*CL100(nsia) -g_VAC_L100(nsia)*CL100(nsia) &
  1538.                                     &  +g_SIA_L100(nsia+1)*CL100(nsia+1) +g_VAC_L100(nsia-1)*CL100(nsia-1)
  1539.         endif
  1540.         if (nsia == N_loop_start) then
  1541.             dCL100(nsia) = dCL100(nsia) -g_VAC_L100(nsia)*CL100(nsia) +g_SIA_L100(nsia+1)*CL100(nsia+1)
  1542.                                                        
  1543.         endif
  1544.         if (nsia == N_L100) then
  1545.             dCL100(nsia) = dCL100(nsia) -g_SIA_L100(nsia)*CL100(nsia) +g_VAC_L100(nsia-1)*CL100(nsia-1) &
  1546.                                                                     & -g_VAC_L100(nsia)*CL100(nsia)
  1547.         endif
  1548.        
  1549.         !add L100 formation from cascade overlap 01012022
  1550.         if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
  1551.             dCL100(nsia) = dCL100(nsia) +f_L111toL100(nsia)*CascadeRate*CL111(nsia)                    &
  1552.                                                     & +f_L111ttoL100(nsia)*CascadeRate*CL111t(nsia)   &
  1553.                                                     & +f_C15toL100(nsia)*CascadeRate*C_C15(nsia)      &
  1554.                                                     & -(1-f_L100toL100(nsia))*CascadeRate*CL100(nsia)
  1555.         endif
  1556.     enddo
  1557.  
  1558.  
  1559.    
  1560.  
  1561.     !write(*,*)  dCVACsL0, dCVACsL1
  1562.     !!!!!!!!!!!!!!!
  1563.     !~group L100~ !
  1564.     !!!!!!!!!!!!!!!    
  1565.     do ugroup = 1, Nu_L100
  1566.         dCL100L0(ugroup) = 0.
  1567.         dCL100L1(ugroup) = 0.
  1568.  
  1569.         !group- from group+SIA                                           
  1570.         do isia = 1, N_SIAs_m
  1571.             dCL100L0(ugroup) = dCL100L0(ugroup) -k_SIAs_uL100(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)*CL100L0(ugroup) &
  1572.                                                 & -k_SIAs_uL100(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)*CL100L1(ugroup)
  1573.             dCL100L1(ugroup) = dCL100L1(ugroup) -k_SIAs_uL100(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)*CL100L0(ugroup) &
  1574.                                                 & -k_SIAs_uL100(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)*CL100L1(ugroup)
  1575.         enddo
  1576.         !group- from group+vac
  1577.         do nvac = 1, N_VACs_m
  1578.             dCL100L0(ugroup) = dCL100L0(ugroup) -k_VACs_uL100(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)*CL100L0(ugroup) &
  1579.                                                 & -k_VACs_uL100(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)*CL100L1(ugroup)
  1580.             dCL100L1(ugroup) = dCL100L1(ugroup) -k_VACs_uL100(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)*CL100L0(ugroup) &
  1581.                                                 & -k_VACs_uL100(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)*CL100L1(ugroup)
  1582.         enddo
  1583.         !group- from group+L111, L111t, L100                                         
  1584.         do isia = N_loop_start, N_L111
  1585.             dCL100L0(ugroup) = dCL100L0(ugroup) -k_L111_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)*CL100L0(ugroup) &
  1586.                                                 & -k_L111_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)*CL100L1(ugroup)
  1587.             dCL100L1(ugroup) = dCL100L1(ugroup) -k_L111_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)*CL100L0(ugroup) &
  1588.                                                 & -k_L111_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)*CL100L1(ugroup)
  1589.         enddo
  1590.         do isia = N_loop_start, N_L111t
  1591.             dCL100L0(ugroup) = dCL100L0(ugroup) -k_L111t_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)*CL100L0(ugroup) &
  1592.                                                 & -k_L111t_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)*CL100L1(ugroup)
  1593.             dCL100L1(ugroup) = dCL100L1(ugroup) -k_L111t_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)*CL100L0(ugroup) &
  1594.                                                 & -k_L111t_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)*CL100L1(ugroup)
  1595.         enddo
  1596.  
  1597.         !group+ from group+SIA         
  1598.         do isia = 1, N_SIAs_m
  1599.             st = mesh_ust(ugroup) -isia
  1600.             ed = mesh_ued(ugroup) -isia
  1601.             do ugroup2 = 1, ugroup
  1602.                 st1 = mesh_ust(ugroup2)
  1603.                 ed1 = mesh_ued(ugroup2)
  1604.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1605.                    
  1606.                    dCL100L0(ugroup) = dCL100L0(ugroup) +k_SIAs_uL100(isia,ugroup2)*akaL0_Idef_L0(ugroup,isia,ugroup2)&
  1607.                                                                                     &*CSIAs(isia)*CL100L0(ugroup2)&
  1608.                                                     &+k_SIAs_uL100(isia,ugroup2)*akaL0_Idef_L1(ugroup,isia,ugroup2)&
  1609.                                                                                     &*CSIAs(isia)*CL100L1(ugroup2)
  1610.                    dCL100L1(ugroup) = dCL100L1(ugroup) +k_SIAs_uL100(isia,ugroup2)*akaL1_Idef_L0(ugroup,isia,ugroup2)&
  1611.                                                                                     &*CSIAs(isia)*CL100L0(ugroup2)&
  1612.                                                     &+k_SIAs_uL100(isia,ugroup2)*akaL1_Idef_L1(ugroup,isia,ugroup2)&
  1613.                                                                                     &*CSIAs(isia)*CL100L1(ugroup2)
  1614.                 endif
  1615.             enddo
  1616.         enddo
  1617.  
  1618.         !group+ from group+vac
  1619.         do nvac = 1, N_VACs_m
  1620.             st = mesh_ust(ugroup)+nvac
  1621.             ed = mesh_ued(ugroup)+nvac
  1622.             do ugroup2 = ugroup, Nu_L100
  1623.                 st1 = mesh_ust(ugroup2)
  1624.                 ed1 = mesh_ued(ugroup2)
  1625.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1626.                    
  1627.                    dCL100L0(ugroup) = dCL100L0(ugroup) +k_VACs_uL100(nvac,ugroup2)*akaL0_Vdef_L0(ugroup,nvac,ugroup2)&
  1628.                                                                                     &*CVACs(nvac)*CL100L0(ugroup2)&
  1629.                                                     &+k_VACs_uL100(nvac,ugroup2)*akaL0_Vdef_L1(ugroup,nvac,ugroup2)&
  1630.                                                                                     &*CVACs(nvac)*CL100L1(ugroup2)
  1631.                    dCL100L1(ugroup) = dCL100L1(ugroup) +k_VACs_uL100(nvac,ugroup2)*akaL1_Vdef_L0(ugroup,nvac,ugroup2)&
  1632.                                                                                     &*CVACs(nvac)*CL100L0(ugroup2)&
  1633.                                                     &+k_VACs_uL100(nvac,ugroup2)*akaL1_Vdef_L1(ugroup,nvac,ugroup2)&
  1634.                                                                                     &*CVACs(nvac)*CL100L1(ugroup2)
  1635.                 endif
  1636.             enddo
  1637.         enddo
  1638.  
  1639.         !group+ from group+L111
  1640.         do isia = N_loop_start, N_L111
  1641.             st = mesh_ust(ugroup) -isia
  1642.             ed = mesh_ued(ugroup) -isia
  1643.             do ugroup2 = 1, ugroup
  1644.                 st1 = mesh_ust(ugroup2)
  1645.                 ed1 = mesh_ued(ugroup2)
  1646.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1647.                    dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111_uL100(isia,ugroup2)*akaL0_Idef_L0(ugroup,isia,ugroup2)&
  1648.                                                                                     &*CL111(isia)*CL100L0(ugroup2)&
  1649.                                                     &+k_L111_uL100(isia,ugroup2)*akaL0_Idef_L1(ugroup,isia,ugroup2)&
  1650.                                                                                     &*CL111(isia)*CL100L1(ugroup2)
  1651.                    dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111_uL100(isia,ugroup2)*akaL1_Idef_L0(ugroup,isia,ugroup2)&
  1652.                                                                                     &*CL111(isia)*CL100L0(ugroup2)&
  1653.                                                     &+k_L111_uL100(isia,ugroup2)*akaL1_Idef_L1(ugroup,isia,ugroup2)&
  1654.                                                                                     &*CL111(isia)*CL100L1(ugroup2)
  1655.                 endif
  1656.             enddo
  1657.         enddo
  1658.        
  1659.         !group+ from group+L111t
  1660.         do isia = N_loop_start, N_L111t
  1661.             st = mesh_ust(ugroup) -isia
  1662.             ed = mesh_ued(ugroup) -isia
  1663.             do ugroup2 = 1, ugroup
  1664.                 st1 = mesh_ust(ugroup2)
  1665.                 ed1 = mesh_ued(ugroup2)
  1666.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  1667.                     dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111t_uL100(isia,ugroup2)*akaL0_Idef_L0(ugroup,isia,ugroup2)&
  1668.                                                                                     &*CL111t(isia)*CL100L0(ugroup2)&
  1669.                                                     &+k_L111t_uL100(isia,ugroup2)*akaL0_Idef_L1(ugroup,isia,ugroup2)&
  1670.                                                                                     &*CL111t(isia)*CL100L1(ugroup2)
  1671.                     dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111t_uL100(isia,ugroup2)*akaL1_Idef_L0(ugroup,isia,ugroup2)&
  1672.                                                                                     &*CL111t(isia)*CL100L0(ugroup2)&
  1673.                                                     &+k_L111t_uL100(isia,ugroup2)*akaL1_Idef_L1(ugroup,isia,ugroup2)&
  1674.                                                                                     &*CL111t(isia)*CL100L1(ugroup2)
  1675.                 endif
  1676.             enddo
  1677.         enddo
  1678.  
  1679.         !group- from group emission SIA, VAC
  1680.         dCL100L0(ugroup) = dCL100L0(ugroup) -g_SIA_uL100(ugroup)*abL0_L0(ugroup)*CL100L0(ugroup)&
  1681.                                             &-g_SIA_uL100(ugroup)*abL0_L1(ugroup)*CL100L1(ugroup)
  1682.         dCL100L1(ugroup) = dCL100L1(ugroup) -g_SIA_uL100(ugroup)*abL1_L0(ugroup)*CL100L0(ugroup)&
  1683.                                             &-g_SIA_uL100(ugroup)*abL1_L1(ugroup)*CL100L1(ugroup)
  1684.         dCL100L0(ugroup) = dCL100L0(ugroup) -g_VAC_uL100(ugroup)*abL0_L0(ugroup)*CL100L0(ugroup)&
  1685.                                             &-g_VAC_uL100(ugroup)*abL0_L1(ugroup)*CL100L1(ugroup)
  1686.         dCL100L1(ugroup) = dCL100L1(ugroup) -g_VAC_uL100(ugroup)*abL1_L0(ugroup)*CL100L0(ugroup)&
  1687.                                             &-g_VAC_uL100(ugroup)*abL1_L1(ugroup)*CL100L1(ugroup)
  1688.         !group+ from group emission SIA, VAC
  1689.         do u_idx = ugroup, ugroup+1
  1690.            if (u_idx .le. Nu_L100) then
  1691.               dCL100L0(ugroup) = dCL100L0(ugroup) +g_SIA_uL100(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
  1692.                                             &+g_SIA_uL100(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
  1693.               dCL100L1(ugroup) = dCL100L1(ugroup) +g_SIA_uL100(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
  1694.                                             &+g_SIA_uL100(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
  1695.            endif
  1696.         enddo
  1697.         do u_idx = ugroup-1, ugroup
  1698.            if (u_idx .ge. 1) then
  1699.               dCL100L0(ugroup) = dCL100L0(ugroup) +g_VAC_uL100(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
  1700.                                             &+g_VAC_uL100(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
  1701.               dCL100L1(ugroup) = dCL100L1(ugroup) +g_VAC_uL100(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
  1702.                                             &+g_VAC_uL100(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
  1703.            endif
  1704.         enddo
  1705.        
  1706.         !~defect to group
  1707.         !L100 emit vac join group
  1708.         if (ugroup .eq. 1) then
  1709.            dCL100L0(ugroup) = dCL100L0(ugroup) +g_VAC_L100(N_L100)*CL100(N_L100)*uf0(ugroup)
  1710.            dCL100L1(ugroup) = dCL100L1(ugroup) +g_VAC_L100(N_L100)*CL100(N_L100)*(N_L100+1-mesh_x0(ugroup))*uf1(ugroup)
  1711.         endif
  1712.         !L100 absorb SIA join group
  1713.         do isia1 = N_L100-N_SIAs_m, N_L100
  1714.             do isia2 = 1, N_SIAs_m
  1715.                if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
  1716.                   dCL100L0(ugroup) = dCL100L0(ugroup) +k_SIAs_L100(isia2,isia1)*CSIAs(isia2)*CL100(isia1)*uf0(ugroup)
  1717.                   dCL100L1(ugroup) = dCL100L1(ugroup) +k_SIAs_L100(isia2,isia1)*CSIAs(isia2)*CL100(isia1)&
  1718.                                                         &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
  1719.                endif
  1720.            enddo
  1721.         enddo
  1722.         !L100 absorb L111t join group
  1723.         do isia1 = N_loop_start, N_L111t
  1724.             do isia2 = isia1, N_L100  !isia2 > isia1
  1725.                if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
  1726.                   dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)*uf0(ugroup)
  1727.                   dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)&
  1728.                                                         &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
  1729.                endif
  1730.             enddo
  1731.         enddo
  1732.         !L100 absorb L111 join group
  1733.         do isia1 = N_loop_start, N_L111
  1734.             do isia2 = isia1, N_L100  !isia2 > isia1
  1735.                if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
  1736.                   dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111_L100(isia1,isia2)*CL100(isia2)*CL111(isia1)*uf0(ugroup)
  1737.                   dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111_L100(isia1,isia2)*CL100(isia2)*CL111(isia1)&
  1738.                                                         &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
  1739.                endif
  1740.             enddo
  1741.         enddo
  1742.                
  1743.         !L100 formation from L111+L111
  1744.         do isia1 = N_loop_start, N_L111
  1745.             if (2*isia1 .ge. mesh_ust(ugroup) .and. 2*isia1 .le. mesh_ued(ugroup)) then
  1746.                dCL100L0(ugroup) = dCL100L0(ugroup) +f_g2s*k_L111_L111(isia1,isia1)*CL111(isia1)*CL111(isia1)*uf0(ugroup)   &
  1747.                                                 & +f_g2s*k_L111_L111t(isia1,isia1)*CL111(isia1)*CL111t(isia1)*uf0(ugroup) &
  1748.                                                 & +f_g2s*k_L111t_L111t(isia1,isia1)*CL111t(isia1)*CL111t(isia1)*uf0(ugroup)
  1749.                dCL100L1(ugroup) = dCL100L1(ugroup)    &
  1750.                 &+f_g2s*k_L111_L111(isia1,isia1)*CL111(isia1)*CL111(isia1)*(isia1 + isia1-mesh_x0(ugroup))*uf1(ugroup)   &
  1751.                 &+f_g2s*k_L111_L111t(isia1,isia1)*CL111(isia1)*CL111t(isia1)*(isia1 + isia1-mesh_x0(ugroup))*uf1(ugroup) &
  1752.                 &+f_g2s*k_L111t_L111t(isia1,isia1)*CL111t(isia1)*CL111t(isia1)*(isia1 + isia1-mesh_x0(ugroup))*uf1(ugroup)
  1753.             endif
  1754.         enddo
  1755.                
  1756.         !~~~group+group~~~
  1757.         !group- from uL111     
  1758.         !group+ from uL111 
  1759.        
  1760.      
  1761.          !group+ from uL100        
  1762.          !group- from uL111t   
  1763.         do u_idx1 = 1, Nu_L111t
  1764.             do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t, Nu_L100)
  1765.                dCL100L0(ugroup) = dCL100L0(ugroup) &
  1766.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL0(u_idx1) &
  1767.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL0(u_idx1) &
  1768.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL1(u_idx1) &
  1769.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL1(u_idx1)
  1770.                dCL100L1(ugroup) = dCL100L1(ugroup) &
  1771.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL0(u_idx1) &
  1772.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL0(u_idx1) &
  1773.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL1(u_idx1) &
  1774.                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL1(u_idx1)
  1775.             enddo
  1776.         enddo
  1777.        
  1778.         !group+ from uL111t
  1779.         do u_idx1 = 1, ugroup
  1780.             do u_idx2 = 1, min(ugroup, Nu_L100)
  1781.             if (u_idx1 .eq. u_idx2) then
  1782.                 factor = 0.5
  1783.             elseif (u_idx1 .lt. u_idx2) then
  1784.                 factor = 1.0
  1785.             else
  1786.                 factor = 0.
  1787.             endif
  1788.             dCL100L0(ugroup) = dCL100L0(ugroup) &
  1789.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L0(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
  1790.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L0(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
  1791.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L1(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
  1792.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L1(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)
  1793.             dCL100L1(ugroup) = dCL100L1(ugroup) &                                                                        
  1794.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L0(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
  1795.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L0(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
  1796.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L1(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
  1797.                     &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L1(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)
  1798.                                            
  1799.             enddo
  1800.         enddo
  1801.         !!add L111 trapped by C15 01052022
  1802.         !if (mesh_uidx(nsia) .le. mesh_uidx(N_lpc15)) then
  1803.         !do isia = N_SIAs_m+1, N_C15                     
  1804.         !   if ((isia+nsia) .le. N_C15) then
  1805.         !   dCL111t(nsia) = dCL111t(nsia) &
  1806.         !                     & -k_C15_L111t(isia,mesh_uidx(nsia))*C_C15(isia)*CL111t(nsia)  
  1807.         !   endif
  1808.         !enddo
  1809.         !endif
  1810.     enddo
  1811.        
  1812.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1813.     !-----------V1-------------------
  1814.     dCVACs(1) = 0
  1815.     dsinkVACs(1) = +loss_VACs(1) *(CVACs(1)-Ceq_VACs(1))
  1816.     dCVACs(1) = dparate*fcascade_VACs(1) - loss_VACs(1) *(CVACs(1)-Ceq_VACs(1)) &
  1817.                                             & -3* k_VACs_VACs(1,1)*CVACs(1)*CVACs(1)
  1818.     do isia= 1, N_SIAs_m
  1819.         dCVACs(1) = dCVACs(1) -k_SIAs_VACs(isia,1)*CSIAs(isia)*CVACs(1)
  1820.     enddo
  1821.     do nvac= 1, N_VACs
  1822.         if ((nvac-1) .ge. 1 .and. (nvac-1) .le. N_SIAs_m) then
  1823.             dCVACs(1) = dCVACs(1) +k_SIAs_VACs(nvac-1,nvac)*CSIAs(nvac-1)*CVACs(nvac)
  1824.         endif
  1825.     enddo
  1826.     do nvac =1, N_VACs-1
  1827.         dCVACs(1) = dCVACs(1) -k_VACs_VACs(1,nvac)*CVACs(1)*CVACs(nvac)
  1828.     enddo
  1829.    
  1830.     !with ungrouped L111
  1831.     do isia = N_loop_start, N_L111
  1832.         dCVACs(1) = dCVACs(1) - k_VACs_L111(1,isia)*CVACs(1)*CL111(isia)
  1833.         if ((isia+1) .le. N_VACs) then
  1834.             dCVACs(1) = dCVACs(1) + k_VACs_L111(isia+1,isia)*CVACs(isia+1)*CL111(isia)
  1835.         endif
  1836.         dCVACs(1) = dCVACs(1) + g_VAC_L111(isia)*CL111(isia)
  1837.     enddo
  1838.     !with ungrouped L111t
  1839.     do isia = N_loop_start, N_L111t
  1840.         dCVACs(1) = dCVACs(1) -k_VACs_L111t(1,isia)*CVACs(1)*CL111t(isia)
  1841.         if ((isia+1) .le. N_VACs) then
  1842.             dCVACs(1) = dCVACs(1) +k_VACs_L111t(isia+1,isia)*CVACs(isia+1)*CL111t(isia)
  1843.         endif
  1844.         dCVACs(1) = dCVACs(1) +g_VAC_L111t(isia)*CL111t(isia)
  1845.     enddo
  1846.     !with ungrouped L100
  1847.     do isia = N_loop_start, N_L100
  1848.         dCVACs(1) = dCVACs(1) -k_VACs_L100(1,isia)*CVACs(1)*CL100(isia)
  1849.         dCVACs(1) = dCVACs(1) +g_VAC_L100(isia)*CL100(isia)
  1850.     enddo
  1851.    
  1852.     do isia = N_C15_st, N_C15
  1853.         dCVACs(1) = dCVACs(1) -k_VACs_C15(1,isia)*CVACs(1)*C_C15(isia)
  1854.         if ((1+isia) .le. N_VACs_m) then
  1855.            dCVACs(1) = dCVACs(1) +k_VACs_C15(1+isia,isia)*CVACs(1+isia)*C_C15(isia)
  1856.         endif
  1857.     enddo
  1858.  
  1859.     do nvac = 2, N_VACs
  1860.         dCVACs(1) = dCVACs(1) +g_VAC_VACs(nvac)*CVACs(nvac)
  1861.     enddo
  1862.     do isia = N_C15_st, N_C15-1
  1863.         dCVACs(1) = dCVACs(1) +g_VAC_C15(isia)*C_C15(isia)
  1864.     enddo
  1865.     do isia = 2, N_SIAs_m
  1866.         dCVACs(1) = dCVACs(1) +g_VAC_SIAs(isia)*CSIAs(isia)
  1867.     enddo
  1868.     dCVACs(1) = dCVACs(1) + 3*g_VAC_VACs(2)*CVACs(2)
  1869.  
  1870.     !reaction involving grouped
  1871.     !group L111
  1872.  
  1873.     !group L111t
  1874.     do u_idx = 1, Nu_L111t
  1875.         dCVACs(1) = dCVACs(1) -k_VACs_uL111t(1,u_idx)*adft_L0(u_idx)*CVACs(1)*CL111tL0(u_idx) &
  1876.                             &-k_VACs_uL111t(1,u_idx)*adft_L1(u_idx)*CVACs(1)*CL111tL1(u_idx)
  1877.         do nvac = 1, N_VACs
  1878.             if ((nvac-1) .ge. mesh_ust(u_idx) .and. (nvac-1) .le. mesh_ued(u_idx)) then
  1879.                 dCVACs(1) = dCVACs(1) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx)                 &
  1880.                                     & +k_VACs_uL111t(nvac,u_idx)*v1(nvac-1,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
  1881.             endif
  1882.         enddo  
  1883.         dCVACs(1) = dCVACs(1) +g_VAC_uL111t(u_idx)*adft_L0(u_idx)*CL111tL0(u_idx)&
  1884.                             &+g_VAC_uL111t(u_idx)*adft_L1(u_idx)*CL111tL1(u_idx)
  1885.     enddo
  1886.     !group L100
  1887.     do u_idx = 1, Nu_L100
  1888.         dCVACs(1) = dCVACs(1) -k_VACs_uL100(1,u_idx)*adft_L0(u_idx)*CVACs(1)*CL100L0(u_idx) &
  1889.                             &-k_VACs_uL100(1,u_idx)*adft_L1(u_idx)*CVACs(1)*CL100L1(u_idx)
  1890.         dCVACs(1) = dCVACs(1) +g_VAC_uL100(u_idx)*adft_L0(u_idx)*CL100L0(u_idx)&
  1891.                             &+g_VAC_uL100(u_idx)*adft_L1(u_idx)*CL100L1(u_idx)
  1892.     enddo
  1893.  
  1894.  
  1895.  
  1896.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1897.     !-----------mibile Vn-------------------
  1898.     do nvac_m = 2, N_VACs_m
  1899.         dCVACs(nvac_m) = 0
  1900.         dsinkVACs(nvac_m) = +loss_VACs(nvac_m)*(CVACs(nvac_m)-Ceq_VACs(nvac_m))
  1901.         dCVACs(nvac_m) = +dparate*fcascade_VACs(nvac_m)                      &
  1902.                         & -loss_VACs(nvac_m)*(CVACs(nvac_m)-Ceq_VACs(nvac_m))
  1903.         do isia= 1, N_SIAs_m
  1904.             dCVACs(nvac_m) = dCVACs(nvac_m) -k_SIAs_VACs(isia,nvac_m)*CSIAs(isia)*CVACs(nvac_m)
  1905.         enddo
  1906.         do isia= 1, N_SIAs_m
  1907.             dCVACs(nvac_m) = dCVACs(nvac_m) +k_SIAs_VACs(isia,isia+nvac_m)*CSIAs(isia)*CVACs(isia+nvac_m)
  1908.         enddo
  1909.         do nvac =1, N_VACs
  1910.             if ((nvac_m+nvac) .le. N_VACs) then
  1911.                dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_VACs(nvac_m,nvac)*CVACs(nvac_m)*CVACs(nvac)
  1912.             endif
  1913.         enddo
  1914.         do nvac =1, nvac_m/2
  1915.             if ((nvac_m-nvac) .ge. 1) then
  1916.                dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_VACs(nvac,nvac_m-nvac)*CVACs(nvac_m-nvac)*CVACs(nvac)
  1917.             endif
  1918.         enddo
  1919.            
  1920.         !with ungrouped L111
  1921.         do isia = N_loop_start, N_L111
  1922.             dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_L111(nvac_m,isia)*CVACs(nvac_m)*CL111(isia)
  1923.             if ((isia+nvac_m) .le. N_VACs) then
  1924.                dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_L111(isia+nvac_m,isia)*CVACs(isia+nvac_m)*CL111(isia)
  1925.             endif
  1926.         enddo
  1927.         !with ungrouped L111t
  1928.         do isia = N_loop_start, N_L111t
  1929.             dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_L111t(nvac_m,isia)*CVACs(nvac_m)*CL111t(isia)
  1930.             if ((isia+nvac_m) .le. N_VACs) then
  1931.                 dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_L111t(isia+nvac_m,isia)*CVACs(isia+nvac_m)*CL111t(isia)
  1932.             endif
  1933.         enddo
  1934.        
  1935.         !with ungrouped N_L100
  1936.         do isia = N_loop_start, N_L100
  1937.             dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_L100(nvac_m,isia)*CVACs(nvac_m)*CL100(isia)
  1938.         enddo
  1939.        
  1940.      
  1941.  
  1942.  
  1943.         !reaction involving grouped
  1944.         !grouped L111
  1945.  
  1946.         !grouped L111t
  1947.         do u_idx = 1, Nu_L111t
  1948.             dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_uL111t(nvac_m,u_idx)*adft_L0(u_idx)*CVACs(nvac_m)*CL111tL0(u_idx) &
  1949.                                             & -k_VACs_uL111t(nvac_m,u_idx)*adft_L1(u_idx)*CVACs(nvac_m)*CL111tL1(u_idx)
  1950.             do nvac = N_L111t, N_VACs
  1951.                 if (((nvac-nvac_m) .ge. mesh_ust(u_idx)) .and. ((nvac-nvac_m) .le. mesh_ued(u_idx))) then
  1952.                     dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx)              &
  1953.                             & +k_VACs_uL111t(nvac,u_idx)*v1(nvac-nvac_m,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
  1954.                 endif
  1955.             enddo    
  1956.         enddo
  1957.         !group L100
  1958.         do u_idx = 1, Nu_L100
  1959.             dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_uL100(nvac_m,u_idx)*adft_L0(u_idx)*CVACs(nvac_m)*CL100L0(u_idx) &
  1960.                                             & -k_VACs_uL100(nvac_m,u_idx)*adft_L1(u_idx)*CVACs(nvac_m)*CL100L1(u_idx)
  1961.         enddo
  1962.        
  1963.         do isia = N_C15_st, N_C15
  1964.             dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_C15(nvac_m,isia)*CVACs(nvac_m)*C_C15(isia)
  1965.         enddo
  1966.         do isia = N_C15_st, N_C15
  1967.             if ((nvac_m+isia) .le. N_VACs_m) then
  1968.             dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_C15(nvac_m+isia,isia)*CVACs(nvac_m+isia)*C_C15(isia)
  1969.             endif
  1970.         enddo
  1971.  
  1972.         if ((nvac_m+1) .le. N_VACs) then
  1973.         dCVACs(nvac_m) = dCVACs(nvac_m) +g_VAC_VACs(nvac_m+1)*CVACs(nvac_m+1)-g_SIA_VACs(nvac_m)*CVACs(nvac_m)
  1974.         endif
  1975.         if ((nvac_m-1) .ge. 1) then
  1976.         dCVACs(nvac_m) = dCVACs(nvac_m) +g_SIA_VACs(nvac_m-1)*CVACs(nvac_m-1)-g_VAC_VACs(nvac_m)*CVACs(nvac_m)
  1977.         endif
  1978.     enddo
  1979.     dCVACs(2) = dCVACs(2) + k_VACs_VACs(1,1)*CVACs(1)*CVACs(1) -g_VAC_VACs(2)*CVACs(2)
  1980.  
  1981.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  1982.     !-----------immibile Vn-------------------
  1983.     do nvac_im = N_VACs_m+1, N_VACs
  1984.         dCVACs(nvac_im) = 0
  1985.        
  1986.         do isia= 1, N_SIAs_m
  1987.             dCVACs(nvac_im) = dCVACs(nvac_im) -k_SIAs_VACs(isia,nvac_im)*CSIAs(isia)*CVACs(nvac_im)
  1988.         enddo
  1989.         do isia= 1, N_SIAs_m
  1990.             if ((isia+nvac_im) .le. N_VACs) then
  1991.             dCVACs(nvac_im) = dCVACs(nvac_im) +k_SIAs_VACs(isia,isia+nvac_im)*CSIAs(isia)*CVACs(isia+nvac_im)
  1992.             endif
  1993.         enddo
  1994.         do nvac =1, N_VACs_m
  1995.             if ((nvac_im+nvac) .le. N_VACs) then
  1996.             dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_VACs(nvac,nvac_im)*CVACs(nvac_im)*CVACs(nvac)
  1997.             endif
  1998.         enddo
  1999.         do nvac =1, nvac_im/2
  2000.             if ((nvac_im-nvac) .ge. 1 .and. (nvac .le. N_VACs_m)) then
  2001.             dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_VACs(nvac,nvac_im-nvac)*CVACs(nvac_im-nvac)*CVACs(nvac)
  2002.             endif
  2003.         enddo
  2004.        
  2005.         !with ungrouped L111               
  2006.         do isia = N_loop_start, N_L111
  2007.             dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_L111(nvac_im,isia)*CVACs(nvac_im)*CL111(isia)
  2008.             if ((isia+nvac_im) .le. N_VACs) then
  2009.             dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_L111(isia+nvac_im,isia)*CVACs(isia+nvac_im)*CL111(isia)
  2010.             endif
  2011.         enddo
  2012.         !with ungrouped L111t
  2013.         do isia = N_loop_start, N_L111t
  2014.             dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_L111t(nvac_im,isia)*CVACs(nvac_im)*CL111t(isia)
  2015.             if ((isia+nvac_im) .le. N_VACs) then
  2016.             dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_L111t(isia+nvac_im,isia)*CVACs(isia+nvac_im)*CL111t(isia)
  2017.             endif
  2018.         enddo
  2019.    
  2020.         !with grouped L111         
  2021.        
  2022.         !with grouped L111t        
  2023.         do u_idx = 1, Nu_L111t
  2024.             dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_uL111t(nvac_im,u_idx)*adft_L0(u_idx)*CVACs(nvac_im)*CL111tL0(u_idx) &
  2025.                                             & -k_VACs_uL111t(nvac_im,u_idx)*adft_L1(u_idx)*CVACs(nvac_im)*CL111tL1(u_idx)
  2026.             do nvac = N_L111t, N_VACs
  2027.                 if (((nvac-nvac_im) .ge. mesh_ust(u_idx)) .and. ((nvac-nvac_im) .le. mesh_ued(u_idx))) then
  2028.                     dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx)                &
  2029.                             & +k_VACs_uL111t(nvac,u_idx)*v1(nvac-nvac_im,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
  2030.                 endif
  2031.             enddo  
  2032.         enddo
  2033.        
  2034.         if ((nvac_im .le. Nmax_cas) .and. (nvac_im .ge. Nmin_cas)) then
  2035.             dCVACs(nvac_im) = dCVACs(nvac_im)-(1-f_VACtoVAC(nvac_im))*CascadeRate*CVACs(nvac_im)
  2036.                                                      
  2037.         endif
  2038.            
  2039.         if ((nvac_im+1) .le. N_VACs) then
  2040.             dCVACs(nvac_im) = dCVACs(nvac_im) +g_VAC_VACs(nvac_im+1)*CVACs(nvac_im+1)-g_SIA_VACs(nvac_im)*CVACs(nvac_im)
  2041.         endif
  2042.         if ((nvac_im-1) .ge. 1) then
  2043.             dCVACs(nvac_im) = dCVACs(nvac_im) +g_SIA_VACs(nvac_im-1)*CVACs(nvac_im-1)-g_VAC_VACs(nvac_im)*CVACs(nvac_im)
  2044.         endif
  2045.     enddo
  2046.  
  2047.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2048.     !-----------trap------------------
  2049.     dCtrap = 0.
  2050.     !do nsia = N_Loop_start, N_L111
  2051.     !   dCtrap = dCtrap -k_trap_L111(nsia)*Ctrap*CL111(nsia)
  2052.     !enddo
  2053.     do nsia = N_Loop_start, N_L111t
  2054.         dCtrap = dCtrap -k_trap_L111t(nsia)*Ctrap*CL111t(nsia)
  2055.     enddo
  2056.     do ugroup = 1, Nu_L111t
  2057.         dCtrap = dCtrap -k_trap_uL111t(ugroup)*adft_L0(ugroup)*Ctrap*CL111tL0(ugroup) &
  2058.                         &-k_trap_uL111t(ugroup)*adft_L1(ugroup)*Ctrap*CL111tL1(ugroup)
  2059.     enddo
  2060.     do nvac =1, N_VACs_m
  2061.         dCtrap = dCtrap -k_trap_VACs(nvac)*Ctrap*CVACs(nvac)
  2062.     enddo
  2063.    
  2064.     end subroutine f_f77
  2065.  
  2066.  
  2067.  
  2068. !-----------------------------------------------------------------------
  2069. !------------------ Jacobi Matrix --------------------------------------
  2070. !-----------------------------------------------------------------------
  2071.  
  2072.     subroutine jac_column_f77(neq, t, u, j, ia, ja, pd)
  2073.         !~       subroutine jac_column_f77(neq, t, u, j, ia, pd)
  2074.     use coeffi
  2075.     implicit none
  2076.     !f2py   intent(hide) neq, ia, ja
  2077.     !f2py   intent(out) pd
  2078.     integer neq, j, ia, ja
  2079.    
  2080.     double precision t, pd
  2081.     double precision, target :: u
  2082.     dimension u(neq), ia(neq + 1), ja(*), pd(neq)
  2083.     integer isia, isia1, nsia, nsia_m,nvac_m, nvac_im, nvac,nvac_, isia2, isia3, temp1,temp2
  2084.     integer x, Cumu_lgh, check, nmesh, idx_meh, u_idx, jst,jed
  2085.     integer x1,x2,temp,Loop_sia
  2086.     double precision, pointer :: Ctrap
  2087.     double precision, dimension(:), pointer :: CSIAs=>null(), CVACs=>null(), C_C15=>null()
  2088.     double precision, dimension(:), pointer :: CL111=>null(), CL111t=>null(), CL111tL0=>null(), CL111tL1=>null()
  2089.     double precision, dimension(:), pointer :: CL100=>null(), CL100L0=>null(), CL100L1=>null(),CVACsL0=>null(), CVACsL1=>null()
  2090.    
  2091.     integer N_offsinkL111, N_offsinkL111t, N_offsinkL111tL0, N_sink
  2092.     integer N_offSIA, N_offVAC,N_offVACg,N_offVACg2, N_offC15, N_offL111, N_offL111t, N_offL111tL0, N_offL111tL1
  2093.     integer N_offL100, N_offL100L0, bin_length
  2094.     integer st,ed, st1, ed1, ugroup, ugroup2, u_idx1, u_idx2,uidx,uidx2
  2095.     double precision factor
  2096.    
  2097.     N_offsinkL111   = N_SIAs_m +N_VACs_m +N_L111
  2098.     N_offsinkL111t  = N_offsinkL111      +N_L111t
  2099.     N_offsinkL111tL0= N_offsinkL111t     +Nu_L111t
  2100.     N_sink = N_offsinkL111tL0   +Nu_L111t  !sink L111
  2101.    
  2102.     N_offSIA = N_sink +N_SIAs_m
  2103.     N_offVAC = N_offSIA +N_VACs
  2104.    
  2105.     N_offC15 = N_offVAC +N_C15
  2106.    
  2107.     N_offL111   = N_offC15 +N_L111
  2108.    
  2109.     N_offL111t   = N_offL111 +N_L111t
  2110.     N_offL111tL0 = N_offL111t +Nu_L111t
  2111.     N_offL111tL1 = N_offL111tL0 +Nu_L111t
  2112.    
  2113.     N_offL100   = N_offL111tL1 +N_L100
  2114.     N_offL100L0 = N_offL100 +Nu_L100
  2115.     bin_length  = N_offL100L0 +Nu_L100 +1
  2116.    
  2117.     CSIAs(1:N_SIAs_m)    => u(N_sink+1:N_SIAs_m)
  2118.     CVACs(1:N_VACs)      => u(N_offSIA+1:N_VACs)
  2119.  
  2120.     C_C15(1:N_C15)       => u(N_offVAC+1:N_C15)
  2121.     CL111(1:N_L111)      => u(N_offC15+1:N_L111)
  2122.     CL111t(1:N_L111t)    => u(N_offL111+1:N_L111t)
  2123.     CL111tL0(1:Nu_L111t) => u(N_offL111t+1:Nu_L111t)
  2124.     CL111tL1(1:Nu_L111t) => u(N_offL111tL0+1:Nu_L111t)
  2125.     CL100(1:N_L100)      => u(N_offL111tL1+1:N_L100)
  2126.     CL100L0(1:Nu_L100)   => u(N_offL100+1:Nu_L100)
  2127.     CL100L1(1:Nu_L100)   => u(N_offL100L0+1:Nu_L100)
  2128.     Ctrap                => u(bin_length)
  2129.    
  2130.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2131.     !----------SIA1 column-------------------------
  2132.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2133.     if (j == N_sink+1) then
  2134.     !--SIA1--
  2135.        pd(+1) = loss_SIAs(1)
  2136.        
  2137.        pd(N_sink+1) = -loss_SIAs(1)
  2138.        
  2139.        do isia = 1,N_SIAs_m
  2140.           pd(N_sink+1) =pd(N_sink+1) -k_SIAs_SIAs(1,isia)*CSIAs(isia)
  2141.        enddo
  2142.        do nvac = 1,N_VACs
  2143.           pd(N_sink+1) =pd(N_sink+1) -k_SIAs_VACs(1,nvac)*CVACs(nvac)
  2144.        enddo
  2145.    
  2146.    
  2147.    
  2148.        do isia = N_loop_start, N_L111
  2149.            pd(N_sink+1) =pd(N_sink+1) -k_SIAs_L111(1,isia)*CL111(isia)
  2150.        enddo
  2151.    
  2152.        do isia = N_loop_start, N_L111t
  2153.           pd(N_sink+1) =pd(N_sink+1) -k_SIAs_L111t(1,isia)*CL111t(isia)
  2154.        enddo
  2155.    
  2156.        do isia = N_loop_start, N_L100
  2157.           pd(N_sink+1) =pd(N_sink+1) -k_SIAs_L100(1,isia)*CL100(isia)
  2158.        enddo
  2159.    
  2160.        do isia = N_C15_st, N_C15
  2161.           if ((1+isia) .le. N_C15) then
  2162.              pd(N_sink+1) =pd(N_sink+1) -k_SIAs_C15(1,isia)*C_C15(isia)
  2163.           endif
  2164.        enddo
  2165.        pd(N_sink+1) =pd(N_sink+1) -7*k_SIAs_SIAs(1,1)*CSIAs(1)
  2166.    
  2167.        do u_idx =1, Nu_L100
  2168.           pd(N_sink+1) =pd(N_sink+1) -k_SIAs_uL100(1,u_idx)*(adft_L0(u_idx)*CL100L0(u_idx) +adft_L1(u_idx)*CL100L1(u_idx))
  2169.        enddo
  2170.    
  2171.        do u_idx =1, Nu_L111t
  2172.           pd(N_sink+1) =pd(N_sink+1) -k_SIAs_uL111t(1,u_idx)*(adft_L0(u_idx)*CL111tL0(u_idx) +adft_L1(u_idx)*CL111tL1(u_idx))
  2173.        enddo
  2174.    
  2175.        !--mobile SIAs--
  2176.        do nsia_m = 2, N_SIAs_m
  2177.           pd(N_sink+nsia_m) = -k_SIAs_SIAs(1,nsia_m)*CSIAs(nsia_m)+k_SIAs_SIAs(1,nsia_m-1)*CSIAs(nsia_m-1)
  2178.        enddo
  2179.        pd(N_sink+2) = pd(N_sink+2) +3*k_SIAs_SIAs(1,1)*CSIAs(1)
  2180.    
  2181.        !--Vn--
  2182.        do nvac = 1, N_VACs
  2183.           pd(N_sink+N_SIAs_m+nvac) = - k_SIAs_VACs(1,nvac)*CVACs(nvac)
  2184.           if ((nvac+1) .le. N_VACs) then
  2185.              pd(N_sink+N_SIAs_m+nvac) = pd(N_sink+N_SIAs_m+nvac)+ k_SIAs_VACs(1,nvac+1)*CVACs(nvac+1)
  2186.           endif
  2187.        enddo
  2188.    
  2189.        !--Group Vn--  !Modifedbysalu
  2190.  
  2191.    
  2192.        !--C15--
  2193.        do isia = N_C15_st, N_C15
  2194.           if ((isia+1) .le. N_C15) then
  2195.              pd(N_offVAC+isia) = - k_SIAs_C15(1,isia)*C_C15(isia)
  2196.           endif
  2197.           if ((isia-1) .ge. N_C15_st) then
  2198.              pd(N_offVAC+isia)= pd(N_offVAC+isia) + k_SIAs_C15(1,isia-1)*C_C15(isia-1)
  2199.           endif
  2200.        enddo
  2201.    
  2202.        !--L111--
  2203.        do isia = N_loop_start, N_L111
  2204.           pd(N_offC15+isia) = -k_SIAs_L111(1,isia)*CL111(isia)
  2205.           if ((isia-1) .ge. N_loop_start) then
  2206.              pd(N_offC15+isia) =pd(N_offC15+isia) +k_SIAs_L111(1,isia-1)*CL111(isia-1)
  2207.           endif
  2208.        enddo
  2209.    
  2210.        !--L111t--
  2211.        do isia = N_loop_start, N_L111t
  2212.           pd(N_offL111+isia) = -k_SIAs_L111t(1,isia)*CL111t(isia)
  2213.           if ((isia-1) .ge. N_loop_start) then
  2214.              pd(N_offL111+isia) =pd(N_offL111+isia) +k_SIAs_L111t(1,isia-1)*CL111t(isia-1)
  2215.           endif
  2216.        enddo
  2217.    
  2218.        !--L111tL0,L1
  2219.        do u_idx = 1, Nu_L111t
  2220.           pd(N_offL111t+u_idx)   = -k_SIAs_uL111t(1,u_idx)*(abL0_L0(u_idx)*CL111tL0(u_idx)+abL0_L1(u_idx)*CL111tL1(u_idx))
  2221.           pd(N_offL111tL0+u_idx) = -k_SIAs_uL111t(1,u_idx)*(abL1_L0(u_idx)*CL111tL0(u_idx)+abL1_L1(u_idx)*CL111tL1(u_idx))
  2222.    
  2223.           st = mesh_ust(u_idx) -1
  2224.           ed = mesh_ued(u_idx) -1
  2225.           do ugroup2 = 1, u_idx
  2226.              st1 = mesh_ust(ugroup2)
  2227.              ed1 = mesh_ued(ugroup2)
  2228.              if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  2229.                 pd(N_offL111t+u_idx)= pd(N_offL111t+u_idx)   +k_SIAs_uL111t(1,ugroup2)&
  2230.                 & *(akaL0_Idef_L0(u_idx,1,ugroup2)*CL111tL0(ugroup2) +akaL0_Idef_L1(u_idx,1,ugroup2)*CL111tL1(ugroup2))
  2231.                 pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_uL111t(1,ugroup2)&
  2232.                 & *(akaL1_Idef_L0(u_idx,1,ugroup2)*CL111tL0(ugroup2) +akaL1_Idef_L1(u_idx,1,ugroup2)*CL111tL1(ugroup2))
  2233.              endif
  2234.           enddo
  2235.    
  2236.           if (u_idx .eq. 1) then
  2237.               pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_SIAs_L111t(1,N_L111t)*CL111t(N_L111t)*uf0(u_idx)
  2238.               pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_L111t(1,N_L111t)*CL111t(N_L111t) &
  2239.                                                     &*(N_L111t +1 -mesh_x0(u_idx))*uf1(u_idx)
  2240.           endif
  2241.    
  2242.        enddo
  2243.    
  2244.        !--L100--
  2245.        do isia = N_loop_start, N_L100
  2246.           pd(N_offL111tL1+isia) = -k_SIAs_L100(1,isia)*CL100(isia)
  2247.           if ((isia-1) .ge. N_loop_start) then
  2248.              pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_SIAs_L100(1,isia-1)*CL100(isia-1)
  2249.           endif
  2250.        enddo
  2251.    
  2252.        !--L100L0,L1
  2253.        do u_idx = 1, Nu_L100
  2254.           pd(N_offL100+u_idx)   = -k_SIAs_uL100(1,u_idx)*(abL0_L0(u_idx)*CL100L0(u_idx)+abL0_L1(u_idx)*CL100L1(u_idx))
  2255.           pd(N_offL100L0+u_idx) = -k_SIAs_uL100(1,u_idx)*(abL1_L0(u_idx)*CL100L0(u_idx)+abL1_L1(u_idx)*CL100L1(u_idx))
  2256.    
  2257.           st = mesh_ust(u_idx) -1
  2258.           ed = mesh_ued(u_idx) -1
  2259.           do ugroup2 = 1, u_idx
  2260.              st1 = mesh_ust(ugroup2)
  2261.              ed1 = mesh_ued(ugroup2)
  2262.              if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  2263.                 pd(N_offL100+u_idx)   =pd(N_offL100+u_idx)   +k_SIAs_uL100(1,ugroup2)&
  2264.                  & *(akaL0_Idef_L0(u_idx,1,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,1,ugroup2)*CL100L1(ugroup2))
  2265.                 pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_SIAs_uL100(1,ugroup2)&
  2266.                  & *(akaL1_Idef_L0(u_idx,1,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,1,ugroup2)*CL100L1(ugroup2))
  2267.                
  2268.              endif
  2269.           enddo
  2270.    
  2271.           if (u_idx .eq. 1) then
  2272.               pd(N_offL100+u_idx)   =pd(N_offL100+u_idx)  +k_SIAs_L100(1,N_L100)*CL100(N_L100)*uf0(u_idx)
  2273.               pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx)+k_SIAs_L100(1,N_L100)*CL100(N_L100) &
  2274.                                                 &*(N_L100 +1 -mesh_x0(u_idx))*uf1(u_idx)
  2275.           endif
  2276.        enddo
  2277.    
  2278.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2279.     !----------mobile SIA block--------------------
  2280.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2281.     elseif (j > N_sink+1 .and. j <= N_sink+N_SIAs_m) then
  2282.    
  2283.            nsia_m = j - (N_sink)
  2284.            pd(nsia_m) = loss_SIAs(nsia_m)
  2285.            pd(N_sink+nsia_m) = -loss_SIAs(nsia_m)
  2286.            !--SIAs--
  2287.            do isia = 1,N_SIAs_m
  2288.               pd(N_sink+isia) =pd(N_sink+isia)-k_SIAs_SIAs(nsia_m,isia)*CSIAs(isia)
  2289.               if ((nsia_m-isia) .ge.1 .and. (nsia_m-isia) .le. N_VACs) then
  2290.                   pd(N_sink+isia) =pd(N_sink+isia)+k_SIAs_VACs(nsia_m,nsia_m-isia)*CVACs(nsia_m-isia)
  2291.               endif
  2292.               if ((isia-nsia_m) .ge. 1) then
  2293.                  pd(N_sink+isia) =pd(N_sink+isia)+k_SIAs_SIAs(nsia_m,isia-nsia_m)*CSIAs(isia-nsia_m)
  2294.               if (nsia_m==(isia-nsia_m)) then
  2295.                 pd(N_sink+isia) =pd(N_sink+isia)+k_SIAs_SIAs(nsia_m,isia-nsia_m)*CSIAs(isia-nsia_m)
  2296.               endif
  2297.               endif
  2298.               if (isia==1) then
  2299.                   pd(N_sink+isia) =pd(N_sink+isia) + g_SIA_SIAs(nsia_m)
  2300.               endif
  2301.               if ((nsia_m+1) == isia .and. nsia_m .gt. 1) then
  2302.                  pd(N_sink+isia) =pd(N_sink+isia) + g_VAC_SIAs(nsia_m)
  2303.               endif
  2304.               !write(*,*) size(pd)
  2305.            enddo
  2306.    
  2307.            do isia = 2,N_SIAs_m
  2308.               if (isia==nsia_m) then
  2309.                   pd(N_sink+isia) =pd(N_sink+isia) -g_SIA_SIAs(isia) -g_VAC_SIAs(isia)
  2310.                   do nsia = 1,N_SIAs_m
  2311.                      pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_SIAs(nsia,isia)*CSIAs(nsia)
  2312.                   enddo
  2313.                   do nvac = 1, N_VACs
  2314.                      pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_VACs(isia,nvac)*CVACs(nvac)
  2315.                   enddo
  2316.                   do nsia = N_C15_st, N_C15
  2317.                      if ((isia+nsia) .le. N_C15) then
  2318.                         pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_C15(isia,nsia)*C_C15(nsia)
  2319.                      endif
  2320.                   enddo
  2321.    
  2322.                   do temp1 = N_loop_start, N_L111
  2323.                      pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_L111(isia,temp1)*CL111(temp1)
  2324.                   enddo
  2325.                   do temp1 = N_loop_start, N_L111t
  2326.                      pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_L111t(isia,temp1)*CL111t(temp1)
  2327.                   enddo
  2328.                   do temp1 = N_loop_start, N_L100
  2329.                      pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_L100(isia,temp1)*CL100(temp1)
  2330.                   enddo
  2331.    
  2332.    
  2333.                   do u_idx =1, Nu_L100
  2334.                      pd(N_sink+isia) =pd(N_sink+isia) &
  2335.                                         &-k_SIAs_uL100(isia,u_idx)*(adft_L0(u_idx)*CL100L0(u_idx) +adft_L1(u_idx)*CL100L1(u_idx))
  2336.                   enddo
  2337.                   do u_idx =1, Nu_L111t
  2338.                      pd(N_sink+isia) =pd(N_sink+isia) &
  2339.                                       &-k_SIAs_uL111t(isia,u_idx)*(adft_L0(u_idx)*CL111tL0(u_idx) +adft_L1(u_idx)*CL111tL1(u_idx))
  2340.                   enddo
  2341.              
  2342.               endif
  2343.            enddo
  2344.    
  2345.            if (nsia_m==2) then
  2346.               pd(N_sink+1) =pd(N_sink+1) + 3*g_SIA_SIAs(nsia_m)
  2347.               pd(N_sink+2) =pd(N_sink+2) - g_SIA_SIAs(nsia_m)
  2348.            endif
  2349.    
  2350.    
  2351.    
  2352.    
  2353.     !--VACs--
  2354.            do nvac = 1,N_VACs
  2355.               pd(N_offSIA+nvac) = -k_SIAs_VACs(nsia_m,nvac)*CVACs(nvac)
  2356.               if ((nvac+nsia_m) .le. N_VACs) then
  2357.                  pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_SIAs_VACs(nsia_m,nvac+nsia_m)*CVACs(nvac+nsia_m)
  2358.               endif
  2359.               if (nvac == 1) then
  2360.                   pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +g_VAC_SIAs(nsia_m)
  2361.               endif
  2362.            enddo
  2363.    
  2364.    
  2365.    
  2366.    
  2367.        
  2368.            
  2369.    
  2370.     !--C15--
  2371.            do isia = N_C15_st, N_C15
  2372.               if ((nsia_m+isia) .le. N_C15) then
  2373.                  pd(N_offVAC+isia) = -k_SIAs_C15(nsia_m,isia)*C_C15(isia)
  2374.               endif
  2375.               if ((isia-nsia_m) .ge. N_C15_st) then
  2376.                  pd(N_offVAC+isia) = pd(N_offVAC+isia)+k_SIAs_C15(nsia_m,isia-nsia_m)*C_C15(isia-nsia_m)
  2377.               endif
  2378.            enddo
  2379.    
  2380.     !--L111--
  2381.            do isia = N_loop_start, N_L111
  2382.               pd(N_offC15+isia) = -k_SIAs_L111(nsia_m,isia)*CL111(isia)
  2383.               if ((isia-nsia_m) .ge. N_loop_start) then
  2384.                  pd(N_offC15+isia) = pd(N_offC15+isia)+k_SIAs_L111(nsia_m,isia-nsia_m)*CL111(isia-nsia_m)
  2385.               endif
  2386.            enddo
  2387.    
  2388.     !--L111t--
  2389.            do isia = N_loop_start, N_L111t
  2390.               pd(N_offL111+isia) = -k_SIAs_L111t(nsia_m,isia)*CL111t(isia)
  2391.               if ((isia-nsia_m) .ge. N_loop_start) then
  2392.                   pd(N_offL111+isia) = pd(N_offL111+isia)+k_SIAs_L111t(nsia_m,isia-nsia_m)*CL111t(isia-nsia_m)
  2393.               endif
  2394.            enddo
  2395.    
  2396.     !--L111tL0,L1
  2397.            do u_idx = 1, Nu_L111t
  2398.               pd(N_offL111t+u_idx)  =-k_SIAs_uL111t(nsia_m,u_idx)*(abL0_L0(u_idx)*CL111tL0(u_idx)+abL0_L1(u_idx)*CL111tL1(u_idx))
  2399.               pd(N_offL111tL0+u_idx)=-k_SIAs_uL111t(nsia_m,u_idx)*(abL1_L0(u_idx)*CL111tL0(u_idx)+abL1_L1(u_idx)*CL111tL1(u_idx))
  2400.    
  2401.               st = mesh_ust(u_idx) -nsia_m
  2402.               ed = mesh_ued(u_idx) -nsia_m
  2403.               do ugroup2 = 1, u_idx
  2404.                  st1 = mesh_ust(ugroup2)
  2405.                  ed1 = mesh_ued(ugroup2)
  2406.                  if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  2407.                     pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_SIAs_uL111t(nsia_m,ugroup2)&
  2408.                     & *(akaL0_Idef_L0(u_idx,nsia_m,ugroup2)*CL111tL0(ugroup2) &
  2409.                     &+akaL0_Idef_L1(u_idx,nsia_m,ugroup2)*CL111tL1(ugroup2))
  2410.                     pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_uL111t(nsia_m,ugroup2)&
  2411.                     & *(akaL1_Idef_L0(u_idx,nsia_m,ugroup2)*CL111tL0(ugroup2) &
  2412.                     &+akaL1_Idef_L1(u_idx,nsia_m,ugroup2)*CL111tL1(ugroup2))
  2413.                  endif
  2414.               enddo
  2415.    
  2416.               do isia = N_loop_start, N_L111t
  2417.                  if ((isia + nsia_m) .ge. mesh_ust(u_idx) .and. (isia + nsia_m) .le. mesh_ued(u_idx)) then
  2418.                     pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx) +k_SIAs_L111t(nsia_m,isia)*CL111t(isia)*uf0(u_idx)
  2419.                     pd(N_offL111tL0+u_idx) = pd(N_offL111tL0+u_idx) &
  2420.                     &+k_SIAs_L111t(nsia_m,isia)*CL111t(isia)*(isia +nsia_m -mesh_x0(u_idx))*uf1(u_idx)
  2421.                  endif
  2422.               enddo
  2423.            enddo
  2424.    
  2425.     !--L100--
  2426.            do isia = N_loop_start, N_L100
  2427.               pd(N_offL111tL1+isia) = -k_SIAs_L100(nsia_m,isia)*CL100(isia)
  2428.               if ((isia-nsia_m) .ge. N_loop_start) then
  2429.                  pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_SIAs_L100(nsia_m,isia-nsia_m)*CL100(isia-nsia_m)
  2430.               endif
  2431.            enddo
  2432.    
  2433.     !--L100L0,L1
  2434.            do u_idx = 1, Nu_L100
  2435.               pd(N_offL100+u_idx)   = -k_SIAs_uL100(nsia_m,u_idx)*(abL0_L0(u_idx)*CL100L0(u_idx)+abL0_L1(u_idx)*CL100L1(u_idx))
  2436.               pd(N_offL100L0+u_idx) = -k_SIAs_uL100(nsia_m,u_idx)*(abL1_L0(u_idx)*CL100L0(u_idx)+abL1_L1(u_idx)*CL100L1(u_idx))
  2437.    
  2438.               st = mesh_ust(u_idx) -nsia_m
  2439.               ed = mesh_ued(u_idx) -nsia_m
  2440.               do ugroup2 = 1, u_idx
  2441.                  st1 = mesh_ust(ugroup2)
  2442.                  ed1 = mesh_ued(ugroup2)
  2443.                  if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  2444.                     pd(N_offL100+u_idx)   =pd(N_offL100+u_idx)   +k_SIAs_uL100(nsia_m,ugroup2)&
  2445.                      & *(akaL0_Idef_L0(u_idx,nsia_m,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,nsia_m,ugroup2)*CL100L1(ugroup2))
  2446.                     pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_SIAs_uL100(nsia_m,ugroup2)&
  2447.                      & *(akaL1_Idef_L0(u_idx,nsia_m,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,nsia_m,ugroup2)*CL100L1(ugroup2))
  2448.                      
  2449.                  endif
  2450.               enddo
  2451.    
  2452.               do isia = N_loop_start, N_L100
  2453.                  if ((isia + nsia_m) .ge. mesh_ust(u_idx) .and. (isia + nsia_m) .le. mesh_ued(u_idx)) then
  2454.                     pd(N_offL100+u_idx)   =pd(N_offL100+u_idx) +k_SIAs_L100(nsia_m,isia)*CL100(isia)*uf0(u_idx)
  2455.                     pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) &
  2456.                     &+k_SIAs_L100(nsia_m,isia)*CL100(isia)*(isia +nsia_m -mesh_x0(u_idx))*uf1(u_idx)
  2457.                  endif
  2458.               enddo
  2459.    
  2460.            enddo
  2461.    
  2462.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2463.     !----------mobile VAC block--------------------
  2464.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2465.     elseif (j > N_sink+N_SIAs_m .and. j <= N_sink+N_SIAs_m+N_VACs_m) then
  2466.           nvac_m = j - (N_sink+N_SIAs_m)
  2467.           pd(N_SIAs_m+nvac_m) = loss_VACs(nvac_m)
  2468.        
  2469.     !--SIAs--
  2470.           do isia = 1,N_SIAs_m
  2471.              pd(N_sink+isia) = pd(N_sink+isia) -k_SIAs_VACs(isia,nvac_m)*CSIAs(isia)
  2472.              if ((isia+nvac_m) .le. N_SIAs_m) then
  2473.                 pd(N_sink+isia) = pd(N_sink+isia)+k_SIAs_VACs(isia+nvac_m,nvac_m)*CSIAs(isia+nvac_m)
  2474.              endif
  2475.              if ((isia+nvac_m) .le. N_C15 .and. (isia+nvac_m) .ge. N_C15_st) then
  2476.                 pd(N_sink+isia) = pd(N_sink+isia)+k_VACs_C15(nvac_m,isia+nvac_m)*C_C15(isia+nvac_m)
  2477.              endif
  2478.     !notice
  2479.              Loop_sia = isia+nvac_m
  2480.              if ((Loop_sia .le. N_L111) .and. (Loop_sia .ge. N_loop_start)) then
  2481.                 if (Loop_sia .eq. Loop_sia) then
  2482.                    pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L111(nvac_m,(Loop_sia))*CL111(Loop_sia)
  2483.                 endif
  2484.              endif
  2485.    
  2486.              Loop_sia = isia+nvac_m
  2487.              if ((Loop_sia .le. N_L111t) .and. (Loop_sia .ge. N_loop_start)) then
  2488.                 if (Loop_sia .eq.Loop_sia) then
  2489.                    pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L111t(nvac_m,(Loop_sia))*CL111t(Loop_sia)
  2490.                 endif
  2491.              endif
  2492.    
  2493.              Loop_sia = isia+nvac_m
  2494.              if ((Loop_sia .le. N_L100) .and. (Loop_sia .ge. N_loop_start)) then
  2495.                 if (Loop_sia .eq. Loop_sia) then
  2496.                    pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L100(nvac_m,(Loop_sia))*CL100(Loop_sia)
  2497.                 endif
  2498.              endif
  2499.              if (isia == 1) then
  2500.                 if (nvac_m .gt. 1) then
  2501.                    pd(N_sink+isia) =pd(N_sink+isia) +g_SIA_VACs(nvac_m)
  2502.                 endif
  2503.              endif
  2504.    
  2505.     !SIA1-3 cannot form from V1-4 +ugroup, thus not write here
  2506.           enddo
  2507.    
  2508.     !-- VACs--
  2509.           do nvac = 1,N_VACs
  2510.              if ((nvac_m+nvac) .le. N_VACs) then
  2511.                 pd(N_offSIA+nvac) = -k_VACs_VACs(nvac_m,nvac)*CVACs(nvac)
  2512.              endif
  2513.    
  2514.              if ((nvac-nvac_m) .ge. 1) then
  2515.                 pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_VACs_VACs(nvac_m,nvac-nvac_m)*CVACs(nvac-nvac_m)
  2516.                 if (nvac_m == (nvac-nvac_m)) then ! V2+V2, rate X2
  2517.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_VACs_VACs(nvac_m,nvac-nvac_m)*CVACs(nvac-nvac_m)
  2518.                 endif
  2519.              endif
  2520.    
  2521.              if ((nvac_m-nvac) .ge. 1 .and. (nvac_m-nvac) .le. N_SIAs_m) then
  2522.                 pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_SIAs_VACs(nvac_m-nvac,nvac_m)*CSIAs(nvac_m-nvac)
  2523.              endif
  2524.              if (nvac  == (nvac_m-1)) then
  2525.                 pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +g_VAC_VACs(nvac_m)
  2526.              endif
  2527.              if (nvac  == (nvac_m+1)) then
  2528.                 pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +g_SIA_VACs(nvac_m)
  2529.              endif
  2530.    
  2531.              if ((nvac_m-nvac) .ge. N_C15_st) then
  2532.                 pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +k_VACs_C15(nvac_m,nvac_m-nvac)*C_C15(nvac_m-nvac)
  2533.              endif
  2534.    
  2535.              if (nvac == nvac_m) then
  2536.                 pd(N_offSIA+nvac) =pd(N_offSIA+nvac) -loss_VACs(nvac_m)
  2537.                 do isia =1, N_SIAs_m
  2538.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_SIAs_VACs(isia, nvac_m)*CSIAs(isia)
  2539.                 enddo
  2540.                 do nvac_ =1, N_VACs
  2541.                    if ((nvac_ + nvac_m) .le. N_VACs) then
  2542.                       pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_VACs(nvac_m,nvac_)*CVACs(nvac_)
  2543.                    endif
  2544.                 enddo
  2545.                 do isia= N_C15_st, N_C15
  2546.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_C15(nvac_m,isia)*C_C15(isia)
  2547.                 enddo
  2548.    
  2549.                 do temp1 = N_loop_start, N_L111
  2550.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_L111(nvac_m,temp1)*CL111(temp1)
  2551.                 enddo
  2552.    
  2553.                 do temp1 = N_loop_start, N_L111t
  2554.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_L111t(nvac_m,temp1)*CL111t(temp1)
  2555.                 enddo
  2556.        
  2557.                 do temp1 = N_loop_start, N_L100
  2558.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_L100(nvac_m,temp1)*CL100(temp1)
  2559.                 enddo
  2560.        
  2561.                 if (nvac .gt.1) then
  2562.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-g_SIA_VACs(nvac_m)-g_VAC_VACs(nvac_m)
  2563.                 endif
  2564.        
  2565.            
  2566.    
  2567.                do u_idx =1, Nu_L100
  2568.                   pd(N_offSIA+nvac) =pd(N_offSIA+nvac) &
  2569.                     &-k_VACs_uL100(nvac,u_idx)*(adft_L0(u_idx)*CL100L0(u_idx) +adft_L1(u_idx)*CL100L1(u_idx))
  2570.                enddo
  2571.                do u_idx =1, Nu_L111t
  2572.                   pd(N_offSIA+nvac) =pd(N_offSIA+nvac) &
  2573.                     &-k_VACs_uL111t(nvac,u_idx)*(adft_L0(u_idx)*CL111tL0(u_idx) +adft_L1(u_idx)*CL111tL1(u_idx))
  2574.                enddo
  2575.    
  2576.              endif
  2577.    
  2578.        
  2579.    
  2580.    
  2581.              if (nvac == 1) then
  2582.        
  2583.    
  2584.                 if (nvac_m .gt. 1) then
  2585.                    pd(N_offSIA+1) =pd(N_offSIA+1) +g_VAC_VACs(nvac_m)
  2586.                 endif
  2587.                 if (nvac_m == 1) then
  2588.                    pd(N_offSIA+1) =pd(N_offSIA+1) -6*k_VACs_VACs(1,1)*CVACs(1)
  2589.                 endif
  2590.                 if (nvac_m == 2) then
  2591.                    pd(N_offSIA+1) =pd(N_offSIA+1) +2*g_VAC_VACs(nvac_m)
  2592.                 endif
  2593.              endif
  2594.    
  2595.              if (nvac == 2) then
  2596.                 if (nvac_m == 1) then
  2597.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +2*k_VACs_VACs(1,1)*CVACs(1)
  2598.                 endif
  2599.                 if (nvac_m == 2) then
  2600.                    pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-g_VAC_VACs(nvac_m)
  2601.                 endif
  2602.              endif
  2603.           enddo
  2604.    
  2605.    
  2606.  
  2607.          
  2608.           !pd(N_offVAC+1) =pd(N_offVAC+1) +g_SIA_VACs(N_VACs)*CVACs(N_VACs)*uf0(u_idx)
  2609.           !pd(N_offVACg+1) = pd(N_offVACg+1)+g_SIA_VACs(N_VACs)*CVACs(N_VACs)*(N_VACs+1-mesh_x0(u_idx))*uf1(u_idx)
  2610.    
  2611.    
  2612.    
  2613.     !--C15--
  2614.           do isia = N_C15_st, N_C15
  2615.              pd(N_offVAC+isia) = -k_VACs_C15(nvac_m,isia)*C_C15(isia)
  2616.              if ((isia+nvac_m) .le. N_C15) then
  2617.                 pd(N_offVAC+isia) = pd(N_offVAC+isia) &
  2618.                                     & +k_VACs_C15(nvac_m,isia+nvac_m)*C_C15(isia+nvac_m)
  2619.              endif
  2620.           enddo
  2621.    
  2622.     !--L111--
  2623.     !do isia = N_loop_start, N_L111
  2624.           do isia = N_loop_start, N_L111
  2625.              pd(N_offC15+isia) = -k_VACs_L111(nvac_m,(isia))*CL111(isia)
  2626.              loop_sia = isia+nvac_m
  2627.              if (loop_sia .le. N_L111) then
  2628.                 pd(N_offC15+isia) = pd(N_offC15+isia)+k_VACs_L111(nvac_m,(loop_sia))*CL111(loop_sia)
  2629.              endif
  2630.           enddo
  2631.    
  2632.     !--L111t--
  2633.           do isia = N_loop_start, N_L111t
  2634.              pd(N_offL111+isia) = -k_VACs_L111t(nvac_m,(isia))*CL111t(isia)
  2635.              loop_sia = isia+nvac_m
  2636.              if (loop_sia .le. N_L111t) then
  2637.                 pd(N_offL111+isia) = pd(N_offL111+isia)+k_VACs_L111t(nvac_m,(loop_sia))*CL111t(loop_sia)
  2638.              endif
  2639.            
  2640.              do ugroup = 1, Nu_L111t
  2641.                 if (((nvac_m+isia).ge. mesh_ust(ugroup)) .and. ((nvac_m+isia) .le. mesh_ued(ugroup))) then
  2642.                    pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(nvac_m,ugroup)*CL111tL0(ugroup) &
  2643.                                             & +k_VACs_uL111t(nvac_m,ugroup)*v1(isia +nvac_m,ugroup)*CL111tL1(ugroup)
  2644.                 endif
  2645.              enddo
  2646.    
  2647.           enddo
  2648.    
  2649.     !--L111tL0,L1
  2650.           do u_idx = 1, Nu_L111t
  2651.              pd(N_offL111t+u_idx)  =-k_VACs_uL111t(nvac_m,u_idx)*(abL0_L0(u_idx)*CL111tL0(u_idx)+abL0_L1(u_idx)*CL111tL1(u_idx))
  2652.              pd(N_offL111tL0+u_idx)=-k_VACs_uL111t(nvac_m,u_idx)*(abL1_L0(u_idx)*CL111tL0(u_idx)+abL1_L1(u_idx)*CL111tL1(u_idx))
  2653.    
  2654.              st = mesh_ust(u_idx) +nvac_m
  2655.              ed = mesh_ued(u_idx) +nvac_m
  2656.              do ugroup2 = u_idx, Nu_L111t
  2657.                 st1 = mesh_ust(ugroup2)
  2658.                 ed1 = mesh_ued(ugroup2)
  2659.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  2660.                    pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_VACs_uL111t(nvac_m,ugroup2)&
  2661.                    & *(akaL0_Vdef_L0(u_idx,nvac_m,ugroup2)*CL111tL0(ugroup2) +akaL0_Vdef_L1(u_idx,nvac_m,ugroup2)*CL111tL1(ugroup2))
  2662.                    pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_VACs_uL111t(nvac_m,ugroup2)&
  2663.                    & *(akaL1_Vdef_L0(u_idx,nvac_m,ugroup2)*CL111tL0(ugroup2) +akaL1_Vdef_L1(u_idx,nvac_m,ugroup2)*CL111tL1(ugroup2))
  2664.                 endif
  2665.              enddo
  2666.           enddo
  2667.    
  2668.     !--L100--
  2669.           do isia = N_loop_start, N_L100
  2670.              pd(N_offL111tL1+isia) = -k_VACs_L100(nvac_m,(isia))*CL100(isia)
  2671.              if ((isia+nvac_m) .le. N_L100) then
  2672.                 pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia)+k_VACs_L100(nvac_m,(isia+nvac_m))*CL100(isia+nvac_m)
  2673.              endif
  2674.    
  2675.              do ugroup = 1, Nu_L100
  2676.                 if (((nvac_m+isia).ge. mesh_ust(ugroup)) .and. ((nvac_m+isia) .le. mesh_ued(ugroup))) then
  2677.                    pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_VACs_uL100(nvac_m,ugroup)*CL100L0(ugroup) &
  2678.                                 +k_VACs_uL100(nvac_m,ugroup)*v1(isia+nvac_m,ugroup)*CL100L1(ugroup)
  2679.                 endif
  2680.              enddo
  2681.           enddo
  2682.    
  2683.     !--L100L0,L1
  2684.           do u_idx = 1, Nu_L100
  2685.              pd(N_offL100+u_idx)   = -k_VACs_uL100(nvac_m,u_idx)*(abL0_L0(u_idx)*CL100L0(u_idx)+abL0_L1(u_idx)*CL100L1(u_idx))
  2686.              pd(N_offL100L0+u_idx) = -k_VACs_uL100(nvac_m,u_idx)*(abL1_L0(u_idx)*CL100L0(u_idx)+abL1_L1(u_idx)*CL100L1(u_idx))
  2687.    
  2688.              st = mesh_ust(u_idx) +nvac_m
  2689.              ed = mesh_ued(u_idx) +nvac_m
  2690.              do ugroup2 = u_idx, Nu_L100
  2691.                 st1 = mesh_ust(ugroup2)
  2692.                 ed1 = mesh_ued(ugroup2)
  2693.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  2694.                    pd(N_offL100+u_idx)   =pd(N_offL100+u_idx)   +k_VACs_uL100(nvac_m,ugroup2)&
  2695.                      &*(akaL0_Vdef_L0(u_idx,nvac_m,ugroup2)*CL100L0(ugroup2) +akaL0_Vdef_L1(u_idx,nvac_m,ugroup2)*CL100L1(ugroup2))
  2696.                    pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_VACs_uL100(nvac_m,ugroup2)&
  2697.                      &*(akaL1_Vdef_L0(u_idx,nvac_m,ugroup2)*CL100L0(ugroup2) +akaL1_Vdef_L1(u_idx,nvac_m,ugroup2)*CL100L1(ugroup2))
  2698.                 endif
  2699.              enddo
  2700.           enddo
  2701.     !trap
  2702.           pd(bin_length) = -k_trap_VACs(nvac_m)*Ctrap
  2703.    
  2704.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2705.     !----------immobile VAC block-------------------
  2706.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2707.     elseif (j > N_sink+N_SIAs_m+N_VACs_m .and. j <= N_sink+N_SIAs_m+N_VACs) then
  2708.            nvac_im = j - (N_sink+N_SIAs_m)
  2709.    
  2710.     !--SIAs--
  2711.            do isia = 1,N_SIAs_m
  2712.               pd(N_sink+isia) = -k_SIAs_VACs(isia,nvac_im)*CSIAs(isia)
  2713.               if ((isia+nvac_im) .le. N_SIAs_m) then
  2714.                  pd(N_sink+isia) = pd(N_sink+isia)+ k_SIAs_VACs(isia+nvac_im,nvac_im)*CSIAs(isia+nvac_im)
  2715.               endif
  2716.    
  2717.              loop_sia = isia+nvac_im
  2718.              if ((loop_sia .ge. N_loop_start) .and. (loop_sia .le. N_L111)) then
  2719.                 pd(N_sink+isia) = pd(N_sink+isia)+k_VACs_L111(nvac_im,loop_sia)*CL111(loop_sia)
  2720.                 pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L111t(nvac_im,loop_sia)*CL111t(loop_sia)
  2721.              endif
  2722.    
  2723.             do u_idx =1, Nu_L111t
  2724.                if ((isia+nvac_im) .ge. mesh_ust(u_idx) .and. (isia+nvac_im) .le. mesh_ued(u_idx)) then
  2725.                    pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_uL111t(nvac_im,u_idx)*CL111tL0(u_idx) &
  2726.                                         & +k_VACs_uL111t(nvac_im,u_idx)*v1(nvac_im+isia,u_idx)*CL111tL1(u_idx)
  2727.                endif
  2728.             enddo
  2729.    
  2730.             if (isia == 1) then
  2731.                pd(N_sink+isia) = pd(N_sink+isia) +g_SIA_VACs(nvac_im)
  2732.             endif
  2733.            enddo
  2734.    
  2735.     !--VACs--
  2736.            do nvac = 1,N_VACs
  2737.               if ((nvac .le. N_VACs_m) .and. (nvac+nvac_im) .le. N_VACs) then
  2738.                  pd(N_offSIA+nvac) = -k_VACs_VACs(nvac,nvac_im)*CVACs(nvac)
  2739.               endif
  2740.               if ((nvac-nvac_im) .le. N_VACs_m .and. (nvac-nvac_im) .ge. 1) then
  2741.                   pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_VACs(nvac-nvac_im,nvac_im)*CVACs(nvac-nvac_im)
  2742.               endif
  2743.               if ((nvac_im-nvac) .le. N_SIAs_m .and. (nvac_im-nvac) .ge. 1) then
  2744.                   pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+k_SIAs_VACs(nvac_im-nvac,nvac_im)*CSIAs(nvac_im-nvac)
  2745.               endif
  2746.    
  2747.               Loop_sia = nvac_im-nvac
  2748.               if ((Loop_sia .ge. N_loop_start) .and. (Loop_sia .le. N_L111)) then
  2749.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+k_VACs_L111(nvac_im,(Loop_sia))*CL111(Loop_sia)
  2750.               endif
  2751.               if ((Loop_sia .ge. N_loop_start) .and. (Loop_sia .le. N_L111t)) then
  2752.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+k_VACs_L111t(nvac_im,(Loop_sia))*CL111t(Loop_sia)
  2753.               endif
  2754.               do ugroup = 1, Nu_L111t
  2755.                  if (Loop_sia .ge. mesh_ust(ugroup) .and. Loop_sia .le. mesh_ued(ugroup)) then
  2756.                     pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL111t(nvac_im,ugroup)*CL111tL0(ugroup) &
  2757.                                         & +k_VACs_uL111t(nvac_im,ugroup)*v1(Loop_sia, ugroup)*CL111tL1(ugroup)
  2758.                  endif
  2759.               enddo
  2760.    
  2761.               if ((nvac_im-1) == nvac) then
  2762.                   pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_VAC_VACs(nvac_im)
  2763.               endif
  2764.               if ((nvac_im+1) == nvac) then
  2765.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_SIA_VACs(nvac_im)
  2766.               endif
  2767.    
  2768.    
  2769.               if (nvac==nvac_im) then
  2770.                   pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -g_VAC_VACs(nvac_im)
  2771.                   if (nvac_im .le. (N_VACs-1)) then
  2772.                      pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -g_SIA_VACs(nvac_im)
  2773.                   endif
  2774.                   do isia=1, N_SIAs_m
  2775.                      pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_SIAs_VACs(isia,nvac_im)*CSIAs(isia)
  2776.                   enddo
  2777.                   do nvac_=1, N_VACs_m
  2778.                      if ((nvac_+nvac_im) .le. N_VACs) then
  2779.                         pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_VACs(nvac_,nvac_im)*CVACs(nvac_)
  2780.                      endif
  2781.                   enddo
  2782.                   if ((nvac_im .le. Nmax_cas) .and. (nvac_im .ge. Nmin_cas)) then
  2783.                      pd(N_offSIA+nvac) =  pd(N_offSIA+nvac)-(1-f_VACtoVAC(nvac_im))*CascadeRate
  2784.                                                              
  2785.                   endif
  2786.    
  2787.    
  2788.                   do temp1 = N_loop_start, N_L111
  2789.                      pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_L111(nvac_im,temp1)*CL111(temp1)
  2790.                   enddo
  2791.        
  2792.                   do temp1 = N_loop_start, N_L111t
  2793.                      pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_L111t(nvac_im,temp1)*CL111t(temp1)
  2794.                   enddo
  2795.        
  2796.                  !VAC loss due to reaction with group
  2797.                   do u_idx = 1, Nu_L111t
  2798.                      pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_uL111t(nvac,u_idx)*(adft_L0(u_idx)*CL111tL0(u_idx) &
  2799.                                                                         & +adft_L1(u_idx)*CL111tL1(u_idx))
  2800.                   enddo
  2801.               endif
  2802.    
  2803.               if (nvac ==1) then
  2804.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_VAC_VACs(nvac_im)
  2805.               endif
  2806.            enddo
  2807.    
  2808.            
  2809.        
  2810.    
  2811.     !--L111--
  2812.            do isia = N_loop_start, N_L111
  2813.               pd(N_offC15+isia) = -k_VACs_L111(nvac_im,isia)*CL111(isia)
  2814.               loop_sia = isia+nvac_im
  2815.               if (loop_sia .le. N_L111) then
  2816.                  pd(N_offC15+isia) = pd(N_offC15+isia) +k_VACs_L111(nvac_im,loop_sia)*CL111(loop_sia)
  2817.               endif
  2818.            enddo
  2819.    
  2820.     !--L111t
  2821.            do isia = N_loop_start, N_L111t
  2822.               pd(N_offL111+isia) = -k_VACs_L111t(nvac_im,isia)*CL111t(isia)
  2823.               loop_sia = isia+nvac_im
  2824.               if (loop_sia .le. N_L111t) then
  2825.                  pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_L111t(nvac_im,loop_sia)*CL111t(loop_sia)
  2826.               endif
  2827.    
  2828.               do ugroup = 1, Nu_L111t
  2829.                  if (((nvac_im+isia).ge. mesh_ust(ugroup)) .and. ((nvac_im+isia) .le. mesh_ued(ugroup))) then
  2830.                     pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(nvac_im,ugroup)*CL111tL0(ugroup) &
  2831.                                             +k_VACs_uL111t(nvac_im,ugroup)*v1(isia +nvac_im,ugroup)*CL111tL1(ugroup)
  2832.                  endif
  2833.               enddo
  2834.            enddo
  2835.    
  2836.     !--L111tL0,L1
  2837.            do u_idx = 1, Nu_L111t
  2838.               pd(N_offL111t+u_idx)  =-k_VACs_uL111t(nvac_im,u_idx)*(abL0_L0(u_idx)*CL111tL0(u_idx)+abL0_L1(u_idx)*CL111tL1(u_idx))
  2839.               pd(N_offL111tL0+u_idx)=-k_VACs_uL111t(nvac_im,u_idx)*(abL1_L0(u_idx)*CL111tL0(u_idx)+abL1_L1(u_idx)*CL111tL1(u_idx))
  2840.    
  2841.               st = mesh_ust(u_idx) +nvac_im
  2842.               ed = mesh_ued(u_idx) +nvac_im
  2843.               do ugroup2 = u_idx, Nu_L111t
  2844.                  st1 = mesh_ust(ugroup2)
  2845.                  ed1 = mesh_ued(ugroup2)
  2846.                  if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  2847.                     pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_VACs_uL111t(nvac_im,ugroup2)&
  2848.                     & *(akaL0_Vdef_L0(u_idx,nvac_im,ugroup2)*CL111tL0(ugroup2) +akaL0_Vdef_L1(u_idx,nvac_im,ugroup2)&
  2849.                     &*CL111tL1(ugroup2))
  2850.                     pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_VACs_uL111t(nvac_im,ugroup2)&
  2851.                     & *(akaL1_Vdef_L0(u_idx,nvac_im,ugroup2)*CL111tL0(ugroup2) &
  2852.                     &+akaL1_Vdef_L1(u_idx,nvac_im,ugroup2)*CL111tL1(ugroup2))
  2853.                  endif
  2854.               enddo
  2855.            enddo
  2856.    
  2857.    
  2858.        
  2859.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2860.     !----------C15 block--------------------
  2861.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2862.     elseif (j > N_offVAC+N_C15_st-1 .and. j <= N_offC15) then
  2863.         nsia = j - (N_offVAC)
  2864.         !--SIAs---------------------------
  2865.         do isia = 1,N_SIAs_m
  2866.            if ((nsia+isia) .le. N_C15) then
  2867.               pd(N_sink+isia) = -k_SIAs_C15(isia,nsia)*CSIAs(isia)
  2868.            endif
  2869.            if ((nsia-isia) .ge. 1 .and. ((nsia-isia)) .le. N_VACs_m) then
  2870.               pd(N_sink+isia) = pd(N_sink+isia)+k_VACs_C15(nsia-isia,nsia)*CVACs(nsia-isia)
  2871.            endif
  2872.         !if (isia ==(nsia-1)) then
  2873.         !pd(N_sink+isia) = pd(N_sink+isia) +g_SIA_C15(nsia)
  2874.         !endif
  2875.         !if (isia ==(nsia+1) ) then
  2876.         !pd(N_sink+isia) = pd(N_sink+isia) +g_VAC_C15(nsia)
  2877.         !endif
  2878.            if (isia == 1) then
  2879.               pd(N_sink+isia) = pd(N_sink+isia) +g_SIA_C15(nsia)
  2880.            endif
  2881.         enddo
  2882.    
  2883.         !--VACs---------------------------
  2884.         do nvac = 1,N_VACs_m
  2885.            pd(N_offSIA+nvac) = -k_VACs_C15(nvac,nsia)*CVACs(nvac)
  2886.    
  2887.            if ((nsia+nvac) .ge. 1 .and. (nsia+nvac) .le. N_VACs_m) then
  2888.               pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+ k_VACs_C15(nsia+nvac,nsia)*CVACs(nsia+nvac)
  2889.            endif
  2890.            if (nvac == 1) then
  2891.               if (nsia .lt. N_C15) then
  2892.                   pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_VAC_C15(nsia)
  2893.               endif
  2894.            endif
  2895.         enddo
  2896.    
  2897.         !--c15---------------------------
  2898.         do isia = N_C15_st, N_C15
  2899.            if ((isia-nsia) .ge. 1 .and. (isia-nsia) .le. N_SIAs_m) then
  2900.               pd(N_offVAC+isia) = k_SIAs_C15(isia-nsia,nsia)*CSIAs(isia-nsia)
  2901.            endif
  2902.            if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs_m) then
  2903.               pd(N_offVAC+isia) = pd(N_offVAC+isia)+k_VACs_C15(nsia-isia,nsia)*CVACs(nsia-isia)
  2904.            endif
  2905.            if (isia ==(nsia-1) ) then
  2906.               pd(N_offVAC+isia) = pd(N_offVAC+isia) +g_SIA_C15(nsia)
  2907.            endif
  2908.            if (isia ==(nsia+1) .and. (nsia .lt. N_C15)) then
  2909.               pd(N_offVAC+isia) = pd(N_offVAC+isia) +g_VAC_C15(nsia)
  2910.            endif
  2911.    
  2912.            if (isia ==nsia) then
  2913.                do isia2 =1, N_SIAs_m
  2914.                   if ((isia2+nsia) .le. N_C15) then
  2915.                      pd(N_offVAC+isia) = pd(N_offVAC+isia) -k_SIAs_C15(isia2,nsia)*CSIAs(isia2)
  2916.                   endif
  2917.                enddo
  2918.                do nvac =1, N_VACs_m
  2919.                   pd(N_offVAC+isia) = pd(N_offVAC+isia) -k_VACs_C15(nvac,nsia)*CVACs(nvac)
  2920.                enddo
  2921.                pd(N_offVAC+isia) = pd(N_offVAC+isia)-f_trans111(nsia) -f_trans100(nsia)-g_SIA_C15(nsia)
  2922.                if (nsia .lt. N_C15) then
  2923.                   pd(N_offVAC+isia) = pd(N_offVAC+isia) -g_VAC_C15(nsia)
  2924.                endif
  2925.            
  2926.                !add cascade overlap 01032022
  2927.                if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) ) then
  2928.                   pd(N_offVAC+isia) = pd(N_offVAC+isia) -(1-f_C15toC15(nsia))*CascadeRate
  2929.                endif
  2930.            endif
  2931.        
  2932.         !add L111 trapped by C15 01062022              
  2933.         !do isia = N_loop_start, (N_lpc15)
  2934.         !   isia2 = mesh_x0(isia)
  2935.         !   if ((isia ==nsia) .and. (isia2+nsia) .le. N_C15) then
  2936.         !   pd(N_offVAC+isia) = pd(N_offVAC+isia)-k_C15_L111t(nsia,isia2)*CL111t(isia2)
  2937.         !   endif
  2938.         !   if ((isia-isia2) .eq. nsia ) then
  2939.         !   pd(N_offVAC+isia) = pd(N_offVAC+isia)+k_C15_L111t(isia-isia2,isia2)*CL111t(isia2)
  2940.         !   endif
  2941.         !enddo             
  2942.         enddo
  2943.    
  2944.         !--L111
  2945.         do isia = N_loop_start, N_L111
  2946.            if (isia ==nsia) then
  2947.               pd(N_offC15+isia) =  f_trans111(nsia)
  2948.            endif
  2949.         !add cascade overlap 01032022
  2950.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
  2951.               pd(N_offC15+isia) = pd(N_offC15+isia) +(1-f111t)*(1-f_C15toL100(nsia)-f_C15toC15(nsia))*CascadeRate
  2952.            endif
  2953.         enddo
  2954.                    
  2955.         !--L111t
  2956.         !add L111t trap by C15 01062022
  2957.         do isia = N_loop_start, N_L111t
  2958.         !if ((isia+nsia) .le. N_C15) then
  2959.         !   pd(N_offL111+isia) =-k_C15_L111t(nsia,(isia))*CL111t(isia)  
  2960.         !endif
  2961.         !add cascade overlap 01032022
  2962.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
  2963.               pd(N_offL111+isia) = pd(N_offL111+isia)+f111t*(1-f_C15toL100(nsia)-f_C15toC15(nsia))*CascadeRate
  2964.            endif
  2965.         enddo
  2966.        
  2967.         !--L100
  2968.         do isia = N_loop_start, N_L100
  2969.            if (isia ==nsia) then
  2970.               pd(N_offL111tL1+isia) = f_trans100(nsia)
  2971.            endif
  2972.         !add cascade overlap 01022022
  2973.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
  2974.               pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +f_C15toL100(nsia)*CascadeRate
  2975.            endif
  2976.         enddo
  2977.    
  2978.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2979.     !----------L111 block-------------------
  2980.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2981.     elseif (j >= N_offC15+N_loop_start .and. j <= N_offL111) then
  2982.         nsia = j -N_offC15
  2983.         pd(N_SIAs_m+N_VACs_m+nsia) = loss_L111(nsia)
  2984.         pd(N_sink+N_SIAs_m+N_VACs+N_C15+nsia) = -loss_L111(nsia)
  2985.    
  2986.         !--SIAs
  2987.         do isia = 1,N_SIAs_m
  2988.            pd(N_sink+isia) =pd(N_sink+isia)-k_SIAs_L111(isia,nsia)*CSIAs(isia)
  2989.            if ((nsia-isia) .le. N_VACs .and. (nsia-isia) .ge. 1) then
  2990.               pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_L111(nsia-isia,(nsia)) *CVACs(nsia-isia)
  2991.            endif
  2992.         enddo
  2993.         pd(N_sink+1) = pd(N_sink+1) +g_SIA_L111(nsia)
  2994.    
  2995.         !--VACs
  2996.         do nvac = 1,N_VACs
  2997.            pd(N_offSIA+nvac) = -k_VACs_L111(nvac,(nsia))*CVACs(nvac)
  2998.            if ((nsia+nvac) .le. N_VACs) then
  2999.               pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_L111(nsia+nvac,(nsia))*CVACs(nsia+nvac)
  3000.            endif
  3001.         enddo
  3002.    
  3003.  
  3004.    
  3005.         pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_L111(nsia)
  3006.         ! Group vacancy !Modifedbysalu
  3007.    
  3008.         !Modifedbysalu
  3009.    
  3010.    
  3011.     !add cascade overlap 01032022
  3012.         do isia = N_SIAs_m+1, N_C15
  3013.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas).and. (isia .eq. nsia)) then
  3014.               pd(N_offVAC+isia) = pd(N_offVAC+isia) +f_L111toC15(nsia)*CascadeRate
  3015.            endif
  3016.         enddo
  3017.    
  3018.         !--L111
  3019.         do isia = N_loop_start, N_L111
  3020.            pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L111(isia,nsia)*CL111(isia)
  3021.        
  3022.            temp = isia-nsia
  3023.            if (temp .ge. N_loop_start .and. nsia .ne. temp) then
  3024.               pd(N_offC15+isia) = pd(N_offC15+isia) +k_L111_L111(nsia,temp)*CL111(temp)
  3025.            endif
  3026.            if ((temp .ge. N_loop_start) .and. (nsia .gt. temp)) then
  3027.               pd(N_offC15+isia) = pd(N_offC15+isia) +k_L111_L100(nsia,temp)*CL100(temp)
  3028.            endif
  3029.            if (temp .ge. 1 .and.  temp .le. N_SIAs_m) then
  3030.               pd(N_offC15+isia) = pd(N_offC15+isia) +k_SIAs_L111(temp,nsia)*CSIAs(temp)
  3031.            endif
  3032.        
  3033.            temp = nsia -isia
  3034.            if (temp .ge. 1 .and.  temp .le. N_VACs) then
  3035.               pd(N_offC15+isia) = pd(N_offC15+isia) +k_VACs_L111(temp,nsia)*CVACs(temp)
  3036.            endif
  3037.    
  3038.            if ((isia+1) .eq. nsia) then
  3039.               pd(N_offC15+isia) = pd(N_offC15+isia) +g_SIA_L111(nsia)
  3040.            endif
  3041.            if ((isia-1) .eq. nsia) then
  3042.               pd(N_offC15+isia) = pd(N_offC15+isia) +g_VAC_L111(nsia)
  3043.            endif
  3044.    
  3045.            if (isia == nsia) then
  3046.               do temp1 = N_loop_start, N_L111t
  3047.                  pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L111t(nsia,temp1)*CL111t(temp1)
  3048.               enddo
  3049.               do temp1 = N_loop_start, N_L111
  3050.                  pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L111(nsia,temp1)*CL111(temp1)
  3051.               enddo
  3052.               do temp1 = N_loop_start, N_L100
  3053.                  pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L100(nsia,temp1)*CL100(temp1)
  3054.               enddo
  3055.               do isia2 = 1, N_SIAs_m
  3056.                  pd(N_offC15+isia) = pd(N_offC15+isia) -k_SIAs_L111(isia2,nsia)*CSIAs(isia2)
  3057.               enddo
  3058.               do nvac = 1, N_VACs
  3059.                  pd(N_offC15+isia) = pd(N_offC15+isia) -k_VACs_L111(nvac,nsia)*CVACs(nvac)
  3060.               enddo
  3061.               if (nsia .gt. N_loop_start) then
  3062.                  pd(N_offC15+isia) = pd(N_offC15+isia) -g_SIA_L111(nsia)
  3063.               endif
  3064.               if (nsia .lt. N_L111) then
  3065.                  pd(N_offC15+isia) = pd(N_offC15+isia) -g_VAC_L111(nsia)
  3066.               endif
  3067.               pd(N_offC15+isia) = pd(N_offC15+isia) -k_trap_L111(nsia)*Ctrap
  3068.    
  3069.               do ugroup = 1, Nu_L111t
  3070.                  pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111tL0(ugroup) &
  3071.                                                 &-k_L111_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)
  3072.               enddo
  3073.               do ugroup = 1, Nu_L100
  3074.                  pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_uL100(nsia,ugroup)*adft_L0(ugroup)*CL100L0(ugroup) &
  3075.                                                 &-k_L111_uL100(nsia,ugroup)*adft_L1(ugroup)*CL100L1(ugroup)
  3076.               enddo
  3077.    
  3078.            
  3079.            endif
  3080.                    
  3081.             !add cascade overlap 01012022
  3082.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
  3083.               pd(N_offC15+isia) = pd(N_offC15+isia) -(f_L111toL100(nsia)+f_L111toC15(nsia))*CascadeRate
  3084.            endif
  3085.         enddo
  3086.    
  3087.         !--L111t
  3088.         do isia = N_loop_start, N_L111t
  3089.            pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111_L111t(nsia,isia)*CL111t(isia)
  3090.            if ((isia-nsia) .ge. N_loop_start .and. (isia-nsia) .ne. nsia) then
  3091.               pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111_L111t(nsia,isia-nsia)*CL111t(isia-nsia)
  3092.            endif
  3093.            if (isia == nsia) then
  3094.               pd(N_offL111+isia) = pd(N_offL111+isia) +k_trap_L111(nsia)*Ctrap
  3095.            endif
  3096.         enddo
  3097.    
  3098.         !--L111tL0,L1
  3099.         do u_idx = 1, Nu_L111t
  3100.            pd(N_offL111t+u_idx)  =-k_L111_uL111t(nsia,u_idx)*(abL0_L0(u_idx)*CL111tL0(u_idx)+abL0_L1(u_idx)*CL111tL1(u_idx))
  3101.            pd(N_offL111tL0+u_idx)=-k_L111_uL111t(nsia,u_idx)*(abL1_L0(u_idx)*CL111tL0(u_idx)+abL1_L1(u_idx)*CL111tL1(u_idx))
  3102.        
  3103.            st = mesh_ust(u_idx) -nsia
  3104.            ed = mesh_ued(u_idx) -nsia
  3105.            do ugroup2 = 1, u_idx
  3106.               st1 = mesh_ust(ugroup2)
  3107.               ed1 = mesh_ued(ugroup2)
  3108.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3109.                  pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_L111_uL111t(nsia,ugroup2)&
  3110.                   & *(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
  3111.                 pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111_uL111t(nsia,ugroup2)&
  3112.                 & *(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
  3113.               endif
  3114.            enddo
  3115.    
  3116.         !from k_L111t
  3117.            do isia = N_loop_start, N_L111t
  3118.               if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
  3119.                  pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111_L111t(nsia,isia)*CL111t(isia)*uf0(u_idx)
  3120.                  pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111_L111t(nsia,isia)*CL111t(isia) &
  3121.                                                         &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
  3122.               endif
  3123.            enddo
  3124.        
  3125.         enddo
  3126.    
  3127.         !--L100
  3128.         do isia = N_loop_start, N_L100
  3129.            pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L111_L100(nsia,isia)*CL100(isia)
  3130.            if ((isia-nsia) .ge. nsia) then
  3131.               pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_L111_L100(nsia,isia-nsia)*CL100(isia-nsia)
  3132.            endif
  3133.            if (isia/2 .eq. nsia) then
  3134.               pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +2*f_g2s*k_L111_L111(nsia, nsia)*CL111(nsia)  &
  3135.                                                         &+  f_g2s*k_L111_L111t(nsia, nsia)*CL111t(nsia)
  3136.            endif
  3137.            !add cascade overlap 01012022
  3138.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
  3139.               pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +f_L111toL100(nsia)*CascadeRate
  3140.            endif
  3141.        
  3142.         enddo
  3143.        
  3144.         !--L100L0,L1
  3145.         do u_idx = 1, Nu_L100
  3146.            pd(N_offL100+u_idx)  =-k_L111_uL100(nsia,u_idx)*(abL0_L0(u_idx)*CL100L0(u_idx)+abL0_L1(u_idx)*CL100L1(u_idx))
  3147.            pd(N_offL100L0+u_idx)=-k_L111_uL100(nsia,u_idx)*(abL1_L0(u_idx)*CL100L0(u_idx)+abL1_L1(u_idx)*CL100L1(u_idx))
  3148.        
  3149.            st = mesh_ust(u_idx) -nsia
  3150.            ed = mesh_ued(u_idx) -nsia
  3151.            do ugroup2 = 1, u_idx
  3152.               st1 = mesh_ust(ugroup2)
  3153.               ed1 = mesh_ued(ugroup2)
  3154.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3155.                  pd(N_offL100+u_idx)   =pd(N_offL100+u_idx)   +k_L111_uL100(nsia,ugroup2)&
  3156.                   &*(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
  3157.                  pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111_uL100(nsia,ugroup2)&
  3158.                  &*(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
  3159.               endif
  3160.            enddo
  3161.    
  3162.         !from k_L100
  3163.            do isia = nsia, N_L100
  3164.               if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
  3165.                  pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_L111_L100(nsia,isia)*CL100(isia)*uf0(u_idx)
  3166.                  pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111_L100(nsia,isia)*CL100(isia) &
  3167.                                                         &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
  3168.               endif
  3169.            enddo
  3170.    
  3171.         !form from L111+L111
  3172.            if (2*nsia .ge. mesh_ust(u_idx) .and. 2*nsia .le. mesh_ued(u_idx)) then
  3173.               pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +2*f_g2s*k_L111_L111(nsia,nsia)*CL111(nsia)*uf0(u_idx) &
  3174.                                                 &  +  f_g2s*k_L111_L111t(nsia,nsia)*CL111t(nsia)*uf0(u_idx)
  3175.                                                
  3176.               pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) &
  3177.                     & +2*f_g2s*k_L111_L111(nsia,nsia)*CL111(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)&
  3178.                     & +  f_g2s*k_L111_L111t(nsia,nsia)*CL111t(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)
  3179.            endif
  3180.    
  3181.        
  3182.         enddo
  3183.        
  3184.         !~~trap
  3185.         !pd(bin_length) = -k_trap_L111(nsia)*Ctrap
  3186.    
  3187.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3188.     !----------L111t block--------------------
  3189.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3190.     elseif (j >= N_offL111+N_loop_start .and. j <= N_offL111t) then
  3191.         nsia = j -N_offL111
  3192.         pd(N_SIAs_m+N_VACs_m+N_L111+nsia) = loss_L111t(nsia)
  3193.        
  3194.         !--SIAs
  3195.         do isia = 1,N_SIAs_m
  3196.            pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_L111t(isia,nsia)*CSIAs(isia)
  3197.            if (((nsia-isia) .le. N_VACs) .and. ((nsia-isia) .ge. 1)) then
  3198.               pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_L111t(nsia-isia,(nsia))*CVACs(nsia-isia)
  3199.            endif
  3200.         enddo
  3201.         pd(N_sink+1) = pd(N_sink+1)+ g_SIA_L111t(nsia)
  3202.         !--VACs
  3203.         do nvac = 1,N_VACs
  3204.            pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_L111t(nvac,(nsia))*CVACs(nvac)
  3205.            if ((nsia+nvac) .le. N_VACs) then
  3206.               pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_L111t(nsia+nvac,(nsia))*CVACs(nsia+nvac)
  3207.            endif
  3208.         enddo
  3209.    
  3210.    
  3211.    
  3212.         pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_L111t(nsia)
  3213.    
  3214.      
  3215.         ! Group vacancy !Modifedbysalu
  3216.  
  3217.    
  3218.         !Modifedbysalu
  3219.    
  3220.  
  3221.    
  3222.         do isia = N_SIAs_m+1, N_C15
  3223.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas).and. (isia .eq. nsia)) then
  3224.               pd(N_offVAC+isia) = pd(N_offVAC+isia) +f_L111ttoC15(nsia)*CascadeRate
  3225.            endif
  3226.         enddo
  3227.                        
  3228.         !add L111 trapped by C15 01052022
  3229.         !if ((nsia) .le. (N_lpc15)) then
  3230.         !do isia = N_SIAs_m+1, N_C15
  3231.         !   if ( (isia-nsia) .ge. (N_SIAs_m+1) ) then
  3232.         !   pd(N_offVAC+isia) = pd(N_offVAC+isia) +k_C15_L111t(isia-nsia,(nsia))*C_C15(isia-nsia)
  3233.         !   endif
  3234.         !   if ((isia+nsia) .le. N_C15) then
  3235.         !  pd(N_offVAC+isia) = pd(N_offVAC+isia)-k_C15_L111t(isia,(nsia))*C_C15(isia)
  3236.         !  endif                                             
  3237.         !enddo
  3238.         !endif
  3239.    
  3240.         !--L111
  3241.         do isia = N_loop_start, N_L111
  3242.            if (isia == nsia) then
  3243.               pd(N_offC15+isia) = pd(N_offC15+isia) +g_trap_L111t(nsia)
  3244.            endif
  3245.            pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_L111t(isia,nsia)*CL111(isia)
  3246.         enddo
  3247.    
  3248.         !--L111t
  3249.         do isia = N_loop_start, N_L111t
  3250.            pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_L111t(isia,nsia)*CL111t(isia)
  3251.            if ((isia-nsia) .ge. N_loop_start .and. (isia-nsia) .ne. nsia) then
  3252.               pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111t_L111t(isia-nsia,nsia)*CL111t(isia-nsia)
  3253.             !if ((isia-nsia) == nsia) then  !L111t(10) +L111t(10) will form L100
  3254.             !   pd(N_offL111+isia) = pd(N_offL111+isia)-k_L111t_L111t(isia-nsia,nsia)*CL111t(isia-nsia)
  3255.             !endif
  3256.            endif
  3257.    
  3258.            if ((isia-nsia) .ge. 1 .and. (isia-nsia) .le. N_SIAs_m) then
  3259.               pd(N_offL111+isia) = pd(N_offL111+isia) +k_SIAs_L111t(isia-nsia,nsia)*CSIAs(isia-nsia)
  3260.            endif
  3261.    
  3262.            if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs) then
  3263.               pd(N_offL111+isia) =pd(N_offL111+isia) +k_VACs_L111t(nsia-isia,nsia)*CVACs(nsia-isia)
  3264.            endif
  3265.    
  3266.            if ((isia-nsia) .ge. N_loop_start) then
  3267.               if ((isia-nsia) .ne. nsia) then
  3268.                  pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111_L111t(isia-nsia,nsia)*CL111(isia-nsia)
  3269.               endif
  3270.               if (nsia .gt. (isia-nsia)) then
  3271.                  pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111t_L100(nsia,isia-nsia)*CL100(isia-nsia)
  3272.               endif
  3273.            endif
  3274.    
  3275.            if ((isia+1) .eq. nsia) then
  3276.               pd(N_offL111+isia) =pd(N_offL111+isia) +g_SIA_L111t(nsia)
  3277.            endif
  3278.            if ((isia-1) .eq. nsia) then
  3279.               pd(N_offL111+isia) =pd(N_offL111+isia) +g_VAC_L111t(nsia)
  3280.            endif
  3281.    
  3282.            if (isia == nsia) then
  3283.               pd(N_offL111+isia) = pd(N_offL111+isia)-loss_L111t(nsia)
  3284.               do temp1 = N_loop_start, N_L111t
  3285.                  pd(N_offL111+isia) =pd(N_offL111+isia) -k_L111t_L111t(nsia,temp1)*CL111t(temp1)
  3286.               enddo
  3287.               do temp1 = N_loop_start, N_L111
  3288.                  pd(N_offL111+isia) =pd(N_offL111+isia) -k_L111_L111t(temp1,nsia)*CL111(temp1)
  3289.               enddo
  3290.               do temp1 = N_loop_start, N_L100
  3291.                  pd(N_offL111+isia) =pd(N_offL111+isia) -k_L111t_L100(nsia,temp1)*CL100(temp1)
  3292.               enddo
  3293.               do isia2 = 1, N_SIAs_m
  3294.                  pd(N_offL111+isia) =pd(N_offL111+isia) -k_SIAs_L111t(isia2,nsia)*CSIAs(isia2)
  3295.               enddo
  3296.               do nvac = 1, N_VACs
  3297.                  pd(N_offL111+isia) =pd(N_offL111+isia) -k_VACs_L111t(nvac,nsia)*CVACs(nvac)
  3298.               enddo
  3299.               if (nsia .gt. N_loop_start) then
  3300.                  pd(N_offL111+isia) =pd(N_offL111+isia) -g_SIA_L111t(nsia)
  3301.               endif
  3302.    
  3303.               pd(N_offL111+isia) =pd(N_offL111+isia) -g_VAC_L111t(nsia)
  3304.    
  3305.               pd(N_offL111+isia) =pd(N_offL111+isia) -g_trap_L111t((nsia))
  3306.            
  3307.               do ugroup = 1, Nu_L111t
  3308.                  pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111tL0(ugroup) &
  3309.                                                     &-k_L111t_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)  
  3310.               enddo
  3311.               do ugroup = 1, Nu_L100
  3312.                  pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL100(nsia,ugroup)*adft_L0(ugroup)*CL100L0(ugroup) &
  3313.                                                     &-k_L111t_uL100(nsia,ugroup)*adft_L1(ugroup)*CL100L1(ugroup)
  3314.               enddo
  3315.    
  3316.            endif
  3317.        
  3318.         !add cascade overlap 01012022
  3319.            if ((nsia .le. Nmax_cas).and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
  3320.             pd(N_offL111+isia) =pd(N_offL111+isia)-(f_L111ttoL100(nsia)+f_L111ttoC15(nsia))*CascadeRate
  3321.            endif
  3322.         !add L111t trapped by c15 01062022
  3323.         !if ((isia .le. (N_lpc15)) .and. (isia .eq. nsia)) then
  3324.         !   do isia2 = N_SIAs_m+1, N_C15                     
  3325.         !      if ((isia2+nsia) .le. N_C15) then
  3326.         !      pd(N_offL111+isia) =pd(N_offL111+isia)-k_C15_L111t(isia2,(nsia))*C_C15(isia2)
  3327.         !      endif
  3328.         !   enddo
  3329.         !endif             
  3330.         enddo
  3331.        
  3332.         !--L111tL0,L1
  3333.         do u_idx = 1, Nu_L111t
  3334.            pd(N_offL111t+u_idx)  =-k_L111t_uL111t(nsia,u_idx)*(abL0_L0(u_idx)*CL111tL0(u_idx)+abL0_L1(u_idx)*CL111tL1(u_idx))
  3335.            pd(N_offL111tL0+u_idx)=-k_L111t_uL111t(nsia,u_idx)*(abL1_L0(u_idx)*CL111tL0(u_idx)+abL1_L1(u_idx)*CL111tL1(u_idx))
  3336.        
  3337.         !from k_L111t
  3338.            st = mesh_ust(u_idx) -nsia
  3339.            ed = mesh_ued(u_idx) -nsia
  3340.            do isia = N_loop_start, N_L111t
  3341.               if ((isia .ge. st) .and. (isia .le. ed) .and. (isia .ne. nsia)) then
  3342.                  pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_L111t_L111t(isia,nsia)*CL111t(isia)*uf0(u_idx)
  3343.                  pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_L111t(isia,nsia)*CL111t(isia) &
  3344.                                                         & *(nsia +isia -mesh_x0(u_idx))*uf1(u_idx)
  3345.               endif
  3346.            enddo
  3347.        
  3348.         !from k_L111
  3349.            do isia = N_loop_start, N_L111
  3350.               if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
  3351.                  pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111_L111t(isia,nsia)*CL111(isia)*uf0(u_idx)
  3352.                  pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111_L111t(isia,nsia)*CL111(isia) &
  3353.                                                           &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
  3354.               endif
  3355.            enddo
  3356.         !from k_L100
  3357.            do isia = N_loop_start, nsia-1
  3358.               if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
  3359.                  pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia)*uf0(u_idx)
  3360.                  pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia) &
  3361.                                                         &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
  3362.               endif
  3363.            enddo
  3364.           !from k_SIA
  3365.            do isia = 1, N_SIAs_m
  3366.               if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
  3367.                  pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_SIAs_L111t(isia, nsia)*CSIAs(isia)*uf0(u_idx)
  3368.                  pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_L111t(isia, nsia)*CSIAs(isia) &
  3369.                                                         &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
  3370.               endif
  3371.            enddo
  3372.         !from k_uL111t
  3373.            st = mesh_ust(u_idx) -nsia
  3374.            ed = mesh_ued(u_idx) -nsia
  3375.            do ugroup2 = 1, u_idx
  3376.               st1 = mesh_ust(ugroup2)
  3377.               ed1 = mesh_ued(ugroup2)
  3378.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3379.                 pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_L111t_uL111t(nsia,ugroup2)*(akaL0_Idef_L0(u_idx,nsia,ugroup2)&
  3380.                                                 &*CL111tL0(ugroup2)+akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
  3381.                 pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_uL111t(nsia,ugroup2)*(akaL1_Idef_L0(u_idx,nsia,ugroup2)&
  3382.                                                 &*CL111tL0(ugroup2)+akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
  3383.               endif
  3384.            enddo
  3385.        
  3386.           if (u_idx .eq. 1 .and. nsia .eq. N_L111t) then
  3387.              pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)  +g_VAC_L111t(nsia)*uf0(u_idx)
  3388.              pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx)+g_VAC_L111t(nsia)*(nsia+1-mesh_x0(u_idx))*uf1(u_idx)
  3389.           endif
  3390.         enddo
  3391.    
  3392.     !--L100
  3393.        do isia = N_loop_start, N_L100
  3394.           pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L111t_L100(nsia,isia)*CL100(isia)
  3395.           if ((isia-nsia) .ge. nsia) then
  3396.              pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_L111t_L100(nsia,isia-nsia)*CL100(isia-nsia)
  3397.           endif
  3398.           if (isia/2 .eq. nsia) then
  3399.              pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +2*f_g2s*k_L111t_L111t(nsia, nsia)*CL111t(nsia) &
  3400.                                                         &+  f_g2s*k_L111_L111t(nsia, nsia)*CL111(nsia)
  3401.                                                        
  3402.           endif
  3403.         !add cascade overlap 01012022
  3404.           if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
  3405.              pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +f_L111ttoL100(nsia)*CascadeRate
  3406.           endif
  3407.        enddo
  3408.    
  3409.     !--L100L0,L1
  3410.        do u_idx = 1, Nu_L100
  3411.           pd(N_offL100+u_idx)  =-k_L111t_uL100(nsia,u_idx)*(abL0_L0(u_idx)*CL100L0(u_idx)+abL0_L1(u_idx)*CL100L1(u_idx))
  3412.           pd(N_offL100L0+u_idx)=-k_L111t_uL100(nsia,u_idx)*(abL1_L0(u_idx)*CL100L0(u_idx)+abL1_L1(u_idx)*CL100L1(u_idx))
  3413.        
  3414.           st = mesh_ust(u_idx) -nsia
  3415.           ed = mesh_ued(u_idx) -nsia
  3416.           do ugroup2 = 1, u_idx
  3417.              st1 = mesh_ust(ugroup2)
  3418.              ed1 = mesh_ued(ugroup2)
  3419.              if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3420.                 pd(N_offL100+u_idx)   =pd(N_offL100+u_idx)   +k_L111t_uL100(nsia,ugroup2)&
  3421.                 & *(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
  3422.                 pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111t_uL100(nsia,ugroup2)&
  3423.                 & *(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
  3424.              endif
  3425.           enddo
  3426.    
  3427.         !from k_L100
  3428.           do isia = nsia, N_L100
  3429.              if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
  3430.                 pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia)*uf0(u_idx)
  3431.                 pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia) &
  3432.                                                         &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
  3433.              endif
  3434.           enddo
  3435.    
  3436.         !form from L111t+L111t
  3437.           if (2*nsia .ge. mesh_ust(u_idx) .and. 2*nsia .le. mesh_ued(u_idx)) then
  3438.              pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +2*f_g2s*k_L111t_L111t(nsia,nsia)*CL111t(nsia)*uf0(u_idx) &
  3439.                                                 & +  f_g2s*k_L111_L111t(nsia,nsia)*CL111(nsia)*uf0(u_idx)
  3440.              pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) &
  3441.                     & +2*f_g2s*k_L111t_L111t(nsia,nsia)*CL111t(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)&
  3442.                     & +  f_g2s*k_L111_L111t(nsia,nsia)*CL111(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)
  3443.           endif
  3444.        enddo
  3445.    
  3446.     !~~trap
  3447.        pd(bin_length) = -k_trap_L111t(nsia)*Ctrap
  3448.    
  3449.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3450.     !----------uL111tL0 block----------------
  3451.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3452.    
  3453.     elseif (j >= N_offL111t+1 .and. j <= N_offL111tL0) then
  3454.         u_idx = j -N_offL111t
  3455.         pd(N_offsinkL111t+u_idx) = loss_uL111t(u_idx)*abL0_L0(u_idx)
  3456.         pd(N_offsinkL111tL0+u_idx) = loss_uL111t(u_idx)*abL1_L0(u_idx)
  3457.    
  3458.         !--SIAs
  3459.         do isia = 1, N_SIAs_m
  3460.            pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL111t(isia,u_idx)*adft_L0(u_idx)*CSIAs(isia)
  3461.            do nvac = 1, N_VACs
  3462.               if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
  3463.                  pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)
  3464.               endif
  3465.            enddo
  3466.         enddo
  3467.         pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL111t(u_idx)*adft_L0(u_idx)
  3468.        
  3469.         !--VACs
  3470.         do nvac = 1,N_VACs
  3471.            pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL111t(nvac,u_idx)*adft_L0(u_idx)*CVACs(nvac)
  3472.            do temp = N_L111t, N_VACs
  3473.               if (((temp-nvac) .ge. mesh_ust(u_idx)) .and. ((temp-nvac) .le. mesh_ued(u_idx))) then
  3474.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL111t(temp,u_idx)*CVACs(temp)
  3475.               endif
  3476.            enddo
  3477.         enddo
  3478.         pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL111t(u_idx)*adft_L0(u_idx)
  3479.        
  3480.        
  3481.        
  3482.    
  3483.    
  3484.    
  3485.     !--L111
  3486.         do isia = N_loop_start, N_L111
  3487.            pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL111t(isia,u_idx)*adft_L0(u_idx)*CL111(isia)
  3488.         enddo
  3489.    
  3490.     !--L111t
  3491.         do isia = N_loop_start, N_L111t
  3492.            pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL111t(isia,u_idx)*adft_L0(u_idx)*CL111t(isia)
  3493.        
  3494.            do temp = 1, N_VACs
  3495.              if ((temp+isia) .ge. mesh_ust(u_idx) .and. (temp+isia) .le. mesh_ued(u_idx)) then
  3496.                 pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(temp,u_idx)*CVACs(temp)
  3497.              endif
  3498.            enddo
  3499.            if (isia .eq. N_L111t .and. u_idx .eq. 1) then
  3500.               pd(N_offL111+isia) = pd(N_offL111+isia) +g_SIA_uL111t(1)
  3501.            endif
  3502.         enddo
  3503.    
  3504.      
  3505.        
  3506.         !L111tL0,L1---
  3507.         st1 = mesh_ust(u_idx)
  3508.         ed1 = mesh_ued(u_idx)
  3509.         do ugroup = 1, Nu_L111t
  3510.        
  3511.         !+uL111t
  3512.            do u_idx1 = max(u_idx,ugroup), Nu_L111t
  3513.               pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3514.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  3515.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  3516.               pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3517.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  3518.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  3519.            enddo
  3520.        
  3521.         !+SIA          
  3522.             do isia = 1, N_SIAs_m
  3523.                st = mesh_ust(ugroup) -isia
  3524.                ed = mesh_ued(ugroup) -isia
  3525.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3526.                   pd(N_offL111t+ugroup)  = pd(N_offL111t+ugroup) +k_SIAs_uL111t(isia,u_idx)&
  3527.                                         &*akaL0_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
  3528.                   pd(N_offL111tL0+ugroup)= pd(N_offL111tL0+ugroup)+k_SIAs_uL111t(isia,u_idx)&
  3529.                                         &*akaL1_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
  3530.                endif
  3531.             enddo
  3532.         !+vac
  3533.            do nvac = 1, N_VACs
  3534.               st = mesh_ust(ugroup)+nvac
  3535.               ed = mesh_ued(ugroup)+nvac
  3536.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3537.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup) +k_VACs_uL111t(nvac,u_idx)&
  3538.                                     &*akaL0_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
  3539.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_VACs_uL111t(nvac,u_idx)&
  3540.                                     &*akaL1_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
  3541.               endif
  3542.            enddo
  3543.         !+L111
  3544.           do isia = N_loop_start, N_L111
  3545.              st = mesh_ust(ugroup) -isia
  3546.              ed = mesh_ued(ugroup) -isia
  3547.              if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3548.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup) +k_L111_uL111t(isia,u_idx)&
  3549.                                     &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
  3550.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) +k_L111_uL111t(isia,u_idx)&
  3551.                                         &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
  3552.              endif
  3553.           enddo
  3554.         !+L111t
  3555.           do isia = N_loop_start, N_L111t
  3556.              st = mesh_ust(ugroup) -isia
  3557.              ed = mesh_ued(ugroup) -isia
  3558.              if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3559.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +k_L111t_uL111t(isia,u_idx)&
  3560.                                     &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
  3561.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L111t_uL111t(isia,u_idx)&
  3562.                                     &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
  3563.             endif
  3564.           enddo
  3565.         !+L100
  3566.           do isia = N_loop_start, N_L100
  3567.              st = mesh_ust(ugroup) -isia
  3568.              ed = mesh_ued(ugroup) -isia
  3569.              if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3570.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +k_L100_uL111t(isia,u_idx)&
  3571.                                         &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL100(isia)
  3572.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L100_uL111t(isia,u_idx)&
  3573.                                         &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL100(isia)
  3574.              endif  
  3575.           enddo
  3576.    
  3577.           if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
  3578.              pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +g_SIA_uL111t(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)
  3579.              pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_SIA_uL111t(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)
  3580.           endif
  3581.    
  3582.           if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
  3583.              pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +g_VAC_uL111t(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)
  3584.              pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_VAC_uL111t(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)
  3585.           endif
  3586.    
  3587.           if (u_idx .le. ugroup) then
  3588.              do u_idx1 = 1, ugroup
  3589.                 if (u_idx .eq. u_idx1) then
  3590.                    factor = 2
  3591.                 else
  3592.                    factor = 1
  3593.                 endif
  3594.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3595.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
  3596.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  3597.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3598.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
  3599.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  3600.             enddo
  3601.           endif
  3602.    
  3603.    
  3604.          
  3605.         !from +uL100       
  3606.           if (u_idx .le. ugroup) then
  3607.              do u_idx1 = 1, min(ugroup, Nu_L100) !uL100
  3608.                 if (u_idx .eq. u_idx1) then
  3609.                    factor = 0.5
  3610.                 elseif (u_idx .gt. u_idx1) then
  3611.                    factor = 1.0
  3612.                 else
  3613.                    factor = 0.
  3614.                 endif  
  3615.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup) &
  3616.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L0L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
  3617.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L0L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
  3618.        
  3619.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3620.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L0L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
  3621.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L0L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
  3622.              enddo
  3623.           endif
  3624.        
  3625.        
  3626.      
  3627.            
  3628.          
  3629.        
  3630.          
  3631.    
  3632.    
  3633.           if (ugroup == u_idx) then
  3634.              pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -loss_uL111t(ugroup)*abL0_L0(ugroup)
  3635.              pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-loss_uL111t(ugroup)*abL1_L0(ugroup)
  3636.             !- k_SIAm
  3637.              do isia =1, N_SIAs_m
  3638.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_SIAs_uL111t(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)
  3639.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_SIAs_uL111t(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)
  3640.              enddo
  3641.             !- k_VACs
  3642.              do nvac = 1, N_VACs
  3643.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_VACs_uL111t(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)
  3644.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_VACs_uL111t(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)
  3645.              enddo
  3646.    
  3647.    
  3648.              
  3649.             !- k_L111                                        
  3650.              do isia = N_loop_start, N_L111
  3651.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_L111_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)
  3652.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)
  3653.              enddo
  3654.              do isia = N_loop_start, N_L111t
  3655.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_L111t_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)
  3656.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111t_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)
  3657.              enddo
  3658.              do isia = N_loop_start, N_L100
  3659.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_L100_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL100(isia)
  3660.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L100_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL100(isia)
  3661.              enddo
  3662.            
  3663.             pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   -g_SIA_uL111t(ugroup)*abL0_L0(ugroup)
  3664.             pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_SIA_uL111t(ugroup)*abL1_L0(ugroup)
  3665.             pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   -g_VAC_uL111t(ugroup)*abL0_L0(ugroup)
  3666.             pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_VAC_uL111t(ugroup)*abL1_L0(ugroup)
  3667.    
  3668.             !+uL100    
  3669.             do u_idx1 = 1, Nu_L100
  3670.                 do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t,Nu_L100)
  3671.                     pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3672.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
  3673.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
  3674.                     pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3675.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
  3676.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
  3677.                 enddo
  3678.             enddo
  3679.             !+uL111t       
  3680.             do u_idx1 = 1, Nu_L111t
  3681.                 do u_idx2 = max(u_idx1,ugroup), Nu_L111t
  3682.                     pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3683.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
  3684.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  3685.                     pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3686.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
  3687.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  3688.                 enddo
  3689.             enddo
  3690.    
  3691.            
  3692.        
  3693.           endif
  3694.    
  3695.      
  3696.        
  3697.        
  3698.      
  3699.      !--L111
  3700.         enddo
  3701.        
  3702.         !--L100
  3703.         do isia = N_loop_start, N_L100
  3704.            pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L100_uL111t(isia,u_idx)*adft_L0(u_idx)*CL100(isia)
  3705.         enddo
  3706.        
  3707.         !--L100L0,L1
  3708.         do ugroup = 1, Nu_L100
  3709.        
  3710.            do u_idx2 = max(u_idx,ugroup), max(Nu_L111t, Nu_L100)
  3711.               pd(N_offL100+ugroup) = pd(N_offL100+ugroup)     &
  3712.                                     &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li0L0(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
  3713.                                     &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li1L0(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
  3714.               pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &
  3715.                                 &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li0L0(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
  3716.                                 &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li1L0(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
  3717.            enddo
  3718.    
  3719.            do u_idx2 = 1, ugroup
  3720.               if (u_idx2 .eq. u_idx) then
  3721.                 factor = 0.5
  3722.               elseif (u_idx2 .gt. u_idx) then
  3723.                 factor = 1.0
  3724.               else
  3725.                 factor = 0.
  3726.               endif
  3727.               pd(N_offL100+ugroup) = pd(N_offL100+ugroup)    &
  3728.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L0L0(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
  3729.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L1L0(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
  3730.                                                                                        
  3731.               pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &                        
  3732.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L0L0(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
  3733.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L1L0(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
  3734.            enddo
  3735.         enddo
  3736.    
  3737.            
  3738.    
  3739.        
  3740.         !~~trap
  3741.         pd(bin_length) = -k_trap_uL111t(u_idx)*adft_L0(u_idx)*Ctrap
  3742.    
  3743.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3744.     !----------uL111tL1 block----------------
  3745.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  3746.     elseif (j >= N_offL111tL0+1 .and. j <= N_offL111tL1) then
  3747.         u_idx = j -N_offL111tL0
  3748.    
  3749.         pd(N_offsinkL111t+u_idx) =   loss_uL111t(u_idx)*abL0_L1(u_idx)
  3750.         pd(N_offsinkL111tL0+u_idx) = loss_uL111t(u_idx)*abL1_L1(u_idx)
  3751.    
  3752.         !--SIAs
  3753.         do isia = 1, N_SIAs_m
  3754.            pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL111t(isia,u_idx)*adft_L1(u_idx)*CSIAs(isia)
  3755.            do nvac = 1, N_VACs
  3756.              if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
  3757.                 pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL111t(nvac,u_idx)*v1(nvac+isia,u_idx)*CVACs(nvac)
  3758.               endif
  3759.            enddo
  3760.         enddo
  3761.         pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL111t(u_idx)*adft_L1(u_idx)
  3762.        
  3763.         !--VACs
  3764.         do nvac = 1,N_VACs
  3765.            pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL111t(nvac,u_idx)*adft_L1(u_idx)*CVACs(nvac)
  3766.            do temp = N_L111t, N_VACs
  3767.               if (((temp-nvac) .ge. mesh_ust(u_idx)) .and. ((temp-nvac) .le. mesh_ued(u_idx))) then
  3768.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL111t(temp,u_idx)*v1(temp-nvac,u_idx)*CVACs(temp)
  3769.               endif
  3770.            enddo
  3771.         enddo
  3772.         pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL111t(u_idx)*adft_L1(u_idx)
  3773.        
  3774.      
  3775.    
  3776.    
  3777.     !--L111
  3778.         do isia = N_loop_start, N_L111
  3779.            pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL111t(isia,u_idx)*adft_L1(u_idx)*CL111(isia)
  3780.         enddo
  3781.    
  3782.     !--L111t
  3783.         do isia = N_loop_start, N_L111t
  3784.            pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL111t(isia,u_idx)*adft_L1(u_idx)*CL111t(isia)
  3785.        
  3786.            do temp = 1, N_VACs
  3787.               if ((temp+isia) .ge. mesh_ust(u_idx) .and. (temp+isia) .le. mesh_ued(u_idx)) then
  3788.                  pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(temp,u_idx)*v1(isia +temp,u_idx)*CVACs(temp)
  3789.               endif
  3790.            enddo
  3791.            if (isia .eq. N_L111t .and. u_idx .eq. 1) then
  3792.               pd(N_offL111+isia) = pd(N_offL111+isia) +g_SIA_uL111t(1)*v1(N_L111+1,1)
  3793.            endif
  3794.         enddo
  3795.    
  3796.         !--L111tL0,L1
  3797.         st1 = mesh_ust(u_idx)
  3798.         ed1 = mesh_ued(u_idx)
  3799.         do ugroup = 1, Nu_L111t
  3800.        
  3801.         !+uL111t
  3802.            do u_idx1 = max(u_idx,ugroup), Nu_L111t
  3803.               pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3804.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  3805.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  3806.               pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3807.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  3808.                             &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  3809.            enddo
  3810.        
  3811.         !+SIA          
  3812.            do isia = 1, N_SIAs_m
  3813.               st = mesh_ust(ugroup) -isia
  3814.               ed = mesh_ued(ugroup) -isia
  3815.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3816.                  pd(N_offL111t+ugroup)  = pd(N_offL111t+ugroup) +k_SIAs_uL111t(isia,u_idx)&
  3817.                                         &*akaL0_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
  3818.                  pd(N_offL111tL0+ugroup)= pd(N_offL111tL0+ugroup)+k_SIAs_uL111t(isia,u_idx)&
  3819.                                         &*akaL1_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
  3820.               endif
  3821.            enddo
  3822.         !+vac
  3823.            do nvac = 1, N_VACs
  3824.               st = mesh_ust(ugroup)+nvac
  3825.               ed = mesh_ued(ugroup)+nvac
  3826.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3827.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup) +k_VACs_uL111t(nvac,u_idx)&
  3828.                                     &*akaL0_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
  3829.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_VACs_uL111t(nvac,u_idx)&
  3830.                                     &*akaL1_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
  3831.               endif
  3832.            enddo
  3833.    
  3834.    
  3835.              
  3836.        
  3837.          
  3838.            do isia = N_loop_start, N_L111
  3839.               st = mesh_ust(ugroup) -isia
  3840.               ed = mesh_ued(ugroup) -isia
  3841.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3842.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup) +k_L111_uL111t(isia,u_idx)&
  3843.                                     &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
  3844.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) +k_L111_uL111t(isia,u_idx)&
  3845.                                         &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
  3846.               endif
  3847.            enddo
  3848.         !+L111t
  3849.            do isia = N_loop_start, N_L111t
  3850.               st = mesh_ust(ugroup) -isia
  3851.               ed = mesh_ued(ugroup) -isia
  3852.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3853.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +k_L111t_uL111t(isia,u_idx)&
  3854.                                     &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
  3855.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L111t_uL111t(isia,u_idx)&
  3856.                                     &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
  3857.               endif
  3858.            enddo
  3859.         !+L100
  3860.            do isia = N_loop_start, N_L100
  3861.               st = mesh_ust(ugroup) -isia
  3862.               ed = mesh_ued(ugroup) -isia
  3863.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  3864.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +k_L100_uL111t(isia,u_idx)&
  3865.                                         &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL100(isia)
  3866.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L100_uL111t(isia,u_idx)&
  3867.                                         &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL100(isia)
  3868.               endif  
  3869.            enddo
  3870.    
  3871.            if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
  3872.               pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +g_SIA_uL111t(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)
  3873.               pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_SIA_uL111t(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)
  3874.            endif
  3875.    
  3876.            if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
  3877.                pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  +g_VAC_uL111t(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)
  3878.                pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_VAC_uL111t(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)
  3879.            endif
  3880.            
  3881.            if (u_idx .le. ugroup) then
  3882.               do u_idx1 = 1, ugroup
  3883.                  if (u_idx .eq. u_idx1) then
  3884.                     factor = 2
  3885.                  else
  3886.                     factor = 1
  3887.                  endif
  3888.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3889.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
  3890.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  3891.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3892.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
  3893.                         &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  3894.               enddo
  3895.            endif
  3896.    
  3897.         !group+ from uL100     
  3898.            if (u_idx .le. ugroup) then
  3899.              do u_idx1 = 1, min(ugroup, Nu_L100) !uL100
  3900.                 if (u_idx .eq. u_idx1) then
  3901.                    factor = 0.5
  3902.                 elseif (u_idx .gt. u_idx1) then
  3903.                    factor = 1.0
  3904.                 else
  3905.                    factor = 0.
  3906.                 endif  
  3907.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup) &
  3908.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L1L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
  3909.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L1L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
  3910.        
  3911.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3912.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L1L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
  3913.                     &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L1L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
  3914.              enddo
  3915.            endif
  3916.            
  3917.        
  3918.    
  3919.            if (ugroup == u_idx) then
  3920.              pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -loss_uL111t(ugroup)*abL0_L1(ugroup)
  3921.              pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-loss_uL111t(ugroup)*abL1_L1(ugroup)
  3922.             !- k_SIAm
  3923.              do isia =1, N_SIAs_m
  3924.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_SIAs_uL111t(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)
  3925.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_SIAs_uL111t(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)
  3926.              enddo
  3927.             !- k_VACs
  3928.              do nvac = 1, N_VACs
  3929.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_VACs_uL111t(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)
  3930.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_VACs_uL111t(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)
  3931.              enddo
  3932.             !- k_L111                                        
  3933.              do isia = N_loop_start, N_L111
  3934.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_L111_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)
  3935.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)
  3936.              enddo
  3937.              do isia = N_loop_start, N_L111t
  3938.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_L111t_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)
  3939.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111t_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)
  3940.              enddo
  3941.              do isia = N_loop_start, N_L100
  3942.                 pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)  -k_L100_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL100(isia)
  3943.                 pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L100_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL100(isia)
  3944.              enddo
  3945.            
  3946.              pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   -g_SIA_uL111t(ugroup)*abL0_L1(ugroup)
  3947.              pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_SIA_uL111t(ugroup)*abL1_L1(ugroup)
  3948.              pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   -g_VAC_uL111t(ugroup)*abL0_L1(ugroup)
  3949.              pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_VAC_uL111t(ugroup)*abL1_L1(ugroup)
  3950.    
  3951.             !+uL100    
  3952.              do u_idx1 = 1, Nu_L100
  3953.                 do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t,Nu_L100)
  3954.                     pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3955.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
  3956.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
  3957.                     pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3958.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
  3959.                                 &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
  3960.                 enddo
  3961.              enddo
  3962.             !+uL111t       
  3963.              do u_idx1 = 1, Nu_L111t
  3964.                  do u_idx2 = max(u_idx1,ugroup), Nu_L111t
  3965.                     pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  3966.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
  3967.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  3968.                     pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  3969.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
  3970.                                 &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  3971.                  enddo
  3972.              enddo
  3973.    
  3974.            
  3975.            
  3976.            
  3977.            endif
  3978.        
  3979.          
  3980.          
  3981.          
  3982.    
  3983.         enddo
  3984.        
  3985.        
  3986.         !--L100
  3987.         do isia = N_loop_start, N_L100
  3988.            pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L100_uL111t(isia,u_idx)*adft_L1(u_idx)*CL100(isia)
  3989.         enddo
  3990.        
  3991.         !--L100L0,L1
  3992.         do ugroup = 1, Nu_L100
  3993.        
  3994.           do u_idx2 = max(u_idx,ugroup), max(Nu_L111t, Nu_L100)
  3995.              pd(N_offL100+ugroup) = pd(N_offL100+ugroup)     &
  3996.                                     &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li0L1(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
  3997.                                     &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li1L1(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
  3998.              pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &
  3999.                                 &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li0L1(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
  4000.                                 &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li1L1(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
  4001.           enddo
  4002.    
  4003.           do u_idx2 = 1, ugroup
  4004.              if (u_idx2 .eq. u_idx) then
  4005.                 factor = 0.5
  4006.              elseif (u_idx2 .gt. u_idx) then
  4007.                 factor = 1.0
  4008.              else
  4009.                 factor = 0.
  4010.              endif
  4011.              pd(N_offL100+ugroup) = pd(N_offL100+ugroup)    &
  4012.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L0L1(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
  4013.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L1L1(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
  4014.                                                                                        
  4015.              pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &                        
  4016.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L0L1(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
  4017.                                 &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L1L1(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
  4018.           enddo
  4019.         enddo
  4020.    
  4021.           !--UVAcs,LO,L1
  4022.        
  4023.          
  4024.         !~~trap
  4025.         pd(bin_length) = -k_trap_uL111t(u_idx)*adft_L1(u_idx)*Ctrap
  4026.        
  4027.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4028.     !----------L100 block--------------------
  4029.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4030.     elseif (j >= N_offL111tL1+N_loop_start .and. j <= N_offL100) then
  4031.         nsia = j -N_offL111tL1
  4032.         !--SIAs
  4033.         do isia = 1,N_SIAs_m
  4034.            pd(N_sink+isia) = pd(N_sink+isia) -k_SIAs_L100(isia,nsia)*CSIAs(isia)
  4035.            if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs_m) then
  4036.               pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_L100(nsia-isia,nsia)*CVACs(nsia-isia)
  4037.            endif
  4038.         enddo
  4039.         pd(N_sink+1) = pd(N_sink+1)+ g_SIA_L100(nsia)
  4040.    
  4041.     !--VACs
  4042.         do nvac = 1, N_VACs_m
  4043.            pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_L100(nvac,nsia)*CVACs(nvac)
  4044.            if ((nsia+nvac) .le. N_VACs_m) then
  4045.               pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_L100(nsia+nvac,nsia)*CVACs(nsia+nvac)
  4046.            endif
  4047.         enddo
  4048.    
  4049.         pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_L100(nsia)
  4050.    
  4051.    
  4052.     !add cascade overlap 01032022
  4053.         do isia = N_SIAs_m+1, N_C15
  4054.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas).and. (isia .eq. nsia)) then
  4055.               pd(N_offVAC+isia) = pd(N_offVAC+isia) +f_L100toC15(nsia)*CascadeRate
  4056.            endif
  4057.         enddo
  4058.    
  4059.         !--L111
  4060.         do isia = N_loop_start, N_L111
  4061.            pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L100((isia),(nsia))*CL111(isia)
  4062.            if ((isia-nsia) .gt. nsia) then
  4063.              pd(N_offC15+isia) =pd(N_offC15+isia) +k_L111_L100((isia-nsia),(nsia))*CL111(isia-nsia)
  4064.            endif
  4065.         !add cascade overlap 01012022
  4066.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
  4067.               pd(N_offC15+isia) =pd(N_offC15+isia)+(1-f111t)*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate
  4068.            endif
  4069.         enddo
  4070.    
  4071.         !--L111t
  4072.         do isia = N_loop_start, N_L111t
  4073.            pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_L100((isia),(nsia))*CL111t(isia)
  4074.            if ((isia-nsia) .gt. nsia) then
  4075.               pd(N_offL111+isia) =pd(N_offL111+isia) +k_L111t_L100((isia-nsia),(nsia))*CL111t(isia-nsia)
  4076.            endif
  4077.         !add cascade overlap 01012022
  4078.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
  4079.               pd(N_offL111+isia) =pd(N_offL111+isia)+f111t*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate
  4080.            endif
  4081.         enddo
  4082.    
  4083.    
  4084.         !--L111tL0,L1
  4085.         do u_idx = 1, Nu_L111t
  4086.            pd(N_offL111t+u_idx)  =-k_L100_uL111t(nsia,u_idx)*(abL0_L0(u_idx)*CL111tL0(u_idx)+abL0_L1(u_idx)*CL111tL1(u_idx))
  4087.            pd(N_offL111tL0+u_idx)=-k_L100_uL111t(nsia,u_idx)*(abL1_L0(u_idx)*CL111tL0(u_idx)+abL1_L1(u_idx)*CL111tL1(u_idx))
  4088.        
  4089.            st = mesh_ust(u_idx) -nsia
  4090.            ed = mesh_ued(u_idx) -nsia
  4091.            do ugroup2 = 1, u_idx
  4092.               st1 = mesh_ust(ugroup2)
  4093.               ed1 = mesh_ued(ugroup2)
  4094.               if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4095.                  pd(N_offL111t+u_idx)   =pd(N_offL111t+u_idx)   +k_L100_uL111t(nsia,ugroup2)&
  4096.                    &*(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
  4097.                  pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L100_uL111t(nsia,ugroup2)&
  4098.                    & *(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
  4099.               endif
  4100.            enddo
  4101.    
  4102.         !from k_L111t
  4103.           do isia = nsia+1, N_L111t
  4104.              if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
  4105.                 pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx)     +k_L111t_L100(isia,nsia)*CL111t(isia)*uf0(u_idx)
  4106.                 pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_L100(isia,nsia)*CL111t(isia) &
  4107.                                                             &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
  4108.             endif
  4109.           enddo
  4110.        
  4111.         enddo
  4112.    
  4113.    
  4114.         !--L100
  4115.         do isia = N_loop_start, N_L100
  4116.            if (((isia-nsia) .ge. N_loop_start) .and. (nsia .ge. (isia-nsia))) then
  4117.               pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_L111t_L100(isia-nsia,nsia)*CL111t(isia-nsia)
  4118.               pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_L111_L100(isia-nsia,nsia)*CL111(isia-nsia)
  4119.            endif
  4120.    
  4121.            if ((isia-nsia) .ge. 1 .and. (isia-nsia) .le. N_SIAs_m) then
  4122.               pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia)+k_SIAs_L100(isia-nsia,nsia)*CSIAs(isia-nsia)
  4123.            endif
  4124.        
  4125.            if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs_m) then
  4126.               pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_VACs_L100(nsia-isia,nsia)*CVACs(nsia-isia)
  4127.            endif
  4128.    
  4129.            if ((isia+1) .eq. nsia) then
  4130.               pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +g_SIA_L100(isia+1)
  4131.            endif
  4132.            if ((isia-1) .eq. nsia) then
  4133.               pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +g_VAC_L100(isia-1)
  4134.            endif
  4135.    
  4136.            if (isia == nsia) then
  4137.             do isia2 = N_loop_start, N_L111t
  4138.                pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_L111t_L100(isia2,nsia)*CL111t(isia2)
  4139.             enddo
  4140.             do isia2 = N_loop_start, N_L111
  4141.                 pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_L111_L100(isia2,nsia)*CL111(isia2)
  4142.             enddo
  4143.             do isia2 = 1, N_SIAs_m
  4144.                 pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_SIAs_L100(isia2,nsia)*CSIAs(isia2)
  4145.             enddo
  4146.             do nvac = 1, N_VACs_m
  4147.                pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_VACs_L100(nvac,(nsia))*CVACs(nvac)
  4148.             enddo
  4149.             if (nsia .gt. N_loop_start) then
  4150.                pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -g_SIA_L100(nsia)
  4151.             endif
  4152.    
  4153.             pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -g_VAC_L100(nsia)
  4154.    
  4155.             do ugroup = 1, Nu_L111t
  4156.                pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L100_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111tL0(ugroup)&
  4157.                                                         &-k_L100_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)
  4158.             enddo
  4159.            endif
  4160.        
  4161.         !add cascade overlap 01012022
  4162.            if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
  4163.               pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -(1-f_L100toL100(nsia))*CascadeRate
  4164.            endif
  4165.         enddo
  4166.        
  4167.         !--L100L0,L1
  4168.         do ugroup =1, Nu_L100
  4169.            do isia = 1, N_SIAs_m
  4170.               if ((nsia +isia) .ge. mesh_ust(ugroup) .and. (nsia +isia) .le. mesh_ued(ugroup)) then
  4171.                  pd(N_offL100+ugroup)   = pd(N_offL100+ugroup)  + k_SIAs_L100(isia,nsia)*CSIAs(isia)*uf0(ugroup)
  4172.                  pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup)+ k_SIAs_L100(isia,nsia)*CSIAs(isia) &
  4173.                                                         &*(nsia +isia -mesh_x0(ugroup))*uf1(ugroup)
  4174.               endif
  4175.            enddo
  4176.        
  4177.            do isia = N_loop_start, nsia
  4178.                if ((nsia +isia) .ge. mesh_ust(ugroup) .and. (nsia +isia) .le. mesh_ued(ugroup)) then
  4179.                   pd(N_offL100+ugroup)   = pd(N_offL100+ugroup)  +k_L111_L100(isia,nsia)*CL111(isia)*uf0(ugroup)  &
  4180.                                                         & +k_L111t_L100(isia,nsia)*CL111t(isia)*uf0(ugroup)
  4181.                   pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup)                                                 &
  4182.                    & +k_L111_L100(isia,nsia)*CL111(isia)*(nsia +isia -mesh_x0(ugroup))*uf1(ugroup) &
  4183.                    & +k_L111t_L100(isia,nsia)*CL111t(isia)*(nsia +isia -mesh_x0(ugroup))*uf1(ugroup)
  4184.                endif
  4185.            enddo
  4186.            if (ugroup .eq. 1 .and. nsia .eq. N_L100) then
  4187.               pd(N_offL100+ugroup)   = pd(N_offL100+ugroup) +g_VAC_L100(N_L100)*uf0(ugroup)
  4188.               pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup)+ g_VAC_L100(N_L100)*(N_L100+1-mesh_x0(ugroup))*uf1(ugroup)
  4189.            endif
  4190.         enddo
  4191.    
  4192.    
  4193.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4194.     !----------uL100tL0 block----------------
  4195.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4196.     elseif (j >= N_offL100+1 .and. j <= N_offL100L0) then
  4197.         u_idx = j -N_offL100
  4198.    
  4199.         !--SIAs
  4200.         do isia = 1, N_SIAs_m
  4201.             pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL100(isia,u_idx)*adft_L0(u_idx)*CSIAs(isia)
  4202.             do nvac = 1, N_VACs_m
  4203.                if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
  4204.                   pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)
  4205.                endif
  4206.             enddo
  4207.         enddo
  4208.         pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL100(u_idx)*adft_L0(u_idx)
  4209.        
  4210.         !--VACs
  4211.         do nvac = 1,N_VACs_m
  4212.            pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL100(nvac,u_idx)*adft_L0(u_idx)*CVACs(nvac)
  4213.            do temp = 1, N_VACs_m
  4214.               if ((temp .ge. mesh_ust(u_idx)+nvac) .and. (temp .le. mesh_ued(u_idx))) then
  4215.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL100(temp,u_idx)*CVACs(temp)
  4216.               endif
  4217.            enddo
  4218.         enddo
  4219.         pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL100(u_idx)*adft_L0(u_idx)
  4220.        
  4221.     !--L111
  4222.         do isia = N_loop_start, N_L111
  4223.            pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL100(isia,u_idx)*adft_L0(u_idx)*CL111(isia)
  4224.         enddo
  4225.    
  4226.     !--L111t
  4227.         do isia = N_loop_start, N_L111t
  4228.            pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL100(isia,u_idx)*adft_L0(u_idx)*CL111t(isia)
  4229.         enddo
  4230.    
  4231.         !--L111tL0,L1
  4232.         do ugroup = 1, Nu_L111t
  4233.            do u_idx1 = max(u_idx,ugroup), max(Nu_L111t,Nu_L100)
  4234.               pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  4235.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  4236.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  4237.               pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  4238.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  4239.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  4240.            enddo
  4241.        
  4242.            if (u_idx .le. ugroup) then
  4243.               do u_idx1 = 1, ugroup
  4244.                  if (u_idx1 .eq. u_idx) then
  4245.                      factor = 0.5
  4246.                  elseif (u_idx1 .gt. u_idx) then
  4247.                        factor = 1.0
  4248.                  else
  4249.                        factor = 0.
  4250.                  endif  
  4251.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  4252.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L0(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
  4253.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L0(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
  4254.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  4255.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L0(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
  4256.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L0(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
  4257.               enddo
  4258.            endif
  4259.        
  4260.         enddo
  4261.        
  4262.         !--L100
  4263.         do isia = N_loop_start, N_L100
  4264.            do nvac = 1, N_VACs_m
  4265.               if (((nvac+isia).ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
  4266.                  pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)
  4267.               endif
  4268.            enddo
  4269.        
  4270.            if (isia .eq. N_L100 .and. u_idx .eq. 1) then
  4271.               pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +g_SIA_uL100(1)
  4272.            endif
  4273.         enddo
  4274.        
  4275.         !--L100L0,L1
  4276.         st1 = mesh_ust(u_idx)
  4277.         ed1 = mesh_ued(u_idx)
  4278.         do ugroup = 1, Nu_L100
  4279.    
  4280.         !+SIA          
  4281.             do isia = 1, N_SIAs_m
  4282.                st = mesh_ust(ugroup) -isia
  4283.                ed = mesh_ued(ugroup) -isia
  4284.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4285.                   pd(N_offL100+ugroup)  = pd(N_offL100+ugroup) +k_SIAs_uL100(isia,u_idx)&
  4286.                                                         &*akaL0_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
  4287.                   pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup)+k_SIAs_uL100(isia,u_idx)&
  4288.                                                         &*akaL1_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
  4289.                endif
  4290.             enddo
  4291.         !+vac
  4292.             do nvac = 1, N_VACs_m
  4293.                st = mesh_ust(ugroup)+nvac
  4294.                ed = mesh_ued(ugroup)+nvac
  4295.                 if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4296.                    pd(N_offL100+ugroup)  =pd(N_offL100+ugroup) +k_VACs_uL100(nvac,u_idx)&
  4297.                                         &*akaL0_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
  4298.                              
  4299.                    pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_VACs_uL100(nvac,u_idx)&
  4300.                                                         &*akaL1_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
  4301.                 endif
  4302.             enddo
  4303.         !+L111
  4304.             do isia = N_loop_start, N_L111
  4305.                st = mesh_ust(ugroup) -isia
  4306.                ed = mesh_ued(ugroup) -isia
  4307.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4308.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup) +k_L111_uL100(isia,u_idx)&
  4309.                                                         &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
  4310.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) +k_L111_uL100(isia,u_idx)&
  4311.                                                         &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
  4312.                endif
  4313.             enddo
  4314.         !+L111t
  4315.             do isia = N_loop_start, N_L111t
  4316.                st = mesh_ust(ugroup) -isia
  4317.                ed = mesh_ued(ugroup) -isia
  4318.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4319.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  +k_L111t_uL100(isia,u_idx)&
  4320.                                                         &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
  4321.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_L111t_uL100(isia,u_idx)&
  4322.                                                         &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
  4323.                endif
  4324.             enddo
  4325.    
  4326.             if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
  4327.                pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  +g_SIA_uL100(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)
  4328.             pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_SIA_uL100(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)
  4329.             endif
  4330.    
  4331.             if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
  4332.                pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  +g_VAC_uL100(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)
  4333.                pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_VAC_uL100(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)
  4334.             endif
  4335.        
  4336.    
  4337.         !group+ from uL100     
  4338.             if (u_idx .le. ugroup) then
  4339.                do u_idx1 = 1, min(ugroup, Nu_L111t)
  4340.                   if (u_idx .eq. u_idx1) then
  4341.                    factor = 0.5
  4342.                   elseif (u_idx .ge. u_idx1) then
  4343.                     factor = 1.0
  4344.                   else
  4345.                     factor = 0.
  4346.                   endif  
  4347.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup) &
  4348.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
  4349.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  4350.                  
  4351.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) &
  4352.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
  4353.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  4354.                enddo
  4355.             endif
  4356.        
  4357.    
  4358.             if (ugroup == u_idx) then
  4359.         !- k_SIAm
  4360.                do isia =1, N_SIAs_m
  4361.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_SIAs_uL100(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)
  4362.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_SIAs_uL100(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)
  4363.                enddo
  4364.         !- k_VACs
  4365.                do nvac = 1, N_VACs_m
  4366.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_VACs_uL100(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)
  4367.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_VACs_uL100(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)
  4368.                enddo
  4369.         !- k_L111                                        
  4370.                do isia = N_loop_start, N_L111
  4371.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_L111_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)
  4372.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)
  4373.                enddo
  4374.                do isia = N_loop_start, N_L111t
  4375.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_L111t_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)
  4376.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111t_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)
  4377.                enddo
  4378.                
  4379.                pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)   -g_SIA_uL100(ugroup)*abL0_L0(ugroup)
  4380.                pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_SIA_uL100(ugroup)*abL1_L0(ugroup)
  4381.                pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)   -g_VAC_uL100(ugroup)*abL0_L0(ugroup)
  4382.                pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_VAC_uL100(ugroup)*abL1_L0(ugroup)
  4383.    
  4384.                do u_idx1 =1, Nu_L111t
  4385.                   do u_idx2 =max(u_idx1,ugroup), max(Nu_L100, Nu_L111t)
  4386.                      pd(N_offL100+ugroup)  = pd(N_offL100+ugroup)   &
  4387.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
  4388.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  4389.                      pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup) &                        
  4390.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
  4391.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  4392.                   enddo
  4393.                enddo
  4394.        
  4395.             endif
  4396.        
  4397.         !write (*,*) "L0_colume", u_idx, ugroup, pd(N_offL100+ugroup)
  4398.         enddo
  4399.    
  4400.        
  4401.    
  4402.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4403.     !----------uL100tL1 block----------------
  4404.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4405.     elseif (j >= N_offL100L0+1 .and. j <= N_offL100L0+Nu_L100) then
  4406.         u_idx = j -N_offL100L0
  4407.         !--SIAs
  4408.         do isia = 1, N_SIAs_m
  4409.            pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL100(isia,u_idx)*adft_L1(u_idx)*CSIAs(isia)
  4410.            do nvac = 1, N_VACs_m
  4411.               if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
  4412.                  pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)
  4413.               endif
  4414.            enddo
  4415.         enddo
  4416.         pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL100(u_idx)*adft_L1(u_idx)
  4417.        
  4418.         !--VACs
  4419.         do nvac = 1,N_VACs_m
  4420.            pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL100(nvac,u_idx)*adft_L1(u_idx)*CVACs(nvac)
  4421.            do temp = 1, N_VACs_m
  4422.               if ((temp .ge. mesh_ust(u_idx)+nvac) .and. (temp .le. mesh_ued(u_idx))) then
  4423.                  pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL100(temp,u_idx)*CVACs(temp)
  4424.               endif
  4425.            enddo
  4426.         enddo
  4427.         pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL100(u_idx)*adft_L1(u_idx)
  4428.        
  4429.     !--L111
  4430.         do isia = N_loop_start, N_L111
  4431.            pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL100(isia,u_idx)*adft_L1(u_idx)*CL111(isia)
  4432.         enddo
  4433.    
  4434.     !--L111t
  4435.         do isia = N_loop_start, N_L111t
  4436.            pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL100(isia,u_idx)*adft_L1(u_idx)*CL111t(isia)
  4437.         enddo
  4438.    
  4439.         !--L111tL0,L1
  4440.         do ugroup = 1, Nu_L111t
  4441.            do u_idx1 = max(u_idx,ugroup), max(Nu_L111t,Nu_L100)
  4442.               pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  4443.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  4444.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  4445.               pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  4446.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
  4447.                             &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
  4448.            enddo
  4449.        
  4450.            if (u_idx .le. ugroup) then
  4451.               do u_idx1 = 1, ugroup
  4452.                  if (u_idx1 .eq. u_idx) then
  4453.                     factor = 0.5
  4454.                  elseif (u_idx1 .gt. u_idx) then
  4455.                     factor = 1.0
  4456.                  else
  4457.                     factor = 0.
  4458.                  endif  
  4459.                  pd(N_offL111t+ugroup)  =pd(N_offL111t+ugroup)   &
  4460.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L1(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
  4461.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L1(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
  4462.                  pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
  4463.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L1(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
  4464.                         &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L1(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
  4465.               enddo
  4466.            endif
  4467.        
  4468.         enddo
  4469.        
  4470.         !--L100
  4471.         do isia = N_loop_start, N_L100
  4472.             do nvac = 1, N_VACs_m
  4473.                if (((nvac+isia).ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
  4474.                   pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_VACs_uL100(nvac,u_idx)*v1(isia+nvac,u_idx)*CVACs(nvac)
  4475.                endif
  4476.             enddo
  4477.        
  4478.             if (isia .eq. N_L100 .and. u_idx .eq. 1) then
  4479.                pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +g_SIA_uL100(1)*v1(N_L100+1,1)
  4480.             endif
  4481.         enddo
  4482.        
  4483.         !--L100L0,L1
  4484.         st1 = mesh_ust(u_idx)
  4485.         ed1 = mesh_ued(u_idx)
  4486.         do ugroup = 1, Nu_L100
  4487.    
  4488.         !+SIA          
  4489.             do isia = 1, N_SIAs_m
  4490.                st = mesh_ust(ugroup) -isia
  4491.                ed = mesh_ued(ugroup) -isia
  4492.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4493.                   pd(N_offL100+ugroup)  = pd(N_offL100+ugroup) +k_SIAs_uL100(isia,u_idx)&
  4494.                                                         &*akaL0_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
  4495.                   pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup)+k_SIAs_uL100(isia,u_idx)&
  4496.                                                         &*akaL1_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
  4497.                endif
  4498.             enddo
  4499.         !+vac
  4500.             do nvac = 1, N_VACs_m
  4501.                st = mesh_ust(ugroup)+nvac
  4502.                ed = mesh_ued(ugroup)+nvac
  4503.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4504.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup) +k_VACs_uL100(nvac,u_idx)&
  4505.                                                         &*akaL0_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
  4506.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_VACs_uL100(nvac,u_idx)&
  4507.                                                         &*akaL1_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
  4508.                endif
  4509.             enddo
  4510.         !+L111
  4511.             do isia = N_loop_start, N_L111
  4512.                st = mesh_ust(ugroup) -isia
  4513.                ed = mesh_ued(ugroup) -isia
  4514.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4515.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup) +k_L111_uL100(isia,u_idx)&
  4516.                                                         &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
  4517.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) +k_L111_uL100(isia,u_idx)&
  4518.                                                         &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
  4519.                endif
  4520.             enddo
  4521.         !+L111t
  4522.             do isia = N_loop_start, N_L111t
  4523.                st = mesh_ust(ugroup) -isia
  4524.                ed = mesh_ued(ugroup) -isia
  4525.                if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
  4526.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  +k_L111t_uL100(isia,u_idx)&
  4527.                                                         &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
  4528.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_L111t_uL100(isia,u_idx)&
  4529.                                                         &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
  4530.                endif
  4531.             enddo
  4532.    
  4533.             if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
  4534.                 pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  +g_SIA_uL100(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)
  4535.                 pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_SIA_uL100(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)
  4536.             endif
  4537.    
  4538.             if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
  4539.                pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  +g_VAC_uL100(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)
  4540.                pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_VAC_uL100(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)
  4541.             endif
  4542.    
  4543.         !group+ from uL111t    
  4544.             if (u_idx .le. ugroup) then
  4545.                do u_idx1 = 1, min(ugroup, Nu_L111t) !uL111t
  4546.                   if (u_idx .eq. u_idx1) then
  4547.                      factor = 0.5
  4548.                   elseif (u_idx .ge. u_idx1) then
  4549.                      factor = 1.0
  4550.                   else
  4551.                      factor = 0.
  4552.                   endif  
  4553.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup) &
  4554.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
  4555.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  4556.        
  4557.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) &
  4558.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
  4559.                     &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
  4560.                enddo
  4561.             endif
  4562.    
  4563.    
  4564.             if (ugroup == u_idx) then
  4565.         !- k_SIAm
  4566.                do isia =1, N_SIAs_m
  4567.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_SIAs_uL100(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)
  4568.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_SIAs_uL100(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)
  4569.                enddo
  4570.         !- k_VACs
  4571.                do nvac = 1, N_VACs_m
  4572.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_VACs_uL100(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)
  4573.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_VACs_uL100(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)
  4574.                enddo
  4575.         !- k_L111                                        
  4576.                do isia = N_loop_start, N_L111
  4577.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_L111_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)
  4578.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)
  4579.                enddo
  4580.                do isia = N_loop_start, N_L111t
  4581.                   pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)  -k_L111t_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)
  4582.                   pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111t_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)
  4583.                enddo
  4584.                do u_idx1 =1, Nu_L111t
  4585.                   do u_idx2 =max(u_idx1,ugroup), max(Nu_L100, Nu_L111t)
  4586.                      pd(N_offL100+ugroup)  = pd(N_offL100+ugroup)   &
  4587.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
  4588.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  4589.                      pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup) &                        
  4590.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
  4591.                                     &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
  4592.                   enddo
  4593.                enddo
  4594.                
  4595.                pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)   -g_SIA_uL100(ugroup)*abL0_L1(ugroup)
  4596.                pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_SIA_uL100(ugroup)*abL1_L1(ugroup)
  4597.                pd(N_offL100+ugroup)  =pd(N_offL100+ugroup)   -g_VAC_uL100(ugroup)*abL0_L1(ugroup)
  4598.                pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_VAC_uL100(ugroup)*abL1_L1(ugroup)
  4599.    
  4600.             endif
  4601.        
  4602.         !write (*,*) "L1_colume", u_idx, ugroup, pd(N_offL100+ugroup)
  4603.         enddo
  4604.    
  4605.     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  4606.     !----------trap--------------------
  4607.     elseif (j == bin_length) then
  4608.     !L111
  4609.         do isia = N_loop_start, N_L111
  4610.             pd(N_offC15+isia) = pd(N_offC15+isia) -k_trap_L111(isia)*CL111(isia)
  4611.         enddo
  4612.     !L111t
  4613.        do isia = N_loop_start, N_L111t
  4614.             pd(N_offL111+isia) = pd(N_offL111+isia) +k_trap_L111(isia)*CL111(isia)
  4615.        enddo
  4616.    
  4617.     ! trap
  4618.     !do isia = N_loop_start, N_L111
  4619.     !   pd(bin_length) = pd(bin_length) -k_trap_L111(isia)*CL111(isia)
  4620.     !enddo
  4621.        do isia = N_loop_start, N_L111t
  4622.           pd(bin_length) = pd(bin_length) -k_trap_L111t(isia)*CL111t(isia)
  4623.        enddo
  4624.        do ugroup = 1, Nu_L111t
  4625.           pd(bin_length) = pd(bin_length) -k_trap_uL111t(ugroup)*adft_L0(ugroup)*CL111tL0(ugroup) &
  4626.                                         &-k_trap_uL111t(ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)
  4627.        enddo
  4628.        do nvac =1, N_VACs_m
  4629.           pd(bin_length) = pd(bin_length) -k_trap_VACs(nvac)*CVACs(nvac)
  4630.        enddo
  4631.     endif
  4632.    
  4633.     return
  4634.    
  4635.     end subroutine jac_column_f77
  4636.    
  4637.     ! wrapper for jac_col
  4638.         subroutine jac_col_forpy(neq, t, u, j, ia, ja, pd )
  4639.         use coeffi
  4640.        
  4641.         implicit none
  4642.         interface
  4643.             subroutine jac_column_f77(neq, t, u, j, ia, ja, pd)
  4644.     !f2py     intent(hide) neq, ia, ja
  4645.     !f2py     intent(out) pd
  4646.             integer neq, j, ia, ja
  4647.             double precision t, pd
  4648.             double precision, target :: u
  4649.             dimension u(neq), ia(neq + 1), ja(*), pd(neq)
  4650.            
  4651.             end subroutine jac_column_f77
  4652.         end interface
  4653.         intent(out) pd
  4654.         integer neq, j, ia, ja
  4655.         double precision t, pd
  4656.    
  4657.         double precision, intent(in) :: u
  4658.         dimension u(neq), ia(neq + 1), ja(*), pd(neq)
  4659.        
  4660.         call jac_column_f77(neq,t, u, j,  ia,   ja, pd)
  4661.    
  4662.         end subroutine jac_col_forpy
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement