Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module coeffi
- implicit none
- ! Control variables
- integer :: ncall, fisorion
- !20210608
- !integers defining the size of the system
- integer :: N_loop_start, N_C15_st
- integer :: N_SIAs_m, N_VACs_m, N_C15, N_VACs, N_L111, N_L111t, N_L100, Nu_L111t, Nu_L100, Nu_VACs
- double precision :: dparate, f_g2s
- !absorption rate
- double precision, dimension(:,:), pointer :: k_SIAs_SIAs, k_SIAs_VACs, k_SIAs_C15,k_SIAs_L111,k_SIAs_L111t,k_SIAs_L100
- double precision, dimension(:,:), pointer :: k_VACs_VACs, k_VACs_C15, k_VACs_L111,k_VACs_L111t, k_VACs_L100
- double precision, dimension(:,:), pointer :: k_VACs_uVACs,k_L111_L111, k_L111_L111t,k_L111_L100
- double precision, dimension(:,:), pointer :: k_L111t_L111t,k_L111t_L100, k_C15_L111t,k_SIAs_uVACs
- double precision, dimension(:,:), pointer :: k_L111t_uVACs,k_L111_uVACs, k_uL111t_uVACs
- !emission rate
- double precision, dimension(:), pointer :: g_SIA_SIAs, g_VAC_SIAs,g_SIA_VACs,g_VAC_VACs,g_SIA_C15, g_VAC_C15
- double precision, dimension(:), pointer :: g_SIA_L111, g_VAC_L111,g_SIA_L111t,g_VAC_L111t,g_SIA_L100, g_VAC_L100
- double precision, dimension(:), pointer :: g_trap_L111t, k_trap_L111, k_trap_L111t, k_trap_uL111t, k_trap_VACs
- double precision, dimension(:), pointer :: fcascade_SIAs_c15,fcascade_SIAs_L111,fcascade_SIAs_L100
- double precision, dimension(:), pointer :: fcascade_SIAs, fcascade_VACs,f_trans111, f_trans100
- double precision, dimension(:), pointer :: loss_SIAs, loss_VACs, loss_L111,loss_L111t
- !mesh para
- integer, dimension(:), pointer :: mesh_x0, mesh_ust, mesh_ued, mesh_dlta
- !equlibriem concentration
- double precision, dimension(:), pointer :: Ceq_SIAs, Ceq_VACs
- double precision, dimension(:), pointer :: testval1
- double precision, dimension(:,:), pointer :: testval2
- double precision, dimension(:,:,:), pointer :: testval3
- double precision, dimension(:,:), pointer :: k_SIAs_uL111t, k_VACs_uL111t, k_L111_uL111t, k_L111t_uL111t, k_L100_uL111t
- double precision, dimension(:), pointer :: g_SIA_uVACs,g_VAC_uVACs,g_SIA_uL111t, g_VAC_uL111t, loss_uL111t
- !for L100 group
- double precision, dimension(:,:), pointer :: k_SIAs_uL100, k_VACs_uL100, k_L111_uL100, k_L111t_uL100
- double precision, dimension(:), pointer :: g_SIA_uL100, g_VAC_uL100
- double precision, dimension(:,:), pointer :: k_uL111t_uL111t, k_uL111t_uL100
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !factor of +group_k = dft + group_j
- double precision, dimension(:,:,:), pointer ::akaL0_Idef_L0, akaL0_Idef_L1, akaL1_Idef_L0, akaL1_Idef_L1
- double precision, dimension(:,:,:), pointer ::akaL0_Vdef_L0, akaL0_Vdef_L1, akaL1_Vdef_L0, akaL1_Vdef_L1
- double precision, dimension(:,:,:), pointer ::akavL0_Idef_L0, akavL0_Idef_L1, akavL1_Idef_L0, akavL1_Idef_L1
- double precision, dimension(:,:,:), pointer ::akavL0_Vdef_L0, akavL0_Vdef_L1, akavL1_Vdef_L0, akavL1_Vdef_L1
- !factor of -group_j = (dft) + group_j(full group)
- double precision, dimension(:), pointer :: abL0_L0, abL0_L1, abL1_L0, abL1_L1
- !factor of dft = (dft) + group_j
- double precision, dimension(:), pointer :: adft_L0, adft_L1
- !factor of +group_k = group_i + group_j
- double precision, dimension(:,:,:), pointer :: akaL0_L0L0, akaL0_L0L1, akaL0_L1L0, akaL0_L1L1
- double precision, dimension(:,:,:), pointer :: akaL1_L0L0, akaL1_L0L1, akaL1_L1L0, akaL1_L1L1
- !factor of -group_i (group_i + group_j -> group_k)
- double precision, dimension(:,:,:), pointer :: akbLi0_Li0L0, akbLi0_Li0L1, akbLi0_Li1L0, akbLi0_Li1L1
- double precision, dimension(:,:,:), pointer :: akbLi1_Li0L0, akbLi1_Li0L1, akbLi1_Li1L0, akbLi1_Li1L1
- !factor of +group_k = group_i + group_j
- double precision, dimension(:,:,:), pointer :: akavL0_L0L0, akavL0_L0L1, akavL0_L1L0, akavL0_L1L1
- double precision, dimension(:,:,:), pointer :: akavL1_L0L0, akavL1_L0L1, akavL1_L1L0, akavL1_L1L1
- !factor of -group_i (group_i + group_j -> group_k)
- double precision, dimension(:,:,:), pointer :: akbvLi0_Li0L0, akbvLi0_Li0L1, akbvLi0_Li1L0, akbvLi0_Li1L1
- double precision, dimension(:,:,:), pointer :: akbvLi1_Li0L0, akbvLi1_Li0L1, akbvLi1_Li1L0, akbvLi1_Li1L1
- !####################################################
- !add L111 trapped by C15 01052022
- integer :: N_lpc15
- !add cascade overlap parameters 01012022
- integer :: Nmax_cas, Nmin_cas
- double precision :: CascadeRate,f111t
- double precision, dimension(:), pointer :: f_L111toL100, f_L111ttoL100
- double precision, dimension(:), pointer :: f_L111toC15 , f_L111ttoC15
- double precision, dimension(:), pointer :: f_L100toC15 , f_L100toL100
- double precision, dimension(:), pointer :: f_C15toL100 , f_C15toC15
- double precision, dimension(:), pointer :: f_VACtoVAC
- contains
- double precision function v1(x,ugroup)
- implicit none
- integer x, ugroup
- v1 = 1.*(x-mesh_x0(ugroup))/(1+mesh_dlta(ugroup))
- return
- end function v1
- double precision function uf0(ugroup)
- implicit none
- integer ugroup
- uf0 = 1./(1+2*mesh_dlta(ugroup))
- return
- end function uf0
- double precision function uf1(ugroup)
- implicit none
- integer ugroup
- uf1 = 3./mesh_dlta(ugroup)/(1+2*mesh_dlta(ugroup))
- return
- end function uf1
- end module coeffi
- subroutine get_CascadeOverlap(f_L111toL100py,f_L111toC15py,f_L100toC15py, f_L100toL100py, &
- & f_C15toL100py, f_C15toC15py,f_VACtoVACpy,Nmax_caspy)
- use coeffi
- implicit none
- integer :: Nmax_caspy
- double precision, target :: f_L111toL100py(0:Nmax_caspy), f_L111toC15py(0:Nmax_caspy)
- double precision, target :: f_L100toC15py(0:Nmax_caspy), f_L100toL100py(0:Nmax_caspy)
- double precision, target :: f_C15toL100py(0:Nmax_caspy), f_C15toC15py(0:Nmax_caspy)
- double precision, target :: f_VACtoVACpy(0:Nmax_caspy)
- f_L111toL100 => f_L111toL100py
- f_L111ttoL100 => f_L111toL100py
- f_L111toC15 => f_L111toC15py
- f_L111ttoC15 => f_L111toC15py
- f_L100toC15 => f_L100toC15py
- f_L100toL100 => f_L100toL100py
- f_C15toL100 => f_C15toL100py
- f_C15toC15 => f_C15toC15py
- f_VACtoVAC => f_VACtoVACpy
- end subroutine get_CascadeOverlap
- !20210621 transfer subroutine from python to fortran
- !20210611 get irradiation paras
- subroutine Get_coeff_iff(fvpy,fsiapy_c15,fsiapy_L111,fsiapy_L100, N_VAC_maxpy,N_C15py)
- use coeffi
- implicit none
- integer :: binpy, N_VAC_maxpy, N_C15py, i
- double precision , target :: fvpy(0:N_VAC_maxpy)
- double precision , target :: fsiapy_c15(0:N_C15py), fsiapy_L111(0:N_C15py), fsiapy_L100(0:N_C15py)
- fcascade_VACs => fvpy
- fcascade_SIAs_c15 => fsiapy_c15
- fcascade_SIAs_L111 => fsiapy_L111
- fcascade_SIAs_L100 => fsiapy_L100
- do i=1, N_C15py
- write (*,*) fcascade_SIAs_c15(i), fcascade_SIAs_L111(i), fcascade_SIAs_L100(i),fcascade_VACs(i)
- enddo
- end subroutine Get_coeff_iff
- ! !20210611 get c15 collaspe paras
- subroutine Get_coeff_trancoeffi(f_trans111py, f_trans100py, N_C15py)
- use coeffi
- implicit none
- integer :: N_C15py
- double precision , target :: f_trans111py(0:N_C15py), f_trans100py(0:N_C15py)
- f_trans111 => f_trans111py
- f_trans100 => f_trans100py
- end subroutine Get_coeff_trancoeffi
- ! !20210611 get equlibriem cons of mobile species
- subroutine Get_coeff_equli_concen(Ceq_SIAs_py, Ceq_VACs_py,N_SIAs_mpy, N_VACs_mpy)
- use coeffi
- implicit none
- integer :: N_SIAs_mpy, N_VACs_mpy
- double precision , target :: Ceq_SIAs_py(0:N_SIAs_mpy), Ceq_VACs_py(0:N_VACs_mpy)
- Ceq_SIAs => Ceq_SIAs_py
- Ceq_VACs => Ceq_VACs_py
- end subroutine Get_coeff_equli_concen
- !20210621 get loss strength
- subroutine Get_coeff_loss(loss_SIAs_py, loss_VACs_py, loss_L111_py,loss_L111t_py,loss_uL111t_py, &
- & N_SIAs_mpy, N_VACs_mpy, N_L111py, N_L111t_py,ngroup_py)
- use coeffi
- implicit none
- integer :: N_SIAs_mpy, N_VACs_mpy, N_L111py, N_L111t_py, ngroup_py
- double precision , target :: loss_SIAs_py(0:N_SIAs_mpy), loss_VACs_py(0:N_VACs_mpy), &
- & loss_L111_py(0:N_L111py), loss_L111t_py(0:N_L111t_py), &
- & loss_uL111t_py(0:ngroup_py)
- loss_SIAs => loss_SIAs_py
- loss_VACs => loss_VACs_py
- loss_L111 => loss_L111_py
- loss_L111t => loss_L111t_py
- loss_uL111t => loss_uL111t_py
- end subroutine Get_coeff_loss
- subroutine Get_meshpara(mesh_ust_py, mesh_ued_py,mesh_dlta_py, mesh_x0_py,ngroup_py)
- use coeffi
- implicit none
- integer :: ngroup_py
- integer, target :: mesh_ust_py(0:ngroup_py),mesh_ued_py(0:ngroup_py)
- integer, target :: mesh_dlta_py(0:ngroup_py),mesh_x0_py(0:ngroup_py)
- mesh_ust => mesh_ust_py
- mesh_ued => mesh_ued_py
- mesh_dlta => mesh_dlta_py
- mesh_x0 => mesh_x0_py
- end subroutine Get_meshpara
- !20210608
- subroutine Get_coeff_SIAs_VACs_C15(kSIAs_SIAspy,kSIAs_VACspy,kSIAs_C15py,kVACs_VACspy,kVACs_C15py, &
- & gSIA_SIAspy, gVAC_SIAspy,gSIA_VACspy,gVAC_VACspy,gSIA_C15py,gVAC_C15py, &
- & N_SIAs_m_py, N_VACs_py,N_VACs_m_py, N_C15_py)
- use coeffi
- implicit none
- integer :: i
- integer :: N_SIAs_m_py, N_VACs_py,N_VACs_m_py, N_C15_py
- 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)
- 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)
- 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)
- double precision, target :: gSIA_VACspy(0:N_VACs_py), gVAC_VACspy(0:N_VACs_py)
- double precision, target :: gSIA_C15py(0:N_C15_py), gVAC_C15py(0:N_C15_py)
- k_SIAs_SIAs => kSIAs_SIAspy
- k_SIAs_VACs => kSIAs_VACspy
- k_SIAs_C15 => kSIAs_C15py
- k_VACs_VACs => kVACs_VACspy
- k_VACs_C15 => kVACs_C15py
- g_SIA_SIAs => gSIA_SIAspy
- g_VAC_SIAs => gVAC_SIAspy
- g_SIA_VACs => gSIA_VACspy
- g_VAC_VACs => gVAC_VACspy
- g_SIA_C15 => gSIA_C15py
- g_VAC_C15 => gVAC_C15py
- end subroutine Get_coeff_SIAs_VACs_C15
- !20220216
- subroutine Get_coeff_loop(kSIAs_L111py,kVACs_L111py,gVAC_L111py,gSIA_L111py,kL111_L111py,kL111_L111tpy, &
- &kL111_L100py, kSIAs_L111tpy, kVACs_L111tpy, gV_L111tpy, gSIA_L111tpy, &
- &kL111t_L111tpy, kL111t_L100py, gV_L100py, gSIA_L100py,kSIAs_L100py,kVACs_L100py,&
- &ktrap_L111py,ktrap_L111tpy, ktrap_uL111tpy,&
- &ktrap_VACspy, gtrap_L111tpy, kC15_L111tpy,&
- &N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy, N_L100py, &
- &N_ulpc15_py, N_C15_py,N_ugroup_py)
- use coeffi
- implicit none
- integer :: i, N_ulpc15_py, N_C15_py, N_ugroup_py
- integer :: N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy,N_L100py
- double precision, target :: kSIAs_L111py(0:N_SIAs_mpy,0:N_L111py), kVACs_L111py(0:N_VACs_py,0:N_L111py)
- double precision, target :: kL111_L111py(0:N_L111py,0:N_L111py), kL111_L111tpy(0:N_L111py,0:N_L111tpy)
- double precision, target :: kL111_L100py(0:N_L111py,0:N_L100py)
- double precision, target :: kSIAs_L111tpy(0:N_SIAs_mpy,0:N_L111tpy), kVACs_L111tpy(0:N_VACs_py,0:N_L111tpy)
- double precision, target :: kC15_L111tpy(0:N_C15_py,0:N_ulpc15_py)
- double precision, target :: kL111t_L111tpy(0:N_L111tpy,0:N_L111tpy), kL111t_L100py(0:N_L111tpy,0:N_L100py)
- double precision, target :: kSIAs_L100py(0:N_SIAs_mpy,0:N_L100py), kVACs_L100py(0:N_VACs_mpy,0:N_L100py)
- double precision, target :: gV_L111tpy(0:N_L111tpy), gSIA_L111tpy(0:N_L111tpy)
- double precision, target :: gVAC_L111py(0:N_L111py), gSIA_L111py(0:N_L111py)
- double precision, target :: gV_L100py(0:N_L100py), gSIA_L100py(0:N_L100py)
- double precision, target :: ktrap_L111py(0:N_L111py), gtrap_L111tpy(0:N_L111tpy)
- double precision, target :: ktrap_L111tpy(0:N_L111tpy), ktrap_uL111tpy(0:N_ugroup_py), ktrap_VACspy(0:N_VACs_mpy)
- k_VACs_L111 => kVACs_L111py
- g_VAC_L111 => gVAC_L111py
- g_SIA_L111 => gSIA_L111py
- k_L111_L111 => kL111_L111py
- k_L111_L111t => kL111_L111tpy
- k_L111_L100 => kL111_L100py
- k_SIAs_L111 => kSIAs_L111py
- k_SIAs_L111t => kSIAs_L111tpy
- k_VACs_L111t => kVACs_L111tpy
- g_VAC_L111t => gV_L111tpy
- g_SIA_L111t => gSIA_L111tpy
- k_L111t_L111t => kL111t_L111tpy
- k_L111t_L100 => kL111t_L100py
- k_C15_L111t => kC15_L111tpy
- g_VAC_L100 => gV_L100py
- g_SIA_L100 => gSIA_L100py
- k_SIAs_L100 => kSIAs_L100py
- k_VACs_L100 => kVACs_L100py
- k_trap_L111 => ktrap_L111py
- g_trap_L111t => gtrap_L111tpy
- k_trap_L111t => ktrap_L111tpy
- k_trap_uL111t=> ktrap_uL111tpy
- k_trap_VACs => ktrap_VACspy
- !do i=10, 20
- !write (*,*) d111_sigme2(50,60), d111_sigme2(70,80) !, k_He_SIAs(i), g_SIA_SIAs(i)
- !end do
- end subroutine Get_coeff_loop
- subroutine Get_coeff_grouploop(k_SIAs_uVACs_py, k_VACs_uVACs_py,k_L111t_uVACs_py,k_L111_uVACs_py,&
- & k_uL111t_uVACs_py,k_SIAs_uL111t_py, &
- & k_VACs_uL111t_py, k_L111_uL111t_py, k_L111t_uL111t_py, &
- & k_L100_uL111t_py,g_SIA_uVACs_py, g_VAC_uVACs_py, g_SIA_uL111t_py, g_VAC_uL111t_py,&
- & k_SIAs_uL100_py, k_VACs_uL100_py, k_L111_uL100_py, k_L111t_uL100_py, &
- & g_SIA_uL100_py, g_VAC_uL100_py, k_uL111t_uL111t_py, k_uL111t_uL100_py,&
- & N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy,N_L100py,N_ugroup)
- use coeffi
- implicit none
- integer :: N_VACs_py, N_VACs_mpy, N_SIAs_mpy, N_L111py, N_L111tpy,N_L100py,N_ugroup
- 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)
- 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)
- double precision, target :: k_L111_uL111t_py(0:N_L111py,0:N_ugroup), k_L111t_uL111t_py(0:N_L111tpy,0:N_ugroup)
- double precision, target :: k_L111t_uVACs_py(0:N_L111tpy,0:N_ugroup), k_L111_uVACs_py(0:N_L111py,0:N_ugroup)
- double precision, target :: k_L100_uL111t_py(0:N_L100py,0:N_ugroup),k_uL111t_uVACs_py(0:N_ugroup,0:N_ugroup)
- double precision, target :: g_SIA_uL111t_py(0:N_ugroup), g_VAC_uL111t_py(0:N_ugroup)
- double precision, target :: g_SIA_uVACs_py(0:N_ugroup), g_VAC_uVACs_py(0:N_ugroup)
- 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)
- double precision, target :: k_L111_uL100_py(0:N_L111py,0:N_ugroup), k_L111t_uL100_py(0:N_L111tpy,0:N_ugroup)
- double precision, target :: g_SIA_uL100_py(0:N_ugroup), g_VAC_uL100_py(0:N_ugroup)
- double precision, target :: k_uL111t_uL111t_py(0:N_ugroup,0:N_ugroup), k_uL111t_uL100_py(0:N_ugroup,0:N_ugroup)
- k_SIAs_uVACs => k_SIAs_uVACs_py
- k_VACs_uVACs => k_VACs_uVACs_py
- k_L111t_uVACs => k_L111t_uVACs_py
- k_L111_uVACs => k_L111_uVACs_py
- k_uL111t_uVACs => k_uL111t_uVACs_py
- k_SIAs_uL111t => k_SIAs_uL111t_py
- k_VACs_uL111t => k_VACs_uL111t_py
- k_L111_uL111t => k_L111_uL111t_py
- k_L111t_uL111t => k_L111t_uL111t_py
- k_L100_uL111t => k_L100_uL111t_py
- g_SIA_uVACs => g_SIA_uVACs_py
- g_VAC_uVACs => g_VAC_uVACs_py
- g_SIA_uL111t => g_SIA_uL111t_py
- g_VAC_uL111t => g_VAC_uL111t_py
- k_SIAs_uL100 => k_SIAs_uL100_py
- k_VACs_uL100 => k_VACs_uL100_py
- k_L111_uL100 => k_L111_uL100_py
- k_L111t_uL100 => k_L111t_uL100_py
- g_SIA_uL100 => g_SIA_uL100_py
- g_VAC_uL100 => g_VAC_uL100_py
- k_uL111t_uL111t => k_uL111t_uL111t_py
- k_uL111t_uL100 => k_uL111t_uL100_py
- end subroutine Get_coeff_grouploop
- !2022/02/16
- !get group coeffi
- subroutine get_group_coeffi(akaL0_Idef_L0_py, akaL0_Idef_L1_py, akaL1_Idef_L0_py, akaL1_Idef_L1_py,&
- & akaL0_Vdef_L0_py, akaL0_Vdef_L1_py, akaL1_Vdef_L0_py, akaL1_Vdef_L1_py,&
- & akavL0_Idef_L0_py, akavL0_Idef_L1_py, akavL1_Idef_L0_py, akavL1_Idef_L1_py,&
- & akavL0_Vdef_L0_py, akavL0_Vdef_L1_py, akavL1_Vdef_L0_py, akavL1_Vdef_L1_py,&
- & abL0_L0_py, abL0_L1_py, abL1_L0_py, abL1_L1_py, &
- & adft_L0_py, adft_L1_py, &
- & akaL0_L0L0_py, akaL0_L0L1_py, akaL0_L1L0_py, akaL0_L1L1_py, &
- & akaL1_L0L0_py, akaL1_L0L1_py, akaL1_L1L0_py, akaL1_L1L1_py, &
- & akbLi0_Li0L0_py, akbLi0_Li0L1_py, akbLi0_Li1L0_py, akbLi0_Li1L1_py, &
- & akbLi1_Li0L0_py, akbLi1_Li0L1_py, akbLi1_Li1L0_py, akbLi1_Li1L1_py, &
- & akavL0_L0L0_py, akavL0_L0L1_py, akavL0_L1L0_py, akavL0_L1L1_py, &
- & akavL1_L0L0_py, akavL1_L0L1_py, akavL1_L1L0_py, akavL1_L1L1_py, &
- & akbvLi0_Li0L0_py, akbvLi0_Li0L1_py, akbvLi0_Li1L0_py, akbvLi0_Li1L1_py, &
- & akbvLi1_Li0L0_py, akbvLi1_Li0L1_py, akbvLi1_Li1L0_py, akbvLi1_Li1L1_py, &
- & ngp_py, ndft_py)
- use coeffi
- implicit none
- integer :: ngp_py, ndft_py
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- !factor of -group_j = (dft) + group_j(full group)
- 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)
- !factor of dft = (dft) + group_j
- double precision,target :: adft_L0_py(0:ngp_py),adft_L1_py(0:ngp_py)
- !factor of +group_k = group_i + group_j
- 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)
- 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)
- 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)
- 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)
- !factor of -group_i (group_i + group_j -> group_k)
- 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)
- 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)
- 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)
- 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)
- !factor of +group_k = group_i + group_j
- 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)
- 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)
- 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)
- 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)
- !factor of -group_i (group_i + group_j -> group_k)
- 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)
- 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)
- 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)
- 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)
- akaL0_Idef_L0 => akaL0_Idef_L0_py
- akaL0_Idef_L1 => akaL0_Idef_L1_py
- akaL1_Idef_L0 => akaL1_Idef_L0_py
- akaL1_Idef_L1 => akaL1_Idef_L1_py
- akaL0_Vdef_L0 => akaL0_Vdef_L0_py
- akaL0_Vdef_L1 => akaL0_Vdef_L1_py
- akaL1_Vdef_L0 => akaL1_Vdef_L0_py
- akaL1_Vdef_L1 => akaL1_Vdef_L1_py
- akavL0_Idef_L0 => akavL0_Idef_L0_py
- akavL0_Idef_L1 => akavL0_Idef_L1_py
- akavL1_Idef_L0 => akavL1_Idef_L0_py
- akavL1_Idef_L1 => akavL1_Idef_L1_py
- akavL0_Vdef_L0 => akavL0_Vdef_L0_py
- akavL0_Vdef_L1 => akavL0_Vdef_L1_py
- akavL1_Vdef_L0 => akavL1_Vdef_L0_py
- akavL1_Vdef_L1 => akavL1_Vdef_L1_py
- abL0_L0 => abL0_L0_py
- abL0_L1 => abL0_L1_py
- abL1_L0 => abL1_L0_py
- abL1_L1 => abL1_L1_py
- adft_L0 => adft_L0_py
- adft_L1 => adft_L1_py
- akaL0_L0L0 => akaL0_L0L0_py
- akaL0_L0L1 => akaL0_L0L1_py
- akaL0_L1L0 => akaL0_L1L0_py
- akaL0_L1L1 => akaL0_L1L1_py
- akaL1_L0L0 => akaL1_L0L0_py
- akaL1_L0L1 => akaL1_L0L1_py
- akaL1_L1L0 => akaL1_L1L0_py
- akaL1_L1L1 => akaL1_L1L1_py
- akbLi0_Li0L0 => akbLi0_Li0L0_py
- akbLi0_Li0L1 => akbLi0_Li0L1_py
- akbLi0_Li1L0 => akbLi0_Li1L0_py
- akbLi0_Li1L1 => akbLi0_Li1L1_py
- akbLi1_Li0L0 => akbLi1_Li0L0_py
- akbLi1_Li0L1 => akbLi1_Li0L1_py
- akbLi1_Li1L0 => akbLi1_Li1L0_py
- akbLi1_Li1L1 => akbLi1_Li1L1_py
- akavL0_L0L0 => akavL0_L0L0_py
- akavL0_L0L1 => akavL0_L0L1_py
- akavL0_L1L0 => akavL0_L1L0_py
- akavL0_L1L1 => akavL0_L1L1_py
- akavL1_L0L0 => akavL1_L0L0_py
- akavL1_L0L1 => akavL1_L0L1_py
- akavL1_L1L0 => akavL1_L1L0_py
- akavL1_L1L1 => akavL1_L1L1_py
- akbvLi0_Li0L0 => akbvLi0_Li0L0_py
- akbvLi0_Li0L1 => akbvLi0_Li0L1_py
- akbvLi0_Li1L0 => akbvLi0_Li1L0_py
- akbvLi0_Li1L1 => akbvLi0_Li1L1_py
- akbvLi1_Li0L0 => akbvLi1_Li0L0_py
- akbvLi1_Li0L1 => akbvLi1_Li0L1_py
- akbvLi1_Li1L0 => akbvLi1_Li1L0_py
- akbvLi1_Li1L1 => akbvLi1_Li1L1_py
- end subroutine get_group_coeffi
- subroutine Test(test1, test2, test3, ngp_py, dftpy)
- use coeffi
- implicit none
- integer :: dftpy, ngp_py, i
- double precision , target :: test1(0:ngp_py), test2(0:ngp_py, 0:ngp_py), test3(0:ngp_py, 0:dftpy, 0:ngp_py)
- testval1 => test1
- testval2 => test2
- testval3 => test3
- write (*,*) testval1(20), testval2(20,20), testval3(20,20,18)
- end subroutine Test
- subroutine checkcoeff()
- use coeffi
- implicit none
- write (*,*) "---------check fortran parameters-------"
- write (*,*) "1"
- write (*,*) k_SIAs_SIAs(2,2)
- write (*,*) k_SIAs_VACs(2,50)
- write (*,*) k_SIAs_C15(2,50)
- write (*,*) k_VACs_VACs(2,50)
- write (*,*) k_VACs_C15(2,50)
- write (*,*) g_SIA_SIAs(2)
- write (*,*) g_VAC_SIAs(2)
- write (*,*) g_SIA_VACs(50)
- write (*,*) g_VAC_VACs(50)
- write (*,*) g_SIA_C15(50)
- write (*,*) g_VAC_C15(50)
- write (*,*) "4 ungroup loop"
- write (*,*) k_SIAs_L111(2,30)
- write (*,*) k_VACs_L111(2,10)
- write (*,*) g_VAC_L111(30)
- write (*,*) g_SIA_L111(30)
- write (*,*) k_SIAs_L111t(2,30)
- write (*,*) k_VACs_L111t(2,10)
- write (*,*) g_VAC_L111t(30)
- write (*,*) g_SIA_L111t(30)
- write (*,*) g_VAC_L100(30)
- write (*,*) g_SIA_L100(30)
- write (*,*) k_SIAs_L100(2,30)
- write (*,*) k_VACs_L100(2,10)
- write (*,*) "5"
- write (*,*) loss_SIAs(2)
- write (*,*) loss_VACs(2)
- write (*,*) loss_L111(30)
- write (*,*) loss_L111t(30)
- write (*,*) loss_uL111t(30)
- write (*,*) "6 grouped loop"
- write (*,*) k_SIAs_uL111t(2,30)
- write (*,*) k_VACs_uL111t(2,10)
- write (*,*) g_VAC_uL111t(30)
- write (*,*) g_SIA_uL111t(30)
- write (*,*) g_VAC_uL100(20)
- write (*,*) g_SIA_uL100(30)
- write (*,*) k_SIAs_uL100(2,30)
- write (*,*) k_VACs_uL100(2,10)
- write (*,*) "7 grouping scheme"
- write (*,*) mesh_x0(14)
- write (*,*) mesh_ust(14)
- write (*,*) mesh_ued(14)
- write (*,*) mesh_dlta(14)
- write (*,*) "8 ungroup loop raction"
- write (*,*) k_L111_L111(25,15),k_L111_L111(15,25)
- write (*,*) k_L111_L100(20,15),k_L111_L100(15,20)
- write (*,*) k_L111_L111t(20,15)
- write (*,*) k_L111t_L100(20,15)
- write (*,*) k_L111t_L111t(20,15), k_L111t_L111t(15,20)
- write (*,*) k_trap_L111(20)
- write (*,*) g_trap_L111t(20)
- write (*,*) k_C15_L111t(20,20)
- write (*,*) k_trap_uL111t(10)
- write (*,*) k_trap_VACs(3)
- write (*,*) "8.2 grouped loop raction"
- write (*,*) k_L111_uL100(20,15),k_L111_uL100(15,20)
- write (*,*) k_L111t_uL100(20,15)
- write (*,*) k_L111_uL111t(20,15)
- write (*,*) k_L111t_uL111t(20,15), k_L111t_uL111t(15,20)
- write (*,*) k_L100_uL111t(20,15), k_L100_uL111t(15,20)
- write (*,*) k_uL111t_uL100(20,15), k_uL111t_uL100(15,20)
- write (*,*) "9"
- write (*,*) dparate, Nmax_cas, Nmin_cas, CascadeRate
- write (*,*) f_L111toL100(20), f_L111ttoL100(20), f_L111toC15(20), f_L111ttoC15(20)
- write (*,*) f_L100toC15(20) , f_L100toL100(20) , f_C15toL100(20), f_C15toC15(20)
- write (*,*) "10 grouping coefficient"
- write (*,*) "Idef"
- write (*,*) akaL0_Idef_L0(20,20,20), akaL0_Idef_L0(20,20,19), akaL0_Idef_L0(20,20,18)
- write (*,*) akaL0_Idef_L1(20,20,20), akaL0_Idef_L1(20,20,19), akaL0_Idef_L1(20,20,18)
- write (*,*) akaL1_Idef_L0(20,20,20), akaL1_Idef_L0(20,20,19), akaL1_Idef_L0(20,20,18)
- write (*,*) akaL1_Idef_L1(20,20,20), akaL1_Idef_L1(20,20,19), akaL1_Idef_L1(20,20,18)
- write (*,*) "Vdef"
- write (*,*) akaL0_Vdef_L0(20,20,20), akaL0_Vdef_L0(20,20,21), akaL0_Vdef_L0(20,20,19)
- write (*,*) akaL0_Vdef_L1(20,20,20), akaL0_Vdef_L1(20,20,21), akaL0_Vdef_L1(20,20,19)
- write (*,*) akaL1_Vdef_L0(20,20,20), akaL1_Vdef_L0(20,20,21), akaL1_Vdef_L0(20,20,19)
- write (*,*) akaL1_Vdef_L1(20,20,20), akaL1_Vdef_L1(20,20,21), akaL1_Vdef_L1(20,20,19)
- write (*,*) "10.1"
- write (*,*) abL0_L0(20)
- write (*,*) abL0_L1(20)
- write (*,*) abL1_L0(20)
- write (*,*) abL1_L1(20)
- write (*,*) ""
- write (*,*) adft_L0(20)
- write (*,*) adft_L1(20)
- write (*,*) "10.2"
- write (*,*) akaL0_L0L0(20,5,21), akaL0_L0L0(20,5,22)
- write (*,*) akaL0_L0L1(20,5,21), akaL0_L0L1(20,5,22)
- write (*,*) akaL0_L1L0(20,5,21), akaL0_L1L0(20,5,22)
- write (*,*) akaL0_L1L1(20,5,21), akaL0_L1L1(20,5,22)
- write (*,*) ""
- write (*,*) akaL1_L0L0(20,5,21), akaL1_L0L0(20,5,22)
- write (*,*) akaL1_L0L1(20,5,21), akaL1_L0L1(20,5,22)
- write (*,*) akaL1_L1L0(20,5,21), akaL1_L1L0(20,5,22)
- write (*,*) akaL1_L1L1(20,5,21), akaL1_L1L1(20,5,22)
- write (*,*) ""
- write (*,*) akbLi0_Li0L0(20,5,21), akbLi0_Li0L0(20,5,22)
- write (*,*) akbLi0_Li0L1(20,5,21), akbLi0_Li0L1(20,5,22)
- write (*,*) akbLi0_Li1L0(20,5,21), akbLi0_Li1L0(20,5,22)
- write (*,*) akbLi0_Li1L1(20,5,21), akbLi0_Li1L1(20,5,22)
- write (*,*) ""
- write (*,*) akbLi1_Li0L0(20,5,21), akbLi1_Li0L0(20,5,22)
- write (*,*) akbLi1_Li0L1(20,5,21), akbLi1_Li0L1(20,5,22)
- write (*,*) akbLi1_Li1L0(20,5,21), akbLi1_Li1L0(20,5,22)
- write (*,*) akbLi1_Li1L1(20,5,21), akbLi1_Li1L1(20,5,22)
- write (*,*) "11"
- write (*,*) N_C15_st, f_g2s
- END SUBROUTINE checkcoeff
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !!!!!!! rhs function of the ode
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- subroutine f_f77(neq, t, u, udot)
- use coeffi
- implicit none
- !f2py intent(hide) neq
- !f2py intent(out) udot
- integer neq
- double precision t
- ! u is the the unkown function of time!!!
- double precision, target :: u, udot
- dimension u(neq), udot(neq)
- !~ ! auxiliary variable for calculation
- integer nvac, nsia, isia, isia1, isia2, nsia_m, nvac_im, check,nvac_m
- integer u_idx, u_idx1, u_idx2, ugroup, ugroup2, st, ed, st1, ed1,uidx
- integer sumv00, sumv01, sumv10, sumv11, flag
- double precision, pointer :: Ctrap, dCtrap
- double precision, dimension(:), pointer :: sinkSIAs, sinkVACs, sinkL111,sinkL111t, sinkL111tL0, sinkL111tL1
- double precision, dimension(:), pointer :: dsinkSIAs, dsinkVACs, dsinkL111,dsinkL111t, dsinkL111tL0, dsinkL111tL1
- double precision, dimension(:), pointer :: CSIAs, dCSIAs, CVACs, dCVACs, C_C15, dC_C15,CVACsL0,CVACsL1
- double precision, dimension(:), pointer :: CL111, CL111t, CL111tL0, CL111tL1
- double precision, dimension(:), pointer :: dCL111, dCL111t, dCL111tL0, dCL111tL1,dCVACsL0, dCVACsL1
- double precision, dimension(:), pointer :: CL100, CL100L0, CL100L1, dCL100, dCL100L0, dCL100L1
- integer N_offsinkL111, N_offsinkL111t, N_offsinkL111tL0, N_sink
- integer N_offSIA, N_offVAC,N_offVACg,N_offVACg2, N_offC15, N_offL111, N_offL111t, N_offL111tL0, N_offL111tL1
- integer N_offL100, N_offL100L0, bin_length
- double precision :: zero
- double precision :: temp, factor
- !write (*,*) k_L111t_uVACs(20,15), k_uL111t_uL100(15,20)
- N_offsinkL111 = N_SIAs_m +N_VACs_m +N_L111
- N_offsinkL111t = N_offsinkL111 +N_L111t
- N_offsinkL111tL0= N_offsinkL111t +Nu_L111t
- N_sink = N_offsinkL111tL0 +Nu_L111t !sink L111
- N_offSIA = N_sink +N_SIAs_m
- N_offVAC = N_offSIA +N_VACs
- N_offC15 = N_offVAC +N_C15
- N_offL111 = N_offC15 +N_L111
- N_offL111t = N_offL111 +N_L111t
- N_offL111tL0 = N_offL111t +Nu_L111t
- N_offL111tL1 = N_offL111tL0 +Nu_L111t
- N_offL100 = N_offL111tL1 +N_L100
- N_offL100L0 = N_offL100 +Nu_L100
- bin_length = N_offL100L0 +Nu_L100 +1
- sinkSIAs(1:N_SIAs_m) => u(1:N_SIAs_m)
- sinkVACs(1:N_VACs_m) => u(N_SIAs_m+1:N_VACs_m)
- sinkL111(1:N_L111) => u(N_SIAs_m+N_VACs_m+1:N_L111)
- sinkL111t(1:N_L111t) => u(N_offsinkL111+1:N_L111t)
- sinkL111tL0(1:Nu_L111t)=> u(N_offsinkL111t+1:Nu_L111t)
- sinkL111tL1(1:Nu_L111t)=> u(N_offsinkL111tL0+1:Nu_L111t)
- dsinkSIAs(1:N_SIAs_m) => udot(1:N_SIAs_m)
- dsinkVACs(1:N_VACs_m) => udot(N_SIAs_m+1:N_VACs_m)
- dsinkL111(1:N_L111) => udot(N_SIAs_m+N_VACs_m+1:N_L111)
- dsinkL111t(1:N_L111t) => udot(N_offsinkL111+1:N_L111t)
- dsinkL111tL0(1:Nu_L111t)=> udot(N_offsinkL111t+1:Nu_L111t)
- dsinkL111tL1(1:Nu_L111t)=> udot(N_offsinkL111tL0+1:Nu_L111t)
- CSIAs(1:N_SIAs_m) => u(N_sink+1:N_SIAs_m)
- CVACs(1:N_VACs) => u(N_offSIA+1:N_VACs)
- C_C15(1:N_C15) => u(N_offVAC+1:N_C15)
- CL111(1:N_L111) => u(N_offC15+1:N_L111)
- CL111t(1:N_L111t) => u(N_offL111+1:N_L111t)
- CL111tL0(1:Nu_L111t) => u(N_offL111t+1:Nu_L111t)
- CL111tL1(1:Nu_L111t) => u(N_offL111tL0+1:Nu_L111t)
- CL100(1:N_L100) => u(N_offL111tL1+1:N_L100)
- CL100L0(1:Nu_L100) => u(N_offL100+1:Nu_L100)
- CL100L1(1:Nu_L100) => u(N_offL100L0+1:Nu_L100)
- dCSIAs(1:N_SIAs_m) => udot(N_sink+1:N_SIAs_m)
- dCVACs(1:N_VACs) => udot(N_offSIA+1:N_VACs)
- dC_C15(1:N_C15) => udot(N_offVAC+1:N_C15)
- dCL111(1:N_L111) => udot(N_offC15+1:N_L111)
- dCL111t(1:N_L111t) => udot(N_offL111+1:N_L111t)
- dCL111tL0(1:Nu_L111t) => udot(N_offL111t+1:Nu_L111t)
- dCL111tL1(1:Nu_L111t) => udot(N_offL111tL0+1:Nu_L111t)
- dCL100(1:N_L100) => udot(N_offL111tL1+1:N_L100)
- dCL100L0(1:Nu_L100) => udot(N_offL100+1:Nu_L100)
- dCL100L1(1:Nu_L100) => udot(N_offL100L0+1:Nu_L100)
- !write(*,*) bin_length
- Ctrap => u(bin_length)
- dCtrap => udot(bin_length)
- zero = 1.D-100 !define the value for the nummerical zero
- !write (*,*) neq
- ! write (*,*) Nu_VACs
- ! write (*,*) N_sink
- !!write (*,*) N_SIAs_m
- !write (*,*) N_C15
- !write (*,*) N_L111
- !write (*,*) N_offVAC
- !write (*,*) N_offVACg
- !write (*,*) N_offVAC
- !write (*,*) N_offC15
- !write (*,*) N_offL111
- !write (*,*) N_offL111t
- !write (*,*) N_offL111tL0
- !write (*,*) N_offL111tL1
- !write (*,*) N_offL100
- !write (*,*) N_offL100L0
- ncall = ncall+1 ! increase ncall every time rhs is called
- temp = 0.
- check = 0
- !write (*,*) akavL0_Idef_L0
- !!!!!!!!!!!!!!!!!!!!!
- !------SIA-----------
- dsinkSIAs(1) = +loss_SIAs(1) *(CSIAs(1)-Ceq_SIAs(1))
- 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)
- do isia = 1, N_SIAs_m
- dCSIAs(1) = dCSIAs(1) -k_SIAs_SIAs(1,isia)*CSIAs(1)*CSIAs(isia)
- enddo
- do nvac = 1, N_VACs
- dCSIAs(1) = dCSIAs(1) -k_SIAs_VACs(1,nvac)*CSIAs(1)*CVACs(nvac)
- if ((nvac+1) .le. N_SIAs_m) then
- dCSIAs(1) = dCSIAs(1) +k_SIAs_VACs(nvac+1,nvac)*CSIAs(nvac+1)*CVACs(nvac)
- endif
- if (nvac .gt. 1) then
- dCSIAs(1) = dCSIAs(1) +g_SIA_VACs(nvac)*CVACs(nvac)
- endif
- enddo
- !~with loop ungrouped L111
- do nsia = N_loop_start, N_L111
- dCSIAs(1) = dCSIAs(1) +g_SIA_L111(nsia)*CL111(nsia)
- dCSIAs(1) = dCSIAs(1) - k_SIAs_L111(1,nsia)*CSIAs(1)*CL111(nsia)
- do nvac = 1, N_VACs
- if ((nvac+1) .eq. nsia) then
- dCSIAs(1) = dCSIAs(1) +k_VACs_L111(nvac,nsia)*CVACs(nvac)*CL111(nsia)
- endif
- enddo
- enddo
- !~with loop ungrouped L111t
- do nsia = N_loop_start, N_L111t
- dCSIAs(1) = dCSIAs(1) +g_SIA_L111t(nsia)*CL111t(nsia)
- do nvac = 1, N_VACs
- if ((nvac+1) .eq. nsia) then
- dCSIAs(1) = dCSIAs(1) +k_VACs_L111t(nvac,nsia)*CVACs(nvac)*CL111t(nsia)
- endif
- enddo
- dCSIAs(1) = dCSIAs(1) -k_SIAs_L111t(1,nsia)*CSIAs(1)*CL111t(nsia)
- enddo
- !~with loop groups of L111t
- do u_idx = 1, Nu_L111t
- dCSIAs(1) = dCSIAs(1) +g_SIA_uL111t(u_idx)*adft_L0(u_idx)*CL111tL0(u_idx) &
- & +g_SIA_uL111t(u_idx)*adft_L1(u_idx)*CL111tL1(u_idx)
- dCSIAs(1) = dCSIAs(1) -k_SIAs_uL111t(1,u_idx)*adft_L0(u_idx)*CSIAs(1)*CL111tL0(u_idx)&
- & -k_SIAs_uL111t(1,u_idx)*adft_L1(u_idx)*CSIAs(1)*CL111tL1(u_idx)
- do nvac = 1, N_VACs
- if ((nvac+1) .ge. mesh_ust(u_idx) .and. (nvac+1) .le. mesh_ued(u_idx)) then
- dCSIAs(1) = dCSIAs(1) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx) &
- & +k_VACs_uL111t(nvac,u_idx)*v1(nvac+1,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
- endif
- enddo
- enddo
- !~with loop ungrouped L100
- do nsia = N_loop_start, N_L100
- dCSIAs(1) = dCSIAs(1) +g_SIA_L100(nsia)*CL100(nsia)
- do nvac = 1, N_VACs_m
- if ((nvac+1) .eq. nsia) then
- dCSIAs(1) = dCSIAs(1) +k_VACs_L100(nvac,nsia)*CVACs(nvac)*CL100(nsia)
- endif
- enddo
- dCSIAs(1) = dCSIAs(1) -k_SIAs_L100(1,nsia)*CSIAs(1)*CL100(nsia)
- enddo
- !~with loop groups of L100
- do u_idx = 1, Nu_L100
- dCSIAs(1) = dCSIAs(1) +g_SIA_uL100(u_idx)*adft_L0(u_idx)*CL100L0(u_idx) &
- & +g_SIA_uL100(u_idx)*adft_L1(u_idx)*CL100L1(u_idx)
- dCSIAs(1) = dCSIAs(1) -k_SIAs_uL100(1,u_idx)*adft_L0(u_idx)*CSIAs(1)*CL100L0(u_idx)&
- & -k_SIAs_uL100(1,u_idx)*adft_L1(u_idx)*CSIAs(1)*CL100L1(u_idx)
- do nvac = 1, N_VACs_m
- if ((nvac+1) .ge. mesh_ust(u_idx) .and. (nvac+1) .le. mesh_ued(u_idx)) then
- dCSIAs(1) = dCSIAs(1) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)*CL100L0(u_idx) &
- & +k_VACs_uL100(nvac,u_idx)*v1(nvac+1,u_idx)*CVACs(nvac)*CL100L1(u_idx)
- endif
- enddo
- enddo
- ! with other defects
- do isia = N_C15_st, N_C15
- dCSIAs(1) = dCSIAs(1) + g_SIA_C15(isia)*C_C15(isia)
- if ((isia-1) .ge. 1 .and. (isia-1) .le. N_VACs_m) then
- dCSIAs(1) = dCSIAs(1) + k_VACs_C15(isia-1,isia)*CVACs(isia-1)*C_C15(isia)
- endif
- enddo
- do isia = N_C15_st, N_C15
- if ((1+isia) .le. N_C15) then
- dCSIAs(1) = dCSIAs(1) -k_SIAs_C15(1,isia)*CSIAs(1)*C_C15(isia)
- endif
- enddo
- do isia = 2, N_SIAs_m
- dCSIAs(1) = dCSIAs(1) + g_SIA_SIAs(isia)*CSIAs(isia)
- enddo
- dCSIAs(1) = dCSIAs(1) + 3*g_SIA_SIAs(2)*CSIAs(2)
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-mobile SIAs-------------------
- do nsia_m = 2, N_SIAs_m
- dsinkSIAs(nsia_m) = +loss_SIAs(nsia_m)*(CSIAs(nsia_m)-Ceq_SIAs(nsia_m))
- dCSIAs(nsia_m) = dparate*fcascade_SIAs_L111(nsia_m) -loss_SIAs(nsia_m)*(CSIAs(nsia_m)-Ceq_SIAs(nsia_m))
- do isia = 1, N_SIAs_m
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_SIAs(nsia_m,isia)*CSIAs(nsia_m)*CSIAs(isia)
- enddo
- do isia = 1, nsia_m/2
- if ((nsia_m-isia) .ge. 1 ) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_SIAs_SIAs(nsia_m-isia,isia)*CSIAs(nsia_m-isia)*CSIAs(isia)
- endif
- enddo
- do nvac = 1, N_VACs
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_VACs(nsia_m,nvac)*CSIAs(nsia_m)*CVACs(nvac)
- enddo
- !write(*,*) g_SIA_uVACs
- do isia = nsia_m+1, N_SIAs_m
- if ((isia-nsia_m) .ge. 1 .and. (isia-nsia_m) .le. N_VACs) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) + k_SIAs_VACs(isia,isia-nsia_m)*CSIAs(isia)*CVACs(isia-nsia_m)
- endif
- enddo
- !~with loop ungrouped L111
- do nsia = N_loop_start, N_L111
- do nvac = 1, N_VACs
- if ((nvac+nsia_m) .eq. nsia) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_L111(nvac,nsia)*CVACs(nvac)*CL111(nsia)
- endif
- enddo
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_L111(nsia_m,nsia)*CSIAs(nsia_m)*CL111(nsia)
- enddo
- ! reaction with group uL111
- !~with loop ungrouped L111t
- do nsia = N_loop_start, N_L111t
- do nvac = 1, N_VACs
- if ((nvac+nsia_m) .eq. nsia) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_L111t(nvac,nsia)*CVACs(nvac)*CL111t(nsia)
- endif
- enddo
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_L111t(nsia_m,nsia)*CSIAs(nsia_m)*CL111t(nsia)
- enddo
- ! reaction with group uL111t
- do u_idx = 1, Nu_L111t
- do nvac = 1, N_VACs
- if ((nvac+nsia_m) .ge. mesh_ust(u_idx) .and. (nvac+nsia_m) .le. mesh_ued(u_idx)) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx) &
- & +k_VACs_uL111t(nvac,u_idx)*v1(nvac+nsia_m,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
- endif
- enddo
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_uL111t(nsia_m,u_idx)*adft_L0(u_idx)*CSIAs(nsia_m)*CL111tL0(u_idx) &
- & -k_SIAs_uL111t(nsia_m,u_idx)*adft_L1(u_idx)*CSIAs(nsia_m)*CL111tL1(u_idx)
- enddo
- ! reaction with group vacancy
- !~with loop ungrouped L100
- do nsia = N_loop_start, N_L100
- do nvac = 1, N_VACs_m
- if ((nvac+nsia_m) .eq. nsia) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_L100(nvac,nsia)*CVACs(nvac)*CL100(nsia)
- endif
- enddo
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_L100(nsia_m,nsia)*CSIAs(nsia_m)*CL100(nsia)
- enddo
- ! reaction with loop group of L100
- do u_idx = 1, Nu_L100
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_uL100(nsia_m,u_idx)*adft_L0(u_idx)*CSIAs(nsia_m)*CL100L0(u_idx) &
- & -k_SIAs_uL100(nsia_m,u_idx)*adft_L1(u_idx)*CSIAs(nsia_m)*CL100L1(u_idx)
- do nvac = 1, N_VACs_m
- if ((nvac+nsia_m) .ge. mesh_ust(u_idx) .and. (nvac+nsia_m) .le. mesh_ued(u_idx)) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)*CL100L0(u_idx) &
- & +k_VACs_uL100(nvac,u_idx)*v1(nvac+nsia_m,u_idx)*CVACs(nvac)*CL100L1(u_idx)
- endif
- enddo
- enddo
- do isia = N_C15_st, N_C15
- if ((nsia_m +isia) .le. N_C15) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -k_SIAs_C15(nsia_m,isia)*CSIAs(nsia_m)*C_C15(isia)
- endif
- if ((isia-nsia_m) .ge. 1 .and. (isia-nsia_m) .le. N_VACs_m) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +k_VACs_C15(isia-nsia_m,isia)*CVACs(isia-nsia_m)*C_C15(isia)
- endif
- enddo
- dCSIAs(nsia_m) = dCSIAs(nsia_m) -g_SIA_SIAs(nsia_m)*CSIAs(nsia_m) -g_VAC_SIAs(nsia_m)*CSIAs(nsia_m)
- if ((nsia_m-1) .gt. 1) then
- dCSIAs(nsia_m) = dCSIAs(nsia_m) +g_VAC_SIAs(nsia_m-1)*CSIAs(nsia_m-1)
- endif
- enddo
- dCSIAs(2) = dCSIAs(2) + k_SIAs_SIAs(1,1)*CSIAs(1)*CSIAs(1) -g_SIA_SIAs(2)*CSIAs(2) !dI2 = 2KI1*I1 - 2gI2
- !dCSIAs(N_SIAs_m) = dCSIAs(N_SIAs_m) +g_SIA_C15(N_SIAs_m+1)*C_C15(N_SIAs_m+1)
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------C15-------------------
- do nsia = N_C15_st, N_C15
- dC_C15(nsia) = dparate*fcascade_SIAs_c15(nsia) -f_trans100(nsia)*C_C15(nsia)-f_trans111(nsia)*C_C15(nsia)
- do isia = 1, N_SIAs_m
- if ((isia+nsia) .le. N_C15) then
- dC_C15(nsia)= dC_C15(nsia) - k_SIAs_C15(isia,nsia)*CSIAs(isia)*C_C15(nsia)
- endif
- if ((nsia-isia) .le. N_C15 .and. (nsia-isia) .ge. N_C15_st) then
- dC_C15(nsia)= dC_C15(nsia)+ k_SIAs_C15(isia,nsia-isia)*CSIAs(isia)*C_C15(nsia-isia)
- endif
- enddo
- do nvac = 1, N_VACs_m
- dC_C15(nsia)= dC_C15(nsia)- k_VACs_C15(nvac,nsia)*CVACs(nvac)*C_C15(nsia)
- if ((nsia+nvac) .le. N_C15 .and. (nsia+nvac) .ge. N_C15_st) then
- dC_C15(nsia)= dC_C15(nsia)+ k_VACs_C15(nvac,nsia+nvac)*CVACs(nvac)*C_C15(nsia+nvac)
- endif
- enddo
- !add L111 trapped by C15 01052022
- !do u_idx = mesh_uidx(N_loop_start), mesh_uidx(N_lpc15)
- ! isia = mesh_x0(u_idx)
- ! if ((isia+nsia) .le. N_C15) then
- ! dC_C15(nsia)= dC_C15(nsia) &
- ! & -k_C15_L111t(nsia,mesh_uidx(isia))*CL111t(isia)*C_C15(nsia)
- ! endif
- ! if ((nsia-isia) .le. N_C15 .and. (nsia-isia) .ge. (N_SIAs_m+1) ) then
- ! dC_C15(nsia)= dC_C15(nsia) &
- ! & +k_C15_L111t(nsia-isia,mesh_uidx(isia))*CL111t(isia)*C_C15(nsia-isia)
- ! endif
- !enddo
- dC_C15(nsia)= dC_C15(nsia)-g_SIA_C15(nsia)*C_C15(nsia)
- if ((nsia-1) .ge. N_C15_st .and. (nsia-1) .lt. N_C15) then
- dC_C15(nsia)= dC_C15(nsia)+g_VAC_C15(nsia-1)*C_C15(nsia-1)
- endif
- if (nsia .lt. N_C15) then
- dC_C15(nsia)= dC_C15(nsia)+g_SIA_C15(nsia+1)*C_C15(nsia+1)-g_VAC_C15(nsia)*C_C15(nsia)
- endif
- !add cascade overlap 01032022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
- dC_C15(nsia)= dC_C15(nsia) -(1-f_C15toC15(nsia))*CascadeRate*C_C15(nsia)
- if (nsia .le. N_L111t) then
- dC_C15(nsia)= dC_C15(nsia) +f_L111ttoC15(nsia)*CascadeRate*CL111t(nsia) &
- & +f_L111toC15(nsia)*CascadeRate*CL111(nsia) &
- & +f_L100toC15(nsia)*CascadeRate*CL100(nsia)
- endif
- endif
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------L111-------------------
- !~ungrouped
- do nsia = N_loop_start, N_L111
- dCL111(nsia) = 0
- dsinkL111(nsia) = +loss_L111(nsia)*CL111(nsia)
- if (nsia .le. N_C15) then
- dCL111(nsia) = +dparate*fcascade_SIAs_L111(nsia) +C_C15(nsia)*f_trans111(nsia)
- endif
- dCL111(nsia) = dCL111(nsia) -loss_L111(nsia)*CL111(nsia)
- dCL111(nsia) = dCL111(nsia) -k_trap_L111(nsia)*Ctrap*CL111(nsia) &
- & +g_trap_L111t(nsia)*CL111t(nsia)
- do isia = 1, N_SIAs_m
- dCL111(nsia) = dCL111(nsia) -k_SIAs_L111(isia,nsia)*CSIAs(isia)*CL111(nsia)
- enddo
- do isia = 1, N_SIAs_m
- if ((nsia-isia) .ge. N_loop_start ) then
- dCL111(nsia) = dCL111(nsia) +k_SIAs_L111(isia,nsia-isia)*CSIAs(isia)*CL111(nsia-isia)
- endif
- enddo
- do nvac = 1, N_VACs
- dCL111(nsia) = dCL111(nsia) -k_VACs_L111(nvac,nsia)*CVACs(nvac)*CL111(nsia)
- enddo
- do nvac = 1, N_VACs
- if ((nsia+nvac) .le. N_L111) then
- dCL111(nsia) = dCL111(nsia) +k_VACs_L111(nvac,(nsia+nvac))*CVACs(nvac)*CL111(nsia+nvac)
- endif
- enddo
- !!!~reacrion with ungrouped L111
- do isia = N_loop_start, N_L111
- dCL111(nsia) = dCL111(nsia) -k_L111_L111(nsia,isia)*CL111(nsia)*CL111(isia)
- if ((isia .lt. nsia/2.) .and. ((nsia-isia) .ge. N_loop_start)) then
- !reaction between same size of L111 excluded
- dCL111(nsia) = dCL111(nsia) +k_L111_L111(nsia-isia,isia) *CL111(nsia-isia)*CL111(isia)
- endif
- enddo
- !ungrouped L111t
- do isia = N_loop_start, N_L111t
- dCL111(nsia) = dCL111(nsia) -k_L111_L111t(nsia,isia)*CL111(nsia)*CL111t(isia)
- enddo
- !ungrouped L100
- do isia = N_loop_start, N_L100
- dCL111(nsia) = dCL111(nsia) -k_L111_L100(nsia,isia)*CL111(nsia)*CL100(isia)
- if ((isia .lt. (nsia-isia)) .and. ((nsia-isia) .ge. N_loop_start)) then
- !reaction between L111 and L100 of same size included
- dCL111(nsia) = dCL111(nsia) +k_L111_L100(nsia-isia,isia)*CL111(nsia-isia)*CL100(isia)
- endif
- enddo
- !!!~reacrion involving grouped L111t and L100
- do ugroup = 1, Nu_L111t
- dCL111(nsia) = dCL111(nsia) -k_L111_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111(nsia)*CL111tL0(ugroup) &
- &-k_L111_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111(nsia)*CL111tL1(ugroup)
- enddo
- do ugroup = 1, Nu_L100
- dCL111(nsia) = dCL111(nsia) -k_L111_uL100(nsia,ugroup)*adft_L0(ugroup)*CL111(nsia)*CL100L0(ugroup) &
- &-k_L111_uL100(nsia,ugroup)*adft_L1(ugroup)*CL111(nsia)*CL100L1(ugroup)
- enddo
- !!!~emission
- if ((nsia .ge. (N_loop_start+1)) .and. (nsia .le. (N_L111-1))) then
- dCL111(nsia) = dCL111(nsia) -g_SIA_L111(nsia)*CL111(nsia) -g_VAC_L111(nsia)*CL111(nsia) &
- & +g_SIA_L111(nsia+1)*CL111(nsia+1) +g_VAC_L111(nsia-1)*CL111(nsia-1)
- endif
- if (nsia == N_loop_start) then
- dCL111(nsia) = dCL111(nsia) -g_VAC_L111(nsia)*CL111(nsia) +g_SIA_L111(nsia+1)*CL111(nsia+1)
- endif
- if (nsia == N_L111) then
- dCL111(nsia) = dCL111(nsia) -g_SIA_L111(nsia)*CL111(nsia) +g_VAC_L111(nsia-1)*CL111(nsia-1)
- endif
- !add cascade overlap 01032022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
- dCL111(nsia) = dCL111(nsia) -f_L111toC15(nsia)*CascadeRate*CL111(nsia) &
- & -f_L111toL100(nsia)*CascadeRate*CL111(nsia) &
- & +(1-f111t)*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate*CL100(nsia) &
- & +(1-f111t)*(1-f_C15toL100(nsia) -f_C15toC15(nsia)) *CascadeRate*C_C15(nsia)
- endif
- enddo
- !!!!!!!!!!!!!!
- !~group L111~!
- !!!!!!!!!!!!!!
- ! remove uL111 in this version
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------L111t-------------------
- !~ungrouped
- do nsia = N_loop_start, N_L111t
- dCL111t(nsia) = 0
- dsinkL111t(nsia) = +loss_L111t(nsia) *CL111t(nsia)
- dCL111t(nsia) = dCL111t(nsia) -loss_L111t(nsia)*CL111t(nsia)
- dCL111t(nsia) = dCL111t(nsia) +k_trap_L111(nsia)*Ctrap*CL111(nsia)-g_trap_L111t(nsia)*CL111t(nsia)
- do isia = 1, N_SIAs_m
- dCL111t(nsia) = dCL111t(nsia) -k_SIAs_L111t(isia,nsia)*CSIAs(isia)*CL111t(nsia)
- enddo
- do isia = 1, N_SIAs_m
- if ((nsia-isia) .ge. N_loop_start ) then
- dCL111t(nsia) = dCL111t(nsia) +k_SIAs_L111t(isia,nsia-isia)*CSIAs(isia)*CL111t(nsia-isia)
- endif
- enddo
- do nvac = 1, N_VACs
- dCL111t(nsia) = dCL111t(nsia) -k_VACs_L111t(nvac,nsia)*CVACs(nvac)*CL111t(nsia)
- enddo
- do nvac = 1, N_VACs
- if ((nsia+nvac) .le. N_L111t) then
- dCL111t(nsia) = dCL111t(nsia) +k_VACs_L111t(nvac,nsia+nvac)*CVACs(nvac)*CL111t(nsia+nvac)
- endif
- enddo
- !!!~reacrion with ungrouped L111
- do isia = N_loop_start, N_L111
- dCL111t(nsia) = dCL111t(nsia) -k_L111_L111t(isia,nsia)*CL111t(nsia)*CL111(isia)
- if ((nsia-isia) .ge. N_loop_start .and. (nsia-isia) .ne. isia) then
- !reaction between same size of L111 excluded
- dCL111t(nsia) = dCL111t(nsia) +k_L111_L111t(isia,nsia-isia)*CL111t(nsia-isia)*CL111(isia)
- endif
- enddo
- !ungrouped L111t
- do isia = N_loop_start, N_L111t
- dCL111t(nsia) = dCL111t(nsia) -k_L111t_L111t(nsia,isia)*CL111t(nsia)*CL111t(isia)
- if ((isia .lt. nsia/2.) .and. ((nsia-isia) .ge. N_loop_start)) then
- dCL111t(nsia) = dCL111t(nsia) +k_L111t_L111t(nsia-isia,isia)*CL111t(nsia-isia)*CL111t(isia)
- endif
- enddo
- !ungrouped L100
- do isia = N_loop_start, N_L100
- dCL111t(nsia) = dCL111t(nsia) -k_L111t_L100(nsia,isia)*CL111t(nsia)*CL100(isia)
- if ((isia .lt. (nsia-isia)) .and. ((nsia-isia) .ge. N_loop_start)) then
- !reaction between L111 and L100 of same size included
- dCL111t(nsia) = dCL111t(nsia) +k_L111t_L100(nsia-isia,isia)*CL111t(nsia-isia)*CL100(isia)
- endif
- enddo
- !!!~reacrion involving grouped L111t
- do ugroup = 1, Nu_L111t
- dCL111t(nsia) = dCL111t(nsia) -k_L111t_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111t(nsia)*CL111tL0(ugroup) &
- &-k_L111t_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111t(nsia)*CL111tL1(ugroup)
- do nvac = 1, N_VACs
- if (((nvac+nsia).ge. mesh_ust(ugroup)) .and. ((nvac+nsia) .le. mesh_ued(ugroup))) then
- dCL111t(nsia) = dCL111t(nsia) +k_VACs_uL111t(nvac,ugroup)*CVACs(nvac)*CL111tL0(ugroup) &
- +k_VACs_uL111t(nvac,ugroup)*v1(nsia +nvac,ugroup)*CVACs(nvac)*CL111tL1(ugroup)
- endif
- enddo
- enddo
- dCL111t(N_L111) = dCL111t(N_L111) +g_SIA_uL111t(1)*CL111tL0(1) &
- & +g_SIA_uL111t(1)*v1(N_L111+1,1)*CL111tL1(1)
- !!!~reacrion involving grouped L100
- do ugroup = 1, Nu_L100
- dCL111t(nsia) = dCL111t(nsia) -k_L111t_uL100(nsia,ugroup)*adft_L0(ugroup)*CL111t(nsia)*CL100L0(ugroup) &
- &-k_L111t_uL100(nsia,ugroup)*adft_L1(ugroup)*CL111t(nsia)*CL100L1(ugroup)
- enddo
- !!!~emission
- if ((nsia .ge. (N_loop_start+1)) .and. (nsia .le. (N_L111t-1))) then
- dCL111t(nsia) = dCL111t(nsia) -g_SIA_L111t(nsia)*CL111t(nsia) -g_VAC_L111t(nsia)*CL111t(nsia) &
- & +g_SIA_L111t(nsia+1)*CL111t(nsia+1) +g_VAC_L111t(nsia-1)*CL111t(nsia-1)
- endif
- if (nsia == N_loop_start) then
- dCL111t(nsia) = dCL111t(nsia) -g_VAC_L111t(nsia)*CL111t(nsia) +g_SIA_L111t(nsia+1)*CL111t(nsia+1)
- endif
- if (nsia == N_L111t) then
- dCL111t(nsia) = dCL111t(nsia) -g_SIA_L111t(nsia)*CL111t(nsia) +g_VAC_L111t(nsia-1)*CL111t(nsia-1) &
- & -g_VAC_L111t(nsia)*CL111t(nsia)
- endif
- !add cascade overlap 01032022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
- dCL111t(nsia) = dCL111t(nsia) &
- & -(f_L111ttoL100(nsia) +f_L111ttoC15(nsia))*CascadeRate*CL111t(nsia) &
- & +f111t*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate*CL100(nsia) &
- & +f111t*(1-f_C15toL100(nsia) -f_C15toC15(nsia)) *CascadeRate*C_C15(nsia)
- endif
- enddo
- !!!!!!!!!!!!!!!
- !~group L111t~
- !!!!!!!!!!!!!!!
- do ugroup = 1, Nu_L111t
- dCL111tL0(ugroup) = 0.
- dCL111tL1(ugroup) = 0.
- dsinkL111tL0(ugroup) = +loss_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup) &
- &+loss_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
- dsinkL111tL1(ugroup) = +loss_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup) &
- &+loss_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -loss_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup) &
- &-loss_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -loss_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup) &
- &-loss_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
- !group- from group+SIA
- do isia = 1, N_SIAs_m
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_SIAs_uL111t(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)*CL111tL0(ugroup) &
- & -k_SIAs_uL111t(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_SIAs_uL111t(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)*CL111tL0(ugroup) &
- & -k_SIAs_uL111t(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)*CL111tL1(ugroup)
- enddo
- !group- from group+vac
- do nvac = 1, N_VACs
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_VACs_uL111t(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)*CL111tL0(ugroup) &
- & -k_VACs_uL111t(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_VACs_uL111t(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)*CL111tL0(ugroup) &
- & -k_VACs_uL111t(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)*CL111tL1(ugroup)
- enddo
- !group- from group+L111, L111t, L100
- do isia = N_loop_start, N_L111
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_L111_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)*CL111tL0(ugroup) &
- & -k_L111_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_L111_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)*CL111tL0(ugroup) &
- & -k_L111_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)*CL111tL1(ugroup)
- enddo
- do isia = N_loop_start, N_L111t
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_L111t_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)*CL111tL0(ugroup) &
- & -k_L111t_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_L111t_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)*CL111tL0(ugroup) &
- & -k_L111t_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)*CL111tL1(ugroup)
- enddo
- do isia = N_loop_start, N_L100
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -k_L100_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL100(isia)*CL111tL0(ugroup) &
- & -k_L100_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL100(isia)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -k_L100_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL100(isia)*CL111tL0(ugroup) &
- & -k_L100_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL100(isia)*CL111tL1(ugroup)
- enddo
- !group+ from group+SIA
- do isia1 = 1, N_SIAs_m
- st = mesh_ust(ugroup) -isia1
- ed = mesh_ued(ugroup) -isia1
- do ugroup2 = 1, ugroup
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_SIAs_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
- &*CSIAs(isia1)*CL111tL0(ugroup2)&
- &+k_SIAs_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
- &*CSIAs(isia1)*CL111tL1(ugroup2)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_SIAs_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
- &*CSIAs(isia1)*CL111tL0(ugroup2)&
- &+k_SIAs_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
- &*CSIAs(isia1)*CL111tL1(ugroup2)
- endif
- enddo
- enddo
- !write (*,*) akaL0_Idef_L0(1,1,1), akaL0_Idef_L1(1,1,1), abL0_L0(1), abL0_L1(1)
- !write (*,*) akaL1_Idef_L0(1,1,1), akaL1_Idef_L1(1,1,1), abL1_L0(1), abL1_L1(1)
- !write (*,*) akaL0_Idef_L0(5,1,5), akaL0_Idef_L1(5,1,5)
- !write (*,*) "!!!!!!!!!"
- !group+ from group+vac
- do nvac = 1, N_VACs
- st = mesh_ust(ugroup)+nvac
- ed = mesh_ued(ugroup)+nvac
- do ugroup2 = ugroup, Nu_L111t
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_VACs_uL111t(nvac,ugroup2)*akaL0_Vdef_L0(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL111tL0(ugroup2)&
- &+k_VACs_uL111t(nvac,ugroup2)*akaL0_Vdef_L1(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL111tL1(ugroup2)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_VACs_uL111t(nvac,ugroup2)*akaL1_Vdef_L0(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL111tL0(ugroup2)&
- &+k_VACs_uL111t(nvac,ugroup2)*akaL1_Vdef_L1(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL111tL1(ugroup2)
- endif
- enddo
- enddo
- !write(*,*) k_VACs_uVACs
- !group+ from group+L111
- do isia1 = N_loop_start, N_L111
- st = mesh_ust(ugroup) -isia1
- ed = mesh_ued(ugroup) -isia1
- do ugroup2 = 1, ugroup
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
- &*CL111(isia1)*CL111tL0(ugroup2)&
- &+k_L111_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
- &*CL111(isia1)*CL111tL1(ugroup2)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
- &*CL111(isia1)*CL111tL0(ugroup2) &
- &+k_L111_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
- &*CL111(isia1)*CL111tL1(ugroup2)
- endif
- enddo
- enddo
- !group+ from group+L111t
- do isia1 = N_loop_start, N_L111t
- st = mesh_ust(ugroup) -isia1
- ed = mesh_ued(ugroup) -isia1
- do ugroup2 = 1, ugroup
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111t_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
- &*CL111t(isia1)*CL111tL0(ugroup2)&
- &+k_L111t_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
- &*CL111t(isia1)*CL111tL1(ugroup2)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111t_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
- &*CL111t(isia1)*CL111tL0(ugroup2)&
- &+k_L111t_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
- &*CL111t(isia1)*CL111tL1(ugroup2)
- endif
- enddo
- enddo
- !group+ from group+L100
- do isia1 = N_loop_start, N_L100
- st = mesh_ust(ugroup) -isia1
- ed = mesh_ued(ugroup) -isia1
- do ugroup2 = 1, ugroup
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L100_uL111t(isia1,ugroup2)*akaL0_Idef_L0(ugroup,isia1,ugroup2)&
- &*CL100(isia1)*CL111tL0(ugroup2)&
- &+k_L100_uL111t(isia1,ugroup2)*akaL0_Idef_L1(ugroup,isia1,ugroup2)&
- &*CL100(isia1)*CL111tL1(ugroup2)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L100_uL111t(isia1,ugroup2)*akaL1_Idef_L0(ugroup,isia1,ugroup2)&
- &*CL100(isia1)*CL111tL0(ugroup2)&
- &+k_L100_uL111t(isia1,ugroup2)*akaL1_Idef_L1(ugroup,isia1,ugroup2)&
- &*CL100(isia1)*CL111tL1(ugroup2)
- endif
- enddo
- enddo
- !group+ from group uL111+L111t eg. group2_(40-50)+10 -> group_(55-65)
- !group- from group emission SIA, VAC
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -g_SIA_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup)&
- &-g_SIA_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -g_SIA_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup)&
- &-g_SIA_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
- dCL111tL0(ugroup) = dCL111tL0(ugroup) -g_VAC_uL111t(ugroup)*abL0_L0(ugroup)*CL111tL0(ugroup)&
- &-g_VAC_uL111t(ugroup)*abL0_L1(ugroup)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) -g_VAC_uL111t(ugroup)*abL1_L0(ugroup)*CL111tL0(ugroup)&
- &-g_VAC_uL111t(ugroup)*abL1_L1(ugroup)*CL111tL1(ugroup)
- !group+ from group emission of SIA, VAC
- do u_idx = ugroup, ugroup+1
- if (u_idx .le. Nu_L111t) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +g_SIA_uL111t(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
- &+g_SIA_uL111t(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +g_SIA_uL111t(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
- &+g_SIA_uL111t(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)
- endif
- enddo
- do u_idx = ugroup-1, ugroup
- if (u_idx .ge. 1) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +g_VAC_uL111t(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
- &+g_VAC_uL111t(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +g_VAC_uL111t(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)*CL111tL0(u_idx)&
- &+g_VAC_uL111t(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)*CL111tL1(u_idx)
- endif
- enddo
- !~defect to group
- !L111t emit vac join group
- if (ugroup .eq. 1) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +g_VAC_L111t(N_L111t)*CL111t(N_L111t)*uf0(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +g_VAC_L111t(N_L111t)*CL111t(N_L111t)*(N_L111t+1-mesh_x0(ugroup))*uf1(ugroup)
- endif
- !L111t absorb SIA join group
- do isia1 = N_loop_start, N_L111t
- do isia2 = 1, N_SIAs_m
- if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_SIAs_L111t(isia2,isia1)*CSIAs(isia2)*CL111t(isia1)*uf0(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_SIAs_L111t(isia2,isia1)*CSIAs(isia2)*CL111t(isia1)&
- &*(isia1 +isia2 -mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- enddo
- !L111t absorb L111t join group
- do isia1 = N_loop_start, N_L111t
- do isia2 = isia1+1, N_L111t !not from N_Loop_start avoid reptition and same size
- temp = (isia1 + isia2)
- if ((temp .ge. mesh_ust(ugroup)) .and. (temp .le. mesh_ued(ugroup))) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111t_L111t(isia2,isia1)*CL111t(isia2)*CL111t(isia1)*uf0(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111t_L111t(isia2,isia1)*CL111t(isia2)*CL111t(isia1) &
- &*(isia1 + isia2 -mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- enddo
- !L111t absorb L111 join group
- do isia1 = N_loop_start, N_L111
- do isia2 = N_loop_start, N_L111t
- if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111_L111t(isia1,isia2)*CL111t(isia2)*CL111(isia1)*uf0(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111_L111t(isia1,isia2)*CL111t(isia2)*CL111(isia1)&
- &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- enddo
- !L111t absorb L100(smaller) join group
- do isia1 = N_loop_start, N_L111t
- do isia2 = N_loop_start, isia1-1 !isia1 > isia2
- if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
- dCL111tL0(ugroup) = dCL111tL0(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)*uf0(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)&
- &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- enddo
- !~~~group+group~~~
- !group- from uL111
- !group+ from uL111
- !group- from uL111t
- do u_idx1 = 1, Nu_L111t
- do u_idx2 =max(u_idx1,ugroup), Nu_L111t
- dCL111tL0(ugroup) = dCL111tL0(ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL1(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL1(u_idx1)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL0(ugroup)*CL111tL1(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(ugroup)*CL111tL1(u_idx1)
- enddo
- enddo
- !write (*,*) k_uL111t_uL111t
- do u_idx1 = 1, ugroup
- do u_idx2 = u_idx1, ugroup !from from 1, to avoid reptition
- dCL111tL0(ugroup) = dCL111tL0(ugroup) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L0L0(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL0(u_idx2) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L1L0(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL0(u_idx2) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L0L1(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL1(u_idx2) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL0_L1L1(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL1(u_idx2)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L0L0(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL0(u_idx2) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L1L0(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL0(u_idx2) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L0L1(u_idx1,u_idx2,ugroup)*CL111tL0(u_idx1)*CL111tL1(u_idx2) &
- &+k_uL111t_uL111t(u_idx1,u_idx2)*akaL1_L1L1(u_idx1,u_idx2,ugroup)*CL111tL1(u_idx1)*CL111tL1(u_idx2)
- enddo
- enddo
- !group- from uL100
- do u_idx1 = 1, Nu_L100
- do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t,Nu_L100)
- dCL111tL0(ugroup) = dCL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL1(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL1(ugroup)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1)*CL111tL1(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)*CL111tL1(ugroup)
- enddo
- enddo
- !group+ from uL100
- do u_idx1 = 1, ugroup
- do u_idx2 = 1, min(ugroup, Nu_L100)
- if (u_idx1 .eq. u_idx2) then
- factor = 0.5
- elseif (u_idx1 .gt. u_idx2) then
- factor = 1.0
- else
- factor = 0.
- endif
- dCL111tL0(ugroup) = dCL111tL0(ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)
- dCL111tL1(ugroup) = dCL111tL1(ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L0(u_idx1,u_idx2,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L1(u_idx1,u_idx2,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)
- enddo
- enddo
- !!add L111 trapped by C15 01052022
- !if (mesh_uidx(nsia) .le. mesh_uidx(N_lpc15)) then
- !do isia = N_SIAs_m+1, N_C15
- ! if ((isia+nsia) .le. N_C15) then
- ! dCL111t(nsia) = dCL111t(nsia) &
- ! & -k_C15_L111t(isia,mesh_uidx(nsia))*C_C15(isia)*CL111t(nsia)
- ! endif
- !enddo
- !endif
- enddo
- !write(*,*) dCL111tL1, dCL111tL0
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------L100-------------------
- !~ungrouped L100
- do nsia = N_loop_start, N_L100
- dCL100(nsia) = 0.
- if (nsia .le. N_C15) then
- !12/29/2021 add formation from cascade
- dCL100(nsia) = +dparate*fcascade_SIAs_L100(nsia) +C_C15(nsia)*f_trans100(nsia)
- endif
- do isia = 1, N_SIAs_m
- dCL100(nsia) = dCL100(nsia) -k_SIAs_L100(isia,nsia)*CSIAs(isia)*CL100(nsia)
- enddo
- do isia = 1, N_SIAs_m
- if ((nsia-isia) .ge. N_loop_start ) then
- dCL100(nsia) = dCL100(nsia) +k_SIAs_L100(isia,nsia-isia)*CSIAs(isia)*CL100(nsia-isia)
- endif
- enddo
- do nvac = 1, N_VACs_m
- dCL100(nsia) = dCL100(nsia) -k_VACs_L100(nvac,nsia)*CVACs(nvac)*CL100(nsia)
- enddo
- do nvac = 1, N_VACs_m
- if ((nsia+nvac) .le. N_L100) then
- dCL100(nsia) = dCL100(nsia) +k_VACs_L100(nvac,(nsia+nvac))*CVACs(nvac)*CL100(nsia+nvac)
- endif
- enddo
- !!!~reacrion with ungrouped L111
- do isia = N_loop_start, N_L111
- dCL100(nsia) = dCL100(nsia) -k_L111_L100(isia,nsia)*CL100(nsia)*CL111(isia)
- if ((nsia-isia) .ge. isia) then
- dCL100(nsia) = dCL100(nsia) +k_L111_L100(isia,nsia-isia)*CL100(nsia-isia)*CL111(isia)
- endif
- enddo
- !ungrouped L111t
- do isia = N_loop_start, N_L111t
- dCL100(nsia) = dCL100(nsia) -k_L111t_L100(isia,nsia)*CL100(nsia)*CL111t(isia)
- if ((nsia-isia) .ge. isia) then
- dCL100(nsia) = dCL100(nsia) +k_L111t_L100(isia,nsia-isia)*CL100(nsia-isia)*CL111t(isia)
- endif
- enddo
- !!!~add L100 formation from L111+L111
- if (nsia/2 .ge. N_Loop_start) then
- dCL100(nsia) = dCL100(nsia) +f_g2s*k_L111_L111(nsia/2,nsia/2)*CL111(nsia/2)*CL111(nsia/2) &
- & +f_g2s*k_L111t_L111t(nsia/2,nsia/2)*CL111t(nsia/2)*CL111t(nsia/2)&
- & +f_g2s*k_L111_L111t(nsia/2,nsia/2)*CL111(nsia/2)*CL111t(nsia/2)
- endif
- !!!~reacrion involving grouped L111t
- do ugroup = 1, Nu_L111t
- dCL100(nsia) = dCL100(nsia) -k_L100_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL100(nsia)*CL111tL0(ugroup) &
- &-k_L100_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL100(nsia)*CL111tL1(ugroup)
- enddo
- !!!~reacrion involving grouped L100
- do ugroup = 1, Nu_L100
- do nvac = 1, N_VACs_m
- if (((nvac+nsia).ge. mesh_ust(ugroup)) .and. ((nvac+nsia) .le. mesh_ued(ugroup))) then
- dCL100(nsia) = dCL100(nsia) +k_VACs_uL100(nvac,ugroup)*CVACs(nvac)*CL100L0(ugroup) &
- +k_VACs_uL100(nvac,ugroup)*v1(nsia+nvac,ugroup)*CVACs(nvac)*CL100L1(ugroup)
- endif
- enddo
- enddo
- dCL100(N_L100) = dCL100(N_L100) +g_SIA_uL100(1)*CL100L0(1) &
- & +g_SIA_uL100(1)*v1(N_L100+1,1)*CL100L1(1)
- !!!~emission
- if ((nsia .ge. (N_loop_start+1)) .and. (nsia .le. (N_L100-1))) then
- dCL100(nsia) = dCL100(nsia) -g_SIA_L100(nsia)*CL100(nsia) -g_VAC_L100(nsia)*CL100(nsia) &
- & +g_SIA_L100(nsia+1)*CL100(nsia+1) +g_VAC_L100(nsia-1)*CL100(nsia-1)
- endif
- if (nsia == N_loop_start) then
- dCL100(nsia) = dCL100(nsia) -g_VAC_L100(nsia)*CL100(nsia) +g_SIA_L100(nsia+1)*CL100(nsia+1)
- endif
- if (nsia == N_L100) then
- dCL100(nsia) = dCL100(nsia) -g_SIA_L100(nsia)*CL100(nsia) +g_VAC_L100(nsia-1)*CL100(nsia-1) &
- & -g_VAC_L100(nsia)*CL100(nsia)
- endif
- !add L100 formation from cascade overlap 01012022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas)) then
- dCL100(nsia) = dCL100(nsia) +f_L111toL100(nsia)*CascadeRate*CL111(nsia) &
- & +f_L111ttoL100(nsia)*CascadeRate*CL111t(nsia) &
- & +f_C15toL100(nsia)*CascadeRate*C_C15(nsia) &
- & -(1-f_L100toL100(nsia))*CascadeRate*CL100(nsia)
- endif
- enddo
- !write(*,*) dCVACsL0, dCVACsL1
- !!!!!!!!!!!!!!!
- !~group L100~ !
- !!!!!!!!!!!!!!!
- do ugroup = 1, Nu_L100
- dCL100L0(ugroup) = 0.
- dCL100L1(ugroup) = 0.
- !group- from group+SIA
- do isia = 1, N_SIAs_m
- dCL100L0(ugroup) = dCL100L0(ugroup) -k_SIAs_uL100(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)*CL100L0(ugroup) &
- & -k_SIAs_uL100(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)*CL100L1(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) -k_SIAs_uL100(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)*CL100L0(ugroup) &
- & -k_SIAs_uL100(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)*CL100L1(ugroup)
- enddo
- !group- from group+vac
- do nvac = 1, N_VACs_m
- dCL100L0(ugroup) = dCL100L0(ugroup) -k_VACs_uL100(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)*CL100L0(ugroup) &
- & -k_VACs_uL100(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)*CL100L1(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) -k_VACs_uL100(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)*CL100L0(ugroup) &
- & -k_VACs_uL100(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)*CL100L1(ugroup)
- enddo
- !group- from group+L111, L111t, L100
- do isia = N_loop_start, N_L111
- dCL100L0(ugroup) = dCL100L0(ugroup) -k_L111_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)*CL100L0(ugroup) &
- & -k_L111_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)*CL100L1(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) -k_L111_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)*CL100L0(ugroup) &
- & -k_L111_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)*CL100L1(ugroup)
- enddo
- do isia = N_loop_start, N_L111t
- dCL100L0(ugroup) = dCL100L0(ugroup) -k_L111t_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)*CL100L0(ugroup) &
- & -k_L111t_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)*CL100L1(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) -k_L111t_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)*CL100L0(ugroup) &
- & -k_L111t_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)*CL100L1(ugroup)
- enddo
- !group+ from group+SIA
- do isia = 1, N_SIAs_m
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- do ugroup2 = 1, ugroup
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +k_SIAs_uL100(isia,ugroup2)*akaL0_Idef_L0(ugroup,isia,ugroup2)&
- &*CSIAs(isia)*CL100L0(ugroup2)&
- &+k_SIAs_uL100(isia,ugroup2)*akaL0_Idef_L1(ugroup,isia,ugroup2)&
- &*CSIAs(isia)*CL100L1(ugroup2)
- dCL100L1(ugroup) = dCL100L1(ugroup) +k_SIAs_uL100(isia,ugroup2)*akaL1_Idef_L0(ugroup,isia,ugroup2)&
- &*CSIAs(isia)*CL100L0(ugroup2)&
- &+k_SIAs_uL100(isia,ugroup2)*akaL1_Idef_L1(ugroup,isia,ugroup2)&
- &*CSIAs(isia)*CL100L1(ugroup2)
- endif
- enddo
- enddo
- !group+ from group+vac
- do nvac = 1, N_VACs_m
- st = mesh_ust(ugroup)+nvac
- ed = mesh_ued(ugroup)+nvac
- do ugroup2 = ugroup, Nu_L100
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +k_VACs_uL100(nvac,ugroup2)*akaL0_Vdef_L0(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL100L0(ugroup2)&
- &+k_VACs_uL100(nvac,ugroup2)*akaL0_Vdef_L1(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL100L1(ugroup2)
- dCL100L1(ugroup) = dCL100L1(ugroup) +k_VACs_uL100(nvac,ugroup2)*akaL1_Vdef_L0(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL100L0(ugroup2)&
- &+k_VACs_uL100(nvac,ugroup2)*akaL1_Vdef_L1(ugroup,nvac,ugroup2)&
- &*CVACs(nvac)*CL100L1(ugroup2)
- endif
- enddo
- enddo
- !group+ from group+L111
- do isia = N_loop_start, N_L111
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- do ugroup2 = 1, ugroup
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111_uL100(isia,ugroup2)*akaL0_Idef_L0(ugroup,isia,ugroup2)&
- &*CL111(isia)*CL100L0(ugroup2)&
- &+k_L111_uL100(isia,ugroup2)*akaL0_Idef_L1(ugroup,isia,ugroup2)&
- &*CL111(isia)*CL100L1(ugroup2)
- dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111_uL100(isia,ugroup2)*akaL1_Idef_L0(ugroup,isia,ugroup2)&
- &*CL111(isia)*CL100L0(ugroup2)&
- &+k_L111_uL100(isia,ugroup2)*akaL1_Idef_L1(ugroup,isia,ugroup2)&
- &*CL111(isia)*CL100L1(ugroup2)
- endif
- enddo
- enddo
- !group+ from group+L111t
- do isia = N_loop_start, N_L111t
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- do ugroup2 = 1, ugroup
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111t_uL100(isia,ugroup2)*akaL0_Idef_L0(ugroup,isia,ugroup2)&
- &*CL111t(isia)*CL100L0(ugroup2)&
- &+k_L111t_uL100(isia,ugroup2)*akaL0_Idef_L1(ugroup,isia,ugroup2)&
- &*CL111t(isia)*CL100L1(ugroup2)
- dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111t_uL100(isia,ugroup2)*akaL1_Idef_L0(ugroup,isia,ugroup2)&
- &*CL111t(isia)*CL100L0(ugroup2)&
- &+k_L111t_uL100(isia,ugroup2)*akaL1_Idef_L1(ugroup,isia,ugroup2)&
- &*CL111t(isia)*CL100L1(ugroup2)
- endif
- enddo
- enddo
- !group- from group emission SIA, VAC
- dCL100L0(ugroup) = dCL100L0(ugroup) -g_SIA_uL100(ugroup)*abL0_L0(ugroup)*CL100L0(ugroup)&
- &-g_SIA_uL100(ugroup)*abL0_L1(ugroup)*CL100L1(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) -g_SIA_uL100(ugroup)*abL1_L0(ugroup)*CL100L0(ugroup)&
- &-g_SIA_uL100(ugroup)*abL1_L1(ugroup)*CL100L1(ugroup)
- dCL100L0(ugroup) = dCL100L0(ugroup) -g_VAC_uL100(ugroup)*abL0_L0(ugroup)*CL100L0(ugroup)&
- &-g_VAC_uL100(ugroup)*abL0_L1(ugroup)*CL100L1(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) -g_VAC_uL100(ugroup)*abL1_L0(ugroup)*CL100L0(ugroup)&
- &-g_VAC_uL100(ugroup)*abL1_L1(ugroup)*CL100L1(ugroup)
- !group+ from group emission SIA, VAC
- do u_idx = ugroup, ugroup+1
- if (u_idx .le. Nu_L100) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +g_SIA_uL100(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
- &+g_SIA_uL100(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
- dCL100L1(ugroup) = dCL100L1(ugroup) +g_SIA_uL100(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
- &+g_SIA_uL100(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
- endif
- enddo
- do u_idx = ugroup-1, ugroup
- if (u_idx .ge. 1) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +g_VAC_uL100(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
- &+g_VAC_uL100(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
- dCL100L1(ugroup) = dCL100L1(ugroup) +g_VAC_uL100(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)*CL100L0(u_idx)&
- &+g_VAC_uL100(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)*CL100L1(u_idx)
- endif
- enddo
- !~defect to group
- !L100 emit vac join group
- if (ugroup .eq. 1) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +g_VAC_L100(N_L100)*CL100(N_L100)*uf0(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) +g_VAC_L100(N_L100)*CL100(N_L100)*(N_L100+1-mesh_x0(ugroup))*uf1(ugroup)
- endif
- !L100 absorb SIA join group
- do isia1 = N_L100-N_SIAs_m, N_L100
- do isia2 = 1, N_SIAs_m
- if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +k_SIAs_L100(isia2,isia1)*CSIAs(isia2)*CL100(isia1)*uf0(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) +k_SIAs_L100(isia2,isia1)*CSIAs(isia2)*CL100(isia1)&
- &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- enddo
- !L100 absorb L111t join group
- do isia1 = N_loop_start, N_L111t
- do isia2 = isia1, N_L100 !isia2 > isia1
- if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)*uf0(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111t_L100(isia1,isia2)*CL100(isia2)*CL111t(isia1)&
- &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- enddo
- !L100 absorb L111 join group
- do isia1 = N_loop_start, N_L111
- do isia2 = isia1, N_L100 !isia2 > isia1
- if ((isia1 + isia2) .ge. mesh_ust(ugroup) .and. (isia1 + isia2) .le. mesh_ued(ugroup)) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +k_L111_L100(isia1,isia2)*CL100(isia2)*CL111(isia1)*uf0(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) +k_L111_L100(isia1,isia2)*CL100(isia2)*CL111(isia1)&
- &*(isia1 + isia2-mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- enddo
- !L100 formation from L111+L111
- do isia1 = N_loop_start, N_L111
- if (2*isia1 .ge. mesh_ust(ugroup) .and. 2*isia1 .le. mesh_ued(ugroup)) then
- dCL100L0(ugroup) = dCL100L0(ugroup) +f_g2s*k_L111_L111(isia1,isia1)*CL111(isia1)*CL111(isia1)*uf0(ugroup) &
- & +f_g2s*k_L111_L111t(isia1,isia1)*CL111(isia1)*CL111t(isia1)*uf0(ugroup) &
- & +f_g2s*k_L111t_L111t(isia1,isia1)*CL111t(isia1)*CL111t(isia1)*uf0(ugroup)
- dCL100L1(ugroup) = dCL100L1(ugroup) &
- &+f_g2s*k_L111_L111(isia1,isia1)*CL111(isia1)*CL111(isia1)*(isia1 + isia1-mesh_x0(ugroup))*uf1(ugroup) &
- &+f_g2s*k_L111_L111t(isia1,isia1)*CL111(isia1)*CL111t(isia1)*(isia1 + isia1-mesh_x0(ugroup))*uf1(ugroup) &
- &+f_g2s*k_L111t_L111t(isia1,isia1)*CL111t(isia1)*CL111t(isia1)*(isia1 + isia1-mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- !~~~group+group~~~
- !group- from uL111
- !group+ from uL111
- !group+ from uL100
- !group- from uL111t
- do u_idx1 = 1, Nu_L111t
- do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t, Nu_L100)
- dCL100L0(ugroup) = dCL100L0(ugroup) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL1(u_idx1) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL1(u_idx1)
- dCL100L1(ugroup) = dCL100L1(ugroup) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL0(u_idx1) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL100L0(ugroup)*CL111tL1(u_idx1) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(ugroup)*CL111tL1(u_idx1)
- enddo
- enddo
- !group+ from uL111t
- do u_idx1 = 1, ugroup
- do u_idx2 = 1, min(ugroup, Nu_L100)
- if (u_idx1 .eq. u_idx2) then
- factor = 0.5
- elseif (u_idx1 .lt. u_idx2) then
- factor = 1.0
- else
- factor = 0.
- endif
- dCL100L0(ugroup) = dCL100L0(ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L0(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L0(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L0L1(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL0_L1L1(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)
- dCL100L1(ugroup) = dCL100L1(ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L0(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L0(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L0L1(u_idx2,u_idx1,ugroup)*CL100L0(u_idx2)*CL111tL1(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx2)*akaL1_L1L1(u_idx2,u_idx1,ugroup)*CL100L1(u_idx2)*CL111tL1(u_idx1)
- enddo
- enddo
- !!add L111 trapped by C15 01052022
- !if (mesh_uidx(nsia) .le. mesh_uidx(N_lpc15)) then
- !do isia = N_SIAs_m+1, N_C15
- ! if ((isia+nsia) .le. N_C15) then
- ! dCL111t(nsia) = dCL111t(nsia) &
- ! & -k_C15_L111t(isia,mesh_uidx(nsia))*C_C15(isia)*CL111t(nsia)
- ! endif
- !enddo
- !endif
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------V1-------------------
- dCVACs(1) = 0
- dsinkVACs(1) = +loss_VACs(1) *(CVACs(1)-Ceq_VACs(1))
- dCVACs(1) = dparate*fcascade_VACs(1) - loss_VACs(1) *(CVACs(1)-Ceq_VACs(1)) &
- & -3* k_VACs_VACs(1,1)*CVACs(1)*CVACs(1)
- do isia= 1, N_SIAs_m
- dCVACs(1) = dCVACs(1) -k_SIAs_VACs(isia,1)*CSIAs(isia)*CVACs(1)
- enddo
- do nvac= 1, N_VACs
- if ((nvac-1) .ge. 1 .and. (nvac-1) .le. N_SIAs_m) then
- dCVACs(1) = dCVACs(1) +k_SIAs_VACs(nvac-1,nvac)*CSIAs(nvac-1)*CVACs(nvac)
- endif
- enddo
- do nvac =1, N_VACs-1
- dCVACs(1) = dCVACs(1) -k_VACs_VACs(1,nvac)*CVACs(1)*CVACs(nvac)
- enddo
- !with ungrouped L111
- do isia = N_loop_start, N_L111
- dCVACs(1) = dCVACs(1) - k_VACs_L111(1,isia)*CVACs(1)*CL111(isia)
- if ((isia+1) .le. N_VACs) then
- dCVACs(1) = dCVACs(1) + k_VACs_L111(isia+1,isia)*CVACs(isia+1)*CL111(isia)
- endif
- dCVACs(1) = dCVACs(1) + g_VAC_L111(isia)*CL111(isia)
- enddo
- !with ungrouped L111t
- do isia = N_loop_start, N_L111t
- dCVACs(1) = dCVACs(1) -k_VACs_L111t(1,isia)*CVACs(1)*CL111t(isia)
- if ((isia+1) .le. N_VACs) then
- dCVACs(1) = dCVACs(1) +k_VACs_L111t(isia+1,isia)*CVACs(isia+1)*CL111t(isia)
- endif
- dCVACs(1) = dCVACs(1) +g_VAC_L111t(isia)*CL111t(isia)
- enddo
- !with ungrouped L100
- do isia = N_loop_start, N_L100
- dCVACs(1) = dCVACs(1) -k_VACs_L100(1,isia)*CVACs(1)*CL100(isia)
- dCVACs(1) = dCVACs(1) +g_VAC_L100(isia)*CL100(isia)
- enddo
- do isia = N_C15_st, N_C15
- dCVACs(1) = dCVACs(1) -k_VACs_C15(1,isia)*CVACs(1)*C_C15(isia)
- if ((1+isia) .le. N_VACs_m) then
- dCVACs(1) = dCVACs(1) +k_VACs_C15(1+isia,isia)*CVACs(1+isia)*C_C15(isia)
- endif
- enddo
- do nvac = 2, N_VACs
- dCVACs(1) = dCVACs(1) +g_VAC_VACs(nvac)*CVACs(nvac)
- enddo
- do isia = N_C15_st, N_C15-1
- dCVACs(1) = dCVACs(1) +g_VAC_C15(isia)*C_C15(isia)
- enddo
- do isia = 2, N_SIAs_m
- dCVACs(1) = dCVACs(1) +g_VAC_SIAs(isia)*CSIAs(isia)
- enddo
- dCVACs(1) = dCVACs(1) + 3*g_VAC_VACs(2)*CVACs(2)
- !reaction involving grouped
- !group L111
- !group L111t
- do u_idx = 1, Nu_L111t
- dCVACs(1) = dCVACs(1) -k_VACs_uL111t(1,u_idx)*adft_L0(u_idx)*CVACs(1)*CL111tL0(u_idx) &
- &-k_VACs_uL111t(1,u_idx)*adft_L1(u_idx)*CVACs(1)*CL111tL1(u_idx)
- do nvac = 1, N_VACs
- if ((nvac-1) .ge. mesh_ust(u_idx) .and. (nvac-1) .le. mesh_ued(u_idx)) then
- dCVACs(1) = dCVACs(1) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx) &
- & +k_VACs_uL111t(nvac,u_idx)*v1(nvac-1,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
- endif
- enddo
- dCVACs(1) = dCVACs(1) +g_VAC_uL111t(u_idx)*adft_L0(u_idx)*CL111tL0(u_idx)&
- &+g_VAC_uL111t(u_idx)*adft_L1(u_idx)*CL111tL1(u_idx)
- enddo
- !group L100
- do u_idx = 1, Nu_L100
- dCVACs(1) = dCVACs(1) -k_VACs_uL100(1,u_idx)*adft_L0(u_idx)*CVACs(1)*CL100L0(u_idx) &
- &-k_VACs_uL100(1,u_idx)*adft_L1(u_idx)*CVACs(1)*CL100L1(u_idx)
- dCVACs(1) = dCVACs(1) +g_VAC_uL100(u_idx)*adft_L0(u_idx)*CL100L0(u_idx)&
- &+g_VAC_uL100(u_idx)*adft_L1(u_idx)*CL100L1(u_idx)
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------mibile Vn-------------------
- do nvac_m = 2, N_VACs_m
- dCVACs(nvac_m) = 0
- dsinkVACs(nvac_m) = +loss_VACs(nvac_m)*(CVACs(nvac_m)-Ceq_VACs(nvac_m))
- dCVACs(nvac_m) = +dparate*fcascade_VACs(nvac_m) &
- & -loss_VACs(nvac_m)*(CVACs(nvac_m)-Ceq_VACs(nvac_m))
- do isia= 1, N_SIAs_m
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_SIAs_VACs(isia,nvac_m)*CSIAs(isia)*CVACs(nvac_m)
- enddo
- do isia= 1, N_SIAs_m
- dCVACs(nvac_m) = dCVACs(nvac_m) +k_SIAs_VACs(isia,isia+nvac_m)*CSIAs(isia)*CVACs(isia+nvac_m)
- enddo
- do nvac =1, N_VACs
- if ((nvac_m+nvac) .le. N_VACs) then
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_VACs(nvac_m,nvac)*CVACs(nvac_m)*CVACs(nvac)
- endif
- enddo
- do nvac =1, nvac_m/2
- if ((nvac_m-nvac) .ge. 1) then
- dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_VACs(nvac,nvac_m-nvac)*CVACs(nvac_m-nvac)*CVACs(nvac)
- endif
- enddo
- !with ungrouped L111
- do isia = N_loop_start, N_L111
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_L111(nvac_m,isia)*CVACs(nvac_m)*CL111(isia)
- if ((isia+nvac_m) .le. N_VACs) then
- dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_L111(isia+nvac_m,isia)*CVACs(isia+nvac_m)*CL111(isia)
- endif
- enddo
- !with ungrouped L111t
- do isia = N_loop_start, N_L111t
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_L111t(nvac_m,isia)*CVACs(nvac_m)*CL111t(isia)
- if ((isia+nvac_m) .le. N_VACs) then
- dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_L111t(isia+nvac_m,isia)*CVACs(isia+nvac_m)*CL111t(isia)
- endif
- enddo
- !with ungrouped N_L100
- do isia = N_loop_start, N_L100
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_L100(nvac_m,isia)*CVACs(nvac_m)*CL100(isia)
- enddo
- !reaction involving grouped
- !grouped L111
- !grouped L111t
- do u_idx = 1, Nu_L111t
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_uL111t(nvac_m,u_idx)*adft_L0(u_idx)*CVACs(nvac_m)*CL111tL0(u_idx) &
- & -k_VACs_uL111t(nvac_m,u_idx)*adft_L1(u_idx)*CVACs(nvac_m)*CL111tL1(u_idx)
- do nvac = N_L111t, N_VACs
- if (((nvac-nvac_m) .ge. mesh_ust(u_idx)) .and. ((nvac-nvac_m) .le. mesh_ued(u_idx))) then
- dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx) &
- & +k_VACs_uL111t(nvac,u_idx)*v1(nvac-nvac_m,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
- endif
- enddo
- enddo
- !group L100
- do u_idx = 1, Nu_L100
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_uL100(nvac_m,u_idx)*adft_L0(u_idx)*CVACs(nvac_m)*CL100L0(u_idx) &
- & -k_VACs_uL100(nvac_m,u_idx)*adft_L1(u_idx)*CVACs(nvac_m)*CL100L1(u_idx)
- enddo
- do isia = N_C15_st, N_C15
- dCVACs(nvac_m) = dCVACs(nvac_m) -k_VACs_C15(nvac_m,isia)*CVACs(nvac_m)*C_C15(isia)
- enddo
- do isia = N_C15_st, N_C15
- if ((nvac_m+isia) .le. N_VACs_m) then
- dCVACs(nvac_m) = dCVACs(nvac_m) +k_VACs_C15(nvac_m+isia,isia)*CVACs(nvac_m+isia)*C_C15(isia)
- endif
- enddo
- if ((nvac_m+1) .le. N_VACs) then
- dCVACs(nvac_m) = dCVACs(nvac_m) +g_VAC_VACs(nvac_m+1)*CVACs(nvac_m+1)-g_SIA_VACs(nvac_m)*CVACs(nvac_m)
- endif
- if ((nvac_m-1) .ge. 1) then
- dCVACs(nvac_m) = dCVACs(nvac_m) +g_SIA_VACs(nvac_m-1)*CVACs(nvac_m-1)-g_VAC_VACs(nvac_m)*CVACs(nvac_m)
- endif
- enddo
- dCVACs(2) = dCVACs(2) + k_VACs_VACs(1,1)*CVACs(1)*CVACs(1) -g_VAC_VACs(2)*CVACs(2)
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------immibile Vn-------------------
- do nvac_im = N_VACs_m+1, N_VACs
- dCVACs(nvac_im) = 0
- do isia= 1, N_SIAs_m
- dCVACs(nvac_im) = dCVACs(nvac_im) -k_SIAs_VACs(isia,nvac_im)*CSIAs(isia)*CVACs(nvac_im)
- enddo
- do isia= 1, N_SIAs_m
- if ((isia+nvac_im) .le. N_VACs) then
- dCVACs(nvac_im) = dCVACs(nvac_im) +k_SIAs_VACs(isia,isia+nvac_im)*CSIAs(isia)*CVACs(isia+nvac_im)
- endif
- enddo
- do nvac =1, N_VACs_m
- if ((nvac_im+nvac) .le. N_VACs) then
- dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_VACs(nvac,nvac_im)*CVACs(nvac_im)*CVACs(nvac)
- endif
- enddo
- do nvac =1, nvac_im/2
- if ((nvac_im-nvac) .ge. 1 .and. (nvac .le. N_VACs_m)) then
- dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_VACs(nvac,nvac_im-nvac)*CVACs(nvac_im-nvac)*CVACs(nvac)
- endif
- enddo
- !with ungrouped L111
- do isia = N_loop_start, N_L111
- dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_L111(nvac_im,isia)*CVACs(nvac_im)*CL111(isia)
- if ((isia+nvac_im) .le. N_VACs) then
- dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_L111(isia+nvac_im,isia)*CVACs(isia+nvac_im)*CL111(isia)
- endif
- enddo
- !with ungrouped L111t
- do isia = N_loop_start, N_L111t
- dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_L111t(nvac_im,isia)*CVACs(nvac_im)*CL111t(isia)
- if ((isia+nvac_im) .le. N_VACs) then
- dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_L111t(isia+nvac_im,isia)*CVACs(isia+nvac_im)*CL111t(isia)
- endif
- enddo
- !with grouped L111
- !with grouped L111t
- do u_idx = 1, Nu_L111t
- dCVACs(nvac_im) = dCVACs(nvac_im) -k_VACs_uL111t(nvac_im,u_idx)*adft_L0(u_idx)*CVACs(nvac_im)*CL111tL0(u_idx) &
- & -k_VACs_uL111t(nvac_im,u_idx)*adft_L1(u_idx)*CVACs(nvac_im)*CL111tL1(u_idx)
- do nvac = N_L111t, N_VACs
- if (((nvac-nvac_im) .ge. mesh_ust(u_idx)) .and. ((nvac-nvac_im) .le. mesh_ued(u_idx))) then
- dCVACs(nvac_im) = dCVACs(nvac_im) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)*CL111tL0(u_idx) &
- & +k_VACs_uL111t(nvac,u_idx)*v1(nvac-nvac_im,u_idx)*CVACs(nvac)*CL111tL1(u_idx)
- endif
- enddo
- enddo
- if ((nvac_im .le. Nmax_cas) .and. (nvac_im .ge. Nmin_cas)) then
- dCVACs(nvac_im) = dCVACs(nvac_im)-(1-f_VACtoVAC(nvac_im))*CascadeRate*CVACs(nvac_im)
- endif
- if ((nvac_im+1) .le. N_VACs) then
- dCVACs(nvac_im) = dCVACs(nvac_im) +g_VAC_VACs(nvac_im+1)*CVACs(nvac_im+1)-g_SIA_VACs(nvac_im)*CVACs(nvac_im)
- endif
- if ((nvac_im-1) .ge. 1) then
- dCVACs(nvac_im) = dCVACs(nvac_im) +g_SIA_VACs(nvac_im-1)*CVACs(nvac_im-1)-g_VAC_VACs(nvac_im)*CVACs(nvac_im)
- endif
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !-----------trap------------------
- dCtrap = 0.
- !do nsia = N_Loop_start, N_L111
- ! dCtrap = dCtrap -k_trap_L111(nsia)*Ctrap*CL111(nsia)
- !enddo
- do nsia = N_Loop_start, N_L111t
- dCtrap = dCtrap -k_trap_L111t(nsia)*Ctrap*CL111t(nsia)
- enddo
- do ugroup = 1, Nu_L111t
- dCtrap = dCtrap -k_trap_uL111t(ugroup)*adft_L0(ugroup)*Ctrap*CL111tL0(ugroup) &
- &-k_trap_uL111t(ugroup)*adft_L1(ugroup)*Ctrap*CL111tL1(ugroup)
- enddo
- do nvac =1, N_VACs_m
- dCtrap = dCtrap -k_trap_VACs(nvac)*Ctrap*CVACs(nvac)
- enddo
- end subroutine f_f77
- !-----------------------------------------------------------------------
- !------------------ Jacobi Matrix --------------------------------------
- !-----------------------------------------------------------------------
- subroutine jac_column_f77(neq, t, u, j, ia, ja, pd)
- !~ subroutine jac_column_f77(neq, t, u, j, ia, pd)
- use coeffi
- implicit none
- !f2py intent(hide) neq, ia, ja
- !f2py intent(out) pd
- integer neq, j, ia, ja
- double precision t, pd
- double precision, target :: u
- dimension u(neq), ia(neq + 1), ja(*), pd(neq)
- integer isia, isia1, nsia, nsia_m,nvac_m, nvac_im, nvac,nvac_, isia2, isia3, temp1,temp2
- integer x, Cumu_lgh, check, nmesh, idx_meh, u_idx, jst,jed
- integer x1,x2,temp,Loop_sia
- double precision, pointer :: Ctrap
- double precision, dimension(:), pointer :: CSIAs=>null(), CVACs=>null(), C_C15=>null()
- double precision, dimension(:), pointer :: CL111=>null(), CL111t=>null(), CL111tL0=>null(), CL111tL1=>null()
- double precision, dimension(:), pointer :: CL100=>null(), CL100L0=>null(), CL100L1=>null(),CVACsL0=>null(), CVACsL1=>null()
- integer N_offsinkL111, N_offsinkL111t, N_offsinkL111tL0, N_sink
- integer N_offSIA, N_offVAC,N_offVACg,N_offVACg2, N_offC15, N_offL111, N_offL111t, N_offL111tL0, N_offL111tL1
- integer N_offL100, N_offL100L0, bin_length
- integer st,ed, st1, ed1, ugroup, ugroup2, u_idx1, u_idx2,uidx,uidx2
- double precision factor
- N_offsinkL111 = N_SIAs_m +N_VACs_m +N_L111
- N_offsinkL111t = N_offsinkL111 +N_L111t
- N_offsinkL111tL0= N_offsinkL111t +Nu_L111t
- N_sink = N_offsinkL111tL0 +Nu_L111t !sink L111
- N_offSIA = N_sink +N_SIAs_m
- N_offVAC = N_offSIA +N_VACs
- N_offC15 = N_offVAC +N_C15
- N_offL111 = N_offC15 +N_L111
- N_offL111t = N_offL111 +N_L111t
- N_offL111tL0 = N_offL111t +Nu_L111t
- N_offL111tL1 = N_offL111tL0 +Nu_L111t
- N_offL100 = N_offL111tL1 +N_L100
- N_offL100L0 = N_offL100 +Nu_L100
- bin_length = N_offL100L0 +Nu_L100 +1
- CSIAs(1:N_SIAs_m) => u(N_sink+1:N_SIAs_m)
- CVACs(1:N_VACs) => u(N_offSIA+1:N_VACs)
- C_C15(1:N_C15) => u(N_offVAC+1:N_C15)
- CL111(1:N_L111) => u(N_offC15+1:N_L111)
- CL111t(1:N_L111t) => u(N_offL111+1:N_L111t)
- CL111tL0(1:Nu_L111t) => u(N_offL111t+1:Nu_L111t)
- CL111tL1(1:Nu_L111t) => u(N_offL111tL0+1:Nu_L111t)
- CL100(1:N_L100) => u(N_offL111tL1+1:N_L100)
- CL100L0(1:Nu_L100) => u(N_offL100+1:Nu_L100)
- CL100L1(1:Nu_L100) => u(N_offL100L0+1:Nu_L100)
- Ctrap => u(bin_length)
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------SIA1 column-------------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- if (j == N_sink+1) then
- !--SIA1--
- pd(+1) = loss_SIAs(1)
- pd(N_sink+1) = -loss_SIAs(1)
- do isia = 1,N_SIAs_m
- pd(N_sink+1) =pd(N_sink+1) -k_SIAs_SIAs(1,isia)*CSIAs(isia)
- enddo
- do nvac = 1,N_VACs
- pd(N_sink+1) =pd(N_sink+1) -k_SIAs_VACs(1,nvac)*CVACs(nvac)
- enddo
- do isia = N_loop_start, N_L111
- pd(N_sink+1) =pd(N_sink+1) -k_SIAs_L111(1,isia)*CL111(isia)
- enddo
- do isia = N_loop_start, N_L111t
- pd(N_sink+1) =pd(N_sink+1) -k_SIAs_L111t(1,isia)*CL111t(isia)
- enddo
- do isia = N_loop_start, N_L100
- pd(N_sink+1) =pd(N_sink+1) -k_SIAs_L100(1,isia)*CL100(isia)
- enddo
- do isia = N_C15_st, N_C15
- if ((1+isia) .le. N_C15) then
- pd(N_sink+1) =pd(N_sink+1) -k_SIAs_C15(1,isia)*C_C15(isia)
- endif
- enddo
- pd(N_sink+1) =pd(N_sink+1) -7*k_SIAs_SIAs(1,1)*CSIAs(1)
- do u_idx =1, Nu_L100
- 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))
- enddo
- do u_idx =1, Nu_L111t
- 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))
- enddo
- !--mobile SIAs--
- do nsia_m = 2, N_SIAs_m
- 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)
- enddo
- pd(N_sink+2) = pd(N_sink+2) +3*k_SIAs_SIAs(1,1)*CSIAs(1)
- !--Vn--
- do nvac = 1, N_VACs
- pd(N_sink+N_SIAs_m+nvac) = - k_SIAs_VACs(1,nvac)*CVACs(nvac)
- if ((nvac+1) .le. N_VACs) then
- pd(N_sink+N_SIAs_m+nvac) = pd(N_sink+N_SIAs_m+nvac)+ k_SIAs_VACs(1,nvac+1)*CVACs(nvac+1)
- endif
- enddo
- !--Group Vn-- !Modifedbysalu
- !--C15--
- do isia = N_C15_st, N_C15
- if ((isia+1) .le. N_C15) then
- pd(N_offVAC+isia) = - k_SIAs_C15(1,isia)*C_C15(isia)
- endif
- if ((isia-1) .ge. N_C15_st) then
- pd(N_offVAC+isia)= pd(N_offVAC+isia) + k_SIAs_C15(1,isia-1)*C_C15(isia-1)
- endif
- enddo
- !--L111--
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = -k_SIAs_L111(1,isia)*CL111(isia)
- if ((isia-1) .ge. N_loop_start) then
- pd(N_offC15+isia) =pd(N_offC15+isia) +k_SIAs_L111(1,isia-1)*CL111(isia-1)
- endif
- enddo
- !--L111t--
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = -k_SIAs_L111t(1,isia)*CL111t(isia)
- if ((isia-1) .ge. N_loop_start) then
- pd(N_offL111+isia) =pd(N_offL111+isia) +k_SIAs_L111t(1,isia-1)*CL111t(isia-1)
- endif
- enddo
- !--L111tL0,L1
- do u_idx = 1, Nu_L111t
- 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))
- 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))
- st = mesh_ust(u_idx) -1
- ed = mesh_ued(u_idx) -1
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+u_idx)= pd(N_offL111t+u_idx) +k_SIAs_uL111t(1,ugroup2)&
- & *(akaL0_Idef_L0(u_idx,1,ugroup2)*CL111tL0(ugroup2) +akaL0_Idef_L1(u_idx,1,ugroup2)*CL111tL1(ugroup2))
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_uL111t(1,ugroup2)&
- & *(akaL1_Idef_L0(u_idx,1,ugroup2)*CL111tL0(ugroup2) +akaL1_Idef_L1(u_idx,1,ugroup2)*CL111tL1(ugroup2))
- endif
- enddo
- if (u_idx .eq. 1) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_SIAs_L111t(1,N_L111t)*CL111t(N_L111t)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_L111t(1,N_L111t)*CL111t(N_L111t) &
- &*(N_L111t +1 -mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !--L100--
- do isia = N_loop_start, N_L100
- pd(N_offL111tL1+isia) = -k_SIAs_L100(1,isia)*CL100(isia)
- if ((isia-1) .ge. N_loop_start) then
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_SIAs_L100(1,isia-1)*CL100(isia-1)
- endif
- enddo
- !--L100L0,L1
- do u_idx = 1, Nu_L100
- 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))
- 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))
- st = mesh_ust(u_idx) -1
- ed = mesh_ued(u_idx) -1
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_SIAs_uL100(1,ugroup2)&
- & *(akaL0_Idef_L0(u_idx,1,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,1,ugroup2)*CL100L1(ugroup2))
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_SIAs_uL100(1,ugroup2)&
- & *(akaL1_Idef_L0(u_idx,1,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,1,ugroup2)*CL100L1(ugroup2))
- endif
- enddo
- if (u_idx .eq. 1) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_SIAs_L100(1,N_L100)*CL100(N_L100)*uf0(u_idx)
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx)+k_SIAs_L100(1,N_L100)*CL100(N_L100) &
- &*(N_L100 +1 -mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------mobile SIA block--------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j > N_sink+1 .and. j <= N_sink+N_SIAs_m) then
- nsia_m = j - (N_sink)
- pd(nsia_m) = loss_SIAs(nsia_m)
- pd(N_sink+nsia_m) = -loss_SIAs(nsia_m)
- !--SIAs--
- do isia = 1,N_SIAs_m
- pd(N_sink+isia) =pd(N_sink+isia)-k_SIAs_SIAs(nsia_m,isia)*CSIAs(isia)
- if ((nsia_m-isia) .ge.1 .and. (nsia_m-isia) .le. N_VACs) then
- pd(N_sink+isia) =pd(N_sink+isia)+k_SIAs_VACs(nsia_m,nsia_m-isia)*CVACs(nsia_m-isia)
- endif
- if ((isia-nsia_m) .ge. 1) then
- pd(N_sink+isia) =pd(N_sink+isia)+k_SIAs_SIAs(nsia_m,isia-nsia_m)*CSIAs(isia-nsia_m)
- if (nsia_m==(isia-nsia_m)) then
- pd(N_sink+isia) =pd(N_sink+isia)+k_SIAs_SIAs(nsia_m,isia-nsia_m)*CSIAs(isia-nsia_m)
- endif
- endif
- if (isia==1) then
- pd(N_sink+isia) =pd(N_sink+isia) + g_SIA_SIAs(nsia_m)
- endif
- if ((nsia_m+1) == isia .and. nsia_m .gt. 1) then
- pd(N_sink+isia) =pd(N_sink+isia) + g_VAC_SIAs(nsia_m)
- endif
- !write(*,*) size(pd)
- enddo
- do isia = 2,N_SIAs_m
- if (isia==nsia_m) then
- pd(N_sink+isia) =pd(N_sink+isia) -g_SIA_SIAs(isia) -g_VAC_SIAs(isia)
- do nsia = 1,N_SIAs_m
- pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_SIAs(nsia,isia)*CSIAs(nsia)
- enddo
- do nvac = 1, N_VACs
- pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_VACs(isia,nvac)*CVACs(nvac)
- enddo
- do nsia = N_C15_st, N_C15
- if ((isia+nsia) .le. N_C15) then
- pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_C15(isia,nsia)*C_C15(nsia)
- endif
- enddo
- do temp1 = N_loop_start, N_L111
- pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_L111(isia,temp1)*CL111(temp1)
- enddo
- do temp1 = N_loop_start, N_L111t
- pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_L111t(isia,temp1)*CL111t(temp1)
- enddo
- do temp1 = N_loop_start, N_L100
- pd(N_sink+isia) =pd(N_sink+isia) -k_SIAs_L100(isia,temp1)*CL100(temp1)
- enddo
- do u_idx =1, Nu_L100
- pd(N_sink+isia) =pd(N_sink+isia) &
- &-k_SIAs_uL100(isia,u_idx)*(adft_L0(u_idx)*CL100L0(u_idx) +adft_L1(u_idx)*CL100L1(u_idx))
- enddo
- do u_idx =1, Nu_L111t
- pd(N_sink+isia) =pd(N_sink+isia) &
- &-k_SIAs_uL111t(isia,u_idx)*(adft_L0(u_idx)*CL111tL0(u_idx) +adft_L1(u_idx)*CL111tL1(u_idx))
- enddo
- endif
- enddo
- if (nsia_m==2) then
- pd(N_sink+1) =pd(N_sink+1) + 3*g_SIA_SIAs(nsia_m)
- pd(N_sink+2) =pd(N_sink+2) - g_SIA_SIAs(nsia_m)
- endif
- !--VACs--
- do nvac = 1,N_VACs
- pd(N_offSIA+nvac) = -k_SIAs_VACs(nsia_m,nvac)*CVACs(nvac)
- if ((nvac+nsia_m) .le. N_VACs) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_SIAs_VACs(nsia_m,nvac+nsia_m)*CVACs(nvac+nsia_m)
- endif
- if (nvac == 1) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +g_VAC_SIAs(nsia_m)
- endif
- enddo
- !--C15--
- do isia = N_C15_st, N_C15
- if ((nsia_m+isia) .le. N_C15) then
- pd(N_offVAC+isia) = -k_SIAs_C15(nsia_m,isia)*C_C15(isia)
- endif
- if ((isia-nsia_m) .ge. N_C15_st) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia)+k_SIAs_C15(nsia_m,isia-nsia_m)*C_C15(isia-nsia_m)
- endif
- enddo
- !--L111--
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = -k_SIAs_L111(nsia_m,isia)*CL111(isia)
- if ((isia-nsia_m) .ge. N_loop_start) then
- pd(N_offC15+isia) = pd(N_offC15+isia)+k_SIAs_L111(nsia_m,isia-nsia_m)*CL111(isia-nsia_m)
- endif
- enddo
- !--L111t--
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = -k_SIAs_L111t(nsia_m,isia)*CL111t(isia)
- if ((isia-nsia_m) .ge. N_loop_start) then
- pd(N_offL111+isia) = pd(N_offL111+isia)+k_SIAs_L111t(nsia_m,isia-nsia_m)*CL111t(isia-nsia_m)
- endif
- enddo
- !--L111tL0,L1
- do u_idx = 1, Nu_L111t
- 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))
- 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))
- st = mesh_ust(u_idx) -nsia_m
- ed = mesh_ued(u_idx) -nsia_m
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_SIAs_uL111t(nsia_m,ugroup2)&
- & *(akaL0_Idef_L0(u_idx,nsia_m,ugroup2)*CL111tL0(ugroup2) &
- &+akaL0_Idef_L1(u_idx,nsia_m,ugroup2)*CL111tL1(ugroup2))
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_uL111t(nsia_m,ugroup2)&
- & *(akaL1_Idef_L0(u_idx,nsia_m,ugroup2)*CL111tL0(ugroup2) &
- &+akaL1_Idef_L1(u_idx,nsia_m,ugroup2)*CL111tL1(ugroup2))
- endif
- enddo
- do isia = N_loop_start, N_L111t
- if ((isia + nsia_m) .ge. mesh_ust(u_idx) .and. (isia + nsia_m) .le. mesh_ued(u_idx)) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_SIAs_L111t(nsia_m,isia)*CL111t(isia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) = pd(N_offL111tL0+u_idx) &
- &+k_SIAs_L111t(nsia_m,isia)*CL111t(isia)*(isia +nsia_m -mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- enddo
- !--L100--
- do isia = N_loop_start, N_L100
- pd(N_offL111tL1+isia) = -k_SIAs_L100(nsia_m,isia)*CL100(isia)
- if ((isia-nsia_m) .ge. N_loop_start) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_SIAs_L100(nsia_m,isia-nsia_m)*CL100(isia-nsia_m)
- endif
- enddo
- !--L100L0,L1
- do u_idx = 1, Nu_L100
- 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))
- 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))
- st = mesh_ust(u_idx) -nsia_m
- ed = mesh_ued(u_idx) -nsia_m
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_SIAs_uL100(nsia_m,ugroup2)&
- & *(akaL0_Idef_L0(u_idx,nsia_m,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,nsia_m,ugroup2)*CL100L1(ugroup2))
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_SIAs_uL100(nsia_m,ugroup2)&
- & *(akaL1_Idef_L0(u_idx,nsia_m,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,nsia_m,ugroup2)*CL100L1(ugroup2))
- endif
- enddo
- do isia = N_loop_start, N_L100
- if ((isia + nsia_m) .ge. mesh_ust(u_idx) .and. (isia + nsia_m) .le. mesh_ued(u_idx)) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_SIAs_L100(nsia_m,isia)*CL100(isia)*uf0(u_idx)
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) &
- &+k_SIAs_L100(nsia_m,isia)*CL100(isia)*(isia +nsia_m -mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------mobile VAC block--------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j > N_sink+N_SIAs_m .and. j <= N_sink+N_SIAs_m+N_VACs_m) then
- nvac_m = j - (N_sink+N_SIAs_m)
- pd(N_SIAs_m+nvac_m) = loss_VACs(nvac_m)
- !--SIAs--
- do isia = 1,N_SIAs_m
- pd(N_sink+isia) = pd(N_sink+isia) -k_SIAs_VACs(isia,nvac_m)*CSIAs(isia)
- if ((isia+nvac_m) .le. N_SIAs_m) then
- pd(N_sink+isia) = pd(N_sink+isia)+k_SIAs_VACs(isia+nvac_m,nvac_m)*CSIAs(isia+nvac_m)
- endif
- if ((isia+nvac_m) .le. N_C15 .and. (isia+nvac_m) .ge. N_C15_st) then
- pd(N_sink+isia) = pd(N_sink+isia)+k_VACs_C15(nvac_m,isia+nvac_m)*C_C15(isia+nvac_m)
- endif
- !notice
- Loop_sia = isia+nvac_m
- if ((Loop_sia .le. N_L111) .and. (Loop_sia .ge. N_loop_start)) then
- if (Loop_sia .eq. Loop_sia) then
- pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L111(nvac_m,(Loop_sia))*CL111(Loop_sia)
- endif
- endif
- Loop_sia = isia+nvac_m
- if ((Loop_sia .le. N_L111t) .and. (Loop_sia .ge. N_loop_start)) then
- if (Loop_sia .eq.Loop_sia) then
- pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L111t(nvac_m,(Loop_sia))*CL111t(Loop_sia)
- endif
- endif
- Loop_sia = isia+nvac_m
- if ((Loop_sia .le. N_L100) .and. (Loop_sia .ge. N_loop_start)) then
- if (Loop_sia .eq. Loop_sia) then
- pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L100(nvac_m,(Loop_sia))*CL100(Loop_sia)
- endif
- endif
- if (isia == 1) then
- if (nvac_m .gt. 1) then
- pd(N_sink+isia) =pd(N_sink+isia) +g_SIA_VACs(nvac_m)
- endif
- endif
- !SIA1-3 cannot form from V1-4 +ugroup, thus not write here
- enddo
- !-- VACs--
- do nvac = 1,N_VACs
- if ((nvac_m+nvac) .le. N_VACs) then
- pd(N_offSIA+nvac) = -k_VACs_VACs(nvac_m,nvac)*CVACs(nvac)
- endif
- if ((nvac-nvac_m) .ge. 1) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_VACs_VACs(nvac_m,nvac-nvac_m)*CVACs(nvac-nvac_m)
- if (nvac_m == (nvac-nvac_m)) then ! V2+V2, rate X2
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_VACs_VACs(nvac_m,nvac-nvac_m)*CVACs(nvac-nvac_m)
- endif
- endif
- if ((nvac_m-nvac) .ge. 1 .and. (nvac_m-nvac) .le. N_SIAs_m) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)+k_SIAs_VACs(nvac_m-nvac,nvac_m)*CSIAs(nvac_m-nvac)
- endif
- if (nvac == (nvac_m-1)) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +g_VAC_VACs(nvac_m)
- endif
- if (nvac == (nvac_m+1)) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +g_SIA_VACs(nvac_m)
- endif
- if ((nvac_m-nvac) .ge. N_C15_st) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +k_VACs_C15(nvac_m,nvac_m-nvac)*C_C15(nvac_m-nvac)
- endif
- if (nvac == nvac_m) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) -loss_VACs(nvac_m)
- do isia =1, N_SIAs_m
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_SIAs_VACs(isia, nvac_m)*CSIAs(isia)
- enddo
- do nvac_ =1, N_VACs
- if ((nvac_ + nvac_m) .le. N_VACs) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_VACs(nvac_m,nvac_)*CVACs(nvac_)
- endif
- enddo
- do isia= N_C15_st, N_C15
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_C15(nvac_m,isia)*C_C15(isia)
- enddo
- do temp1 = N_loop_start, N_L111
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_L111(nvac_m,temp1)*CL111(temp1)
- enddo
- do temp1 = N_loop_start, N_L111t
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_L111t(nvac_m,temp1)*CL111t(temp1)
- enddo
- do temp1 = N_loop_start, N_L100
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-k_VACs_L100(nvac_m,temp1)*CL100(temp1)
- enddo
- if (nvac .gt.1) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-g_SIA_VACs(nvac_m)-g_VAC_VACs(nvac_m)
- endif
- do u_idx =1, Nu_L100
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) &
- &-k_VACs_uL100(nvac,u_idx)*(adft_L0(u_idx)*CL100L0(u_idx) +adft_L1(u_idx)*CL100L1(u_idx))
- enddo
- do u_idx =1, Nu_L111t
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) &
- &-k_VACs_uL111t(nvac,u_idx)*(adft_L0(u_idx)*CL111tL0(u_idx) +adft_L1(u_idx)*CL111tL1(u_idx))
- enddo
- endif
- if (nvac == 1) then
- if (nvac_m .gt. 1) then
- pd(N_offSIA+1) =pd(N_offSIA+1) +g_VAC_VACs(nvac_m)
- endif
- if (nvac_m == 1) then
- pd(N_offSIA+1) =pd(N_offSIA+1) -6*k_VACs_VACs(1,1)*CVACs(1)
- endif
- if (nvac_m == 2) then
- pd(N_offSIA+1) =pd(N_offSIA+1) +2*g_VAC_VACs(nvac_m)
- endif
- endif
- if (nvac == 2) then
- if (nvac_m == 1) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac) +2*k_VACs_VACs(1,1)*CVACs(1)
- endif
- if (nvac_m == 2) then
- pd(N_offSIA+nvac) =pd(N_offSIA+nvac)-g_VAC_VACs(nvac_m)
- endif
- endif
- enddo
- !pd(N_offVAC+1) =pd(N_offVAC+1) +g_SIA_VACs(N_VACs)*CVACs(N_VACs)*uf0(u_idx)
- !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)
- !--C15--
- do isia = N_C15_st, N_C15
- pd(N_offVAC+isia) = -k_VACs_C15(nvac_m,isia)*C_C15(isia)
- if ((isia+nvac_m) .le. N_C15) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) &
- & +k_VACs_C15(nvac_m,isia+nvac_m)*C_C15(isia+nvac_m)
- endif
- enddo
- !--L111--
- !do isia = N_loop_start, N_L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = -k_VACs_L111(nvac_m,(isia))*CL111(isia)
- loop_sia = isia+nvac_m
- if (loop_sia .le. N_L111) then
- pd(N_offC15+isia) = pd(N_offC15+isia)+k_VACs_L111(nvac_m,(loop_sia))*CL111(loop_sia)
- endif
- enddo
- !--L111t--
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = -k_VACs_L111t(nvac_m,(isia))*CL111t(isia)
- loop_sia = isia+nvac_m
- if (loop_sia .le. N_L111t) then
- pd(N_offL111+isia) = pd(N_offL111+isia)+k_VACs_L111t(nvac_m,(loop_sia))*CL111t(loop_sia)
- endif
- do ugroup = 1, Nu_L111t
- if (((nvac_m+isia).ge. mesh_ust(ugroup)) .and. ((nvac_m+isia) .le. mesh_ued(ugroup))) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(nvac_m,ugroup)*CL111tL0(ugroup) &
- & +k_VACs_uL111t(nvac_m,ugroup)*v1(isia +nvac_m,ugroup)*CL111tL1(ugroup)
- endif
- enddo
- enddo
- !--L111tL0,L1
- do u_idx = 1, Nu_L111t
- 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))
- 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))
- st = mesh_ust(u_idx) +nvac_m
- ed = mesh_ued(u_idx) +nvac_m
- do ugroup2 = u_idx, Nu_L111t
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_VACs_uL111t(nvac_m,ugroup2)&
- & *(akaL0_Vdef_L0(u_idx,nvac_m,ugroup2)*CL111tL0(ugroup2) +akaL0_Vdef_L1(u_idx,nvac_m,ugroup2)*CL111tL1(ugroup2))
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_VACs_uL111t(nvac_m,ugroup2)&
- & *(akaL1_Vdef_L0(u_idx,nvac_m,ugroup2)*CL111tL0(ugroup2) +akaL1_Vdef_L1(u_idx,nvac_m,ugroup2)*CL111tL1(ugroup2))
- endif
- enddo
- enddo
- !--L100--
- do isia = N_loop_start, N_L100
- pd(N_offL111tL1+isia) = -k_VACs_L100(nvac_m,(isia))*CL100(isia)
- if ((isia+nvac_m) .le. N_L100) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia)+k_VACs_L100(nvac_m,(isia+nvac_m))*CL100(isia+nvac_m)
- endif
- do ugroup = 1, Nu_L100
- if (((nvac_m+isia).ge. mesh_ust(ugroup)) .and. ((nvac_m+isia) .le. mesh_ued(ugroup))) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_VACs_uL100(nvac_m,ugroup)*CL100L0(ugroup) &
- +k_VACs_uL100(nvac_m,ugroup)*v1(isia+nvac_m,ugroup)*CL100L1(ugroup)
- endif
- enddo
- enddo
- !--L100L0,L1
- do u_idx = 1, Nu_L100
- 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))
- 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))
- st = mesh_ust(u_idx) +nvac_m
- ed = mesh_ued(u_idx) +nvac_m
- do ugroup2 = u_idx, Nu_L100
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_VACs_uL100(nvac_m,ugroup2)&
- &*(akaL0_Vdef_L0(u_idx,nvac_m,ugroup2)*CL100L0(ugroup2) +akaL0_Vdef_L1(u_idx,nvac_m,ugroup2)*CL100L1(ugroup2))
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_VACs_uL100(nvac_m,ugroup2)&
- &*(akaL1_Vdef_L0(u_idx,nvac_m,ugroup2)*CL100L0(ugroup2) +akaL1_Vdef_L1(u_idx,nvac_m,ugroup2)*CL100L1(ugroup2))
- endif
- enddo
- enddo
- !trap
- pd(bin_length) = -k_trap_VACs(nvac_m)*Ctrap
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------immobile VAC block-------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j > N_sink+N_SIAs_m+N_VACs_m .and. j <= N_sink+N_SIAs_m+N_VACs) then
- nvac_im = j - (N_sink+N_SIAs_m)
- !--SIAs--
- do isia = 1,N_SIAs_m
- pd(N_sink+isia) = -k_SIAs_VACs(isia,nvac_im)*CSIAs(isia)
- if ((isia+nvac_im) .le. N_SIAs_m) then
- pd(N_sink+isia) = pd(N_sink+isia)+ k_SIAs_VACs(isia+nvac_im,nvac_im)*CSIAs(isia+nvac_im)
- endif
- loop_sia = isia+nvac_im
- if ((loop_sia .ge. N_loop_start) .and. (loop_sia .le. N_L111)) then
- pd(N_sink+isia) = pd(N_sink+isia)+k_VACs_L111(nvac_im,loop_sia)*CL111(loop_sia)
- pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_L111t(nvac_im,loop_sia)*CL111t(loop_sia)
- endif
- do u_idx =1, Nu_L111t
- if ((isia+nvac_im) .ge. mesh_ust(u_idx) .and. (isia+nvac_im) .le. mesh_ued(u_idx)) then
- pd(N_sink+isia) = pd(N_sink+isia) +k_VACs_uL111t(nvac_im,u_idx)*CL111tL0(u_idx) &
- & +k_VACs_uL111t(nvac_im,u_idx)*v1(nvac_im+isia,u_idx)*CL111tL1(u_idx)
- endif
- enddo
- if (isia == 1) then
- pd(N_sink+isia) = pd(N_sink+isia) +g_SIA_VACs(nvac_im)
- endif
- enddo
- !--VACs--
- do nvac = 1,N_VACs
- if ((nvac .le. N_VACs_m) .and. (nvac+nvac_im) .le. N_VACs) then
- pd(N_offSIA+nvac) = -k_VACs_VACs(nvac,nvac_im)*CVACs(nvac)
- endif
- if ((nvac-nvac_im) .le. N_VACs_m .and. (nvac-nvac_im) .ge. 1) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_VACs(nvac-nvac_im,nvac_im)*CVACs(nvac-nvac_im)
- endif
- if ((nvac_im-nvac) .le. N_SIAs_m .and. (nvac_im-nvac) .ge. 1) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+k_SIAs_VACs(nvac_im-nvac,nvac_im)*CSIAs(nvac_im-nvac)
- endif
- Loop_sia = nvac_im-nvac
- if ((Loop_sia .ge. N_loop_start) .and. (Loop_sia .le. N_L111)) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+k_VACs_L111(nvac_im,(Loop_sia))*CL111(Loop_sia)
- endif
- if ((Loop_sia .ge. N_loop_start) .and. (Loop_sia .le. N_L111t)) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+k_VACs_L111t(nvac_im,(Loop_sia))*CL111t(Loop_sia)
- endif
- do ugroup = 1, Nu_L111t
- if (Loop_sia .ge. mesh_ust(ugroup) .and. Loop_sia .le. mesh_ued(ugroup)) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL111t(nvac_im,ugroup)*CL111tL0(ugroup) &
- & +k_VACs_uL111t(nvac_im,ugroup)*v1(Loop_sia, ugroup)*CL111tL1(ugroup)
- endif
- enddo
- if ((nvac_im-1) == nvac) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_VAC_VACs(nvac_im)
- endif
- if ((nvac_im+1) == nvac) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_SIA_VACs(nvac_im)
- endif
- if (nvac==nvac_im) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -g_VAC_VACs(nvac_im)
- if (nvac_im .le. (N_VACs-1)) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -g_SIA_VACs(nvac_im)
- endif
- do isia=1, N_SIAs_m
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_SIAs_VACs(isia,nvac_im)*CSIAs(isia)
- enddo
- do nvac_=1, N_VACs_m
- if ((nvac_+nvac_im) .le. N_VACs) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_VACs(nvac_,nvac_im)*CVACs(nvac_)
- endif
- enddo
- if ((nvac_im .le. Nmax_cas) .and. (nvac_im .ge. Nmin_cas)) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-(1-f_VACtoVAC(nvac_im))*CascadeRate
- endif
- do temp1 = N_loop_start, N_L111
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_L111(nvac_im,temp1)*CL111(temp1)
- enddo
- do temp1 = N_loop_start, N_L111t
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_L111t(nvac_im,temp1)*CL111t(temp1)
- enddo
- !VAC loss due to reaction with group
- do u_idx = 1, Nu_L111t
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) -k_VACs_uL111t(nvac,u_idx)*(adft_L0(u_idx)*CL111tL0(u_idx) &
- & +adft_L1(u_idx)*CL111tL1(u_idx))
- enddo
- endif
- if (nvac ==1) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_VAC_VACs(nvac_im)
- endif
- enddo
- !--L111--
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = -k_VACs_L111(nvac_im,isia)*CL111(isia)
- loop_sia = isia+nvac_im
- if (loop_sia .le. N_L111) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +k_VACs_L111(nvac_im,loop_sia)*CL111(loop_sia)
- endif
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = -k_VACs_L111t(nvac_im,isia)*CL111t(isia)
- loop_sia = isia+nvac_im
- if (loop_sia .le. N_L111t) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_L111t(nvac_im,loop_sia)*CL111t(loop_sia)
- endif
- do ugroup = 1, Nu_L111t
- if (((nvac_im+isia).ge. mesh_ust(ugroup)) .and. ((nvac_im+isia) .le. mesh_ued(ugroup))) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(nvac_im,ugroup)*CL111tL0(ugroup) &
- +k_VACs_uL111t(nvac_im,ugroup)*v1(isia +nvac_im,ugroup)*CL111tL1(ugroup)
- endif
- enddo
- enddo
- !--L111tL0,L1
- do u_idx = 1, Nu_L111t
- 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))
- 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))
- st = mesh_ust(u_idx) +nvac_im
- ed = mesh_ued(u_idx) +nvac_im
- do ugroup2 = u_idx, Nu_L111t
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_VACs_uL111t(nvac_im,ugroup2)&
- & *(akaL0_Vdef_L0(u_idx,nvac_im,ugroup2)*CL111tL0(ugroup2) +akaL0_Vdef_L1(u_idx,nvac_im,ugroup2)&
- &*CL111tL1(ugroup2))
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_VACs_uL111t(nvac_im,ugroup2)&
- & *(akaL1_Vdef_L0(u_idx,nvac_im,ugroup2)*CL111tL0(ugroup2) &
- &+akaL1_Vdef_L1(u_idx,nvac_im,ugroup2)*CL111tL1(ugroup2))
- endif
- enddo
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------C15 block--------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j > N_offVAC+N_C15_st-1 .and. j <= N_offC15) then
- nsia = j - (N_offVAC)
- !--SIAs---------------------------
- do isia = 1,N_SIAs_m
- if ((nsia+isia) .le. N_C15) then
- pd(N_sink+isia) = -k_SIAs_C15(isia,nsia)*CSIAs(isia)
- endif
- if ((nsia-isia) .ge. 1 .and. ((nsia-isia)) .le. N_VACs_m) then
- pd(N_sink+isia) = pd(N_sink+isia)+k_VACs_C15(nsia-isia,nsia)*CVACs(nsia-isia)
- endif
- !if (isia ==(nsia-1)) then
- !pd(N_sink+isia) = pd(N_sink+isia) +g_SIA_C15(nsia)
- !endif
- !if (isia ==(nsia+1) ) then
- !pd(N_sink+isia) = pd(N_sink+isia) +g_VAC_C15(nsia)
- !endif
- if (isia == 1) then
- pd(N_sink+isia) = pd(N_sink+isia) +g_SIA_C15(nsia)
- endif
- enddo
- !--VACs---------------------------
- do nvac = 1,N_VACs_m
- pd(N_offSIA+nvac) = -k_VACs_C15(nvac,nsia)*CVACs(nvac)
- if ((nsia+nvac) .ge. 1 .and. (nsia+nvac) .le. N_VACs_m) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)+ k_VACs_C15(nsia+nvac,nsia)*CVACs(nsia+nvac)
- endif
- if (nvac == 1) then
- if (nsia .lt. N_C15) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +g_VAC_C15(nsia)
- endif
- endif
- enddo
- !--c15---------------------------
- do isia = N_C15_st, N_C15
- if ((isia-nsia) .ge. 1 .and. (isia-nsia) .le. N_SIAs_m) then
- pd(N_offVAC+isia) = k_SIAs_C15(isia-nsia,nsia)*CSIAs(isia-nsia)
- endif
- if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs_m) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia)+k_VACs_C15(nsia-isia,nsia)*CVACs(nsia-isia)
- endif
- if (isia ==(nsia-1) ) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) +g_SIA_C15(nsia)
- endif
- if (isia ==(nsia+1) .and. (nsia .lt. N_C15)) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) +g_VAC_C15(nsia)
- endif
- if (isia ==nsia) then
- do isia2 =1, N_SIAs_m
- if ((isia2+nsia) .le. N_C15) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) -k_SIAs_C15(isia2,nsia)*CSIAs(isia2)
- endif
- enddo
- do nvac =1, N_VACs_m
- pd(N_offVAC+isia) = pd(N_offVAC+isia) -k_VACs_C15(nvac,nsia)*CVACs(nvac)
- enddo
- pd(N_offVAC+isia) = pd(N_offVAC+isia)-f_trans111(nsia) -f_trans100(nsia)-g_SIA_C15(nsia)
- if (nsia .lt. N_C15) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) -g_VAC_C15(nsia)
- endif
- !add cascade overlap 01032022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) ) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) -(1-f_C15toC15(nsia))*CascadeRate
- endif
- endif
- !add L111 trapped by C15 01062022
- !do isia = N_loop_start, (N_lpc15)
- ! isia2 = mesh_x0(isia)
- ! if ((isia ==nsia) .and. (isia2+nsia) .le. N_C15) then
- ! pd(N_offVAC+isia) = pd(N_offVAC+isia)-k_C15_L111t(nsia,isia2)*CL111t(isia2)
- ! endif
- ! if ((isia-isia2) .eq. nsia ) then
- ! pd(N_offVAC+isia) = pd(N_offVAC+isia)+k_C15_L111t(isia-isia2,isia2)*CL111t(isia2)
- ! endif
- !enddo
- enddo
- !--L111
- do isia = N_loop_start, N_L111
- if (isia ==nsia) then
- pd(N_offC15+isia) = f_trans111(nsia)
- endif
- !add cascade overlap 01032022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +(1-f111t)*(1-f_C15toL100(nsia)-f_C15toC15(nsia))*CascadeRate
- endif
- enddo
- !--L111t
- !add L111t trap by C15 01062022
- do isia = N_loop_start, N_L111t
- !if ((isia+nsia) .le. N_C15) then
- ! pd(N_offL111+isia) =-k_C15_L111t(nsia,(isia))*CL111t(isia)
- !endif
- !add cascade overlap 01032022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
- pd(N_offL111+isia) = pd(N_offL111+isia)+f111t*(1-f_C15toL100(nsia)-f_C15toC15(nsia))*CascadeRate
- endif
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- if (isia ==nsia) then
- pd(N_offL111tL1+isia) = f_trans100(nsia)
- endif
- !add cascade overlap 01022022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +f_C15toL100(nsia)*CascadeRate
- endif
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------L111 block-------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j >= N_offC15+N_loop_start .and. j <= N_offL111) then
- nsia = j -N_offC15
- pd(N_SIAs_m+N_VACs_m+nsia) = loss_L111(nsia)
- pd(N_sink+N_SIAs_m+N_VACs+N_C15+nsia) = -loss_L111(nsia)
- !--SIAs
- do isia = 1,N_SIAs_m
- pd(N_sink+isia) =pd(N_sink+isia)-k_SIAs_L111(isia,nsia)*CSIAs(isia)
- if ((nsia-isia) .le. N_VACs .and. (nsia-isia) .ge. 1) then
- pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_L111(nsia-isia,(nsia)) *CVACs(nsia-isia)
- endif
- enddo
- pd(N_sink+1) = pd(N_sink+1) +g_SIA_L111(nsia)
- !--VACs
- do nvac = 1,N_VACs
- pd(N_offSIA+nvac) = -k_VACs_L111(nvac,(nsia))*CVACs(nvac)
- if ((nsia+nvac) .le. N_VACs) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_L111(nsia+nvac,(nsia))*CVACs(nsia+nvac)
- endif
- enddo
- pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_L111(nsia)
- ! Group vacancy !Modifedbysalu
- !Modifedbysalu
- !add cascade overlap 01032022
- do isia = N_SIAs_m+1, N_C15
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas).and. (isia .eq. nsia)) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) +f_L111toC15(nsia)*CascadeRate
- endif
- enddo
- !--L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L111(isia,nsia)*CL111(isia)
- temp = isia-nsia
- if (temp .ge. N_loop_start .and. nsia .ne. temp) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +k_L111_L111(nsia,temp)*CL111(temp)
- endif
- if ((temp .ge. N_loop_start) .and. (nsia .gt. temp)) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +k_L111_L100(nsia,temp)*CL100(temp)
- endif
- if (temp .ge. 1 .and. temp .le. N_SIAs_m) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +k_SIAs_L111(temp,nsia)*CSIAs(temp)
- endif
- temp = nsia -isia
- if (temp .ge. 1 .and. temp .le. N_VACs) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +k_VACs_L111(temp,nsia)*CVACs(temp)
- endif
- if ((isia+1) .eq. nsia) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +g_SIA_L111(nsia)
- endif
- if ((isia-1) .eq. nsia) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +g_VAC_L111(nsia)
- endif
- if (isia == nsia) then
- do temp1 = N_loop_start, N_L111t
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L111t(nsia,temp1)*CL111t(temp1)
- enddo
- do temp1 = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L111(nsia,temp1)*CL111(temp1)
- enddo
- do temp1 = N_loop_start, N_L100
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L100(nsia,temp1)*CL100(temp1)
- enddo
- do isia2 = 1, N_SIAs_m
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_SIAs_L111(isia2,nsia)*CSIAs(isia2)
- enddo
- do nvac = 1, N_VACs
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_VACs_L111(nvac,nsia)*CVACs(nvac)
- enddo
- if (nsia .gt. N_loop_start) then
- pd(N_offC15+isia) = pd(N_offC15+isia) -g_SIA_L111(nsia)
- endif
- if (nsia .lt. N_L111) then
- pd(N_offC15+isia) = pd(N_offC15+isia) -g_VAC_L111(nsia)
- endif
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_trap_L111(nsia)*Ctrap
- do ugroup = 1, Nu_L111t
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111tL0(ugroup) &
- &-k_L111_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)
- enddo
- do ugroup = 1, Nu_L100
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_uL100(nsia,ugroup)*adft_L0(ugroup)*CL100L0(ugroup) &
- &-k_L111_uL100(nsia,ugroup)*adft_L1(ugroup)*CL100L1(ugroup)
- enddo
- endif
- !add cascade overlap 01012022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
- pd(N_offC15+isia) = pd(N_offC15+isia) -(f_L111toL100(nsia)+f_L111toC15(nsia))*CascadeRate
- endif
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111_L111t(nsia,isia)*CL111t(isia)
- if ((isia-nsia) .ge. N_loop_start .and. (isia-nsia) .ne. nsia) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111_L111t(nsia,isia-nsia)*CL111t(isia-nsia)
- endif
- if (isia == nsia) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_trap_L111(nsia)*Ctrap
- endif
- enddo
- !--L111tL0,L1
- do u_idx = 1, Nu_L111t
- 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))
- 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))
- st = mesh_ust(u_idx) -nsia
- ed = mesh_ued(u_idx) -nsia
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111_uL111t(nsia,ugroup2)&
- & *(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111_uL111t(nsia,ugroup2)&
- & *(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
- endif
- enddo
- !from k_L111t
- do isia = N_loop_start, N_L111t
- if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111_L111t(nsia,isia)*CL111t(isia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111_L111t(nsia,isia)*CL111t(isia) &
- &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L111_L100(nsia,isia)*CL100(isia)
- if ((isia-nsia) .ge. nsia) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_L111_L100(nsia,isia-nsia)*CL100(isia-nsia)
- endif
- if (isia/2 .eq. nsia) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +2*f_g2s*k_L111_L111(nsia, nsia)*CL111(nsia) &
- &+ f_g2s*k_L111_L111t(nsia, nsia)*CL111t(nsia)
- endif
- !add cascade overlap 01012022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +f_L111toL100(nsia)*CascadeRate
- endif
- enddo
- !--L100L0,L1
- do u_idx = 1, Nu_L100
- 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))
- 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))
- st = mesh_ust(u_idx) -nsia
- ed = mesh_ued(u_idx) -nsia
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_L111_uL100(nsia,ugroup2)&
- &*(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111_uL100(nsia,ugroup2)&
- &*(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
- endif
- enddo
- !from k_L100
- do isia = nsia, N_L100
- if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_L111_L100(nsia,isia)*CL100(isia)*uf0(u_idx)
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111_L100(nsia,isia)*CL100(isia) &
- &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !form from L111+L111
- if (2*nsia .ge. mesh_ust(u_idx) .and. 2*nsia .le. mesh_ued(u_idx)) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +2*f_g2s*k_L111_L111(nsia,nsia)*CL111(nsia)*uf0(u_idx) &
- & + f_g2s*k_L111_L111t(nsia,nsia)*CL111t(nsia)*uf0(u_idx)
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) &
- & +2*f_g2s*k_L111_L111(nsia,nsia)*CL111(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)&
- & + f_g2s*k_L111_L111t(nsia,nsia)*CL111t(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !~~trap
- !pd(bin_length) = -k_trap_L111(nsia)*Ctrap
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------L111t block--------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j >= N_offL111+N_loop_start .and. j <= N_offL111t) then
- nsia = j -N_offL111
- pd(N_SIAs_m+N_VACs_m+N_L111+nsia) = loss_L111t(nsia)
- !--SIAs
- do isia = 1,N_SIAs_m
- pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_L111t(isia,nsia)*CSIAs(isia)
- if (((nsia-isia) .le. N_VACs) .and. ((nsia-isia) .ge. 1)) then
- pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_L111t(nsia-isia,(nsia))*CVACs(nsia-isia)
- endif
- enddo
- pd(N_sink+1) = pd(N_sink+1)+ g_SIA_L111t(nsia)
- !--VACs
- do nvac = 1,N_VACs
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_L111t(nvac,(nsia))*CVACs(nvac)
- if ((nsia+nvac) .le. N_VACs) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_L111t(nsia+nvac,(nsia))*CVACs(nsia+nvac)
- endif
- enddo
- pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_L111t(nsia)
- ! Group vacancy !Modifedbysalu
- !Modifedbysalu
- do isia = N_SIAs_m+1, N_C15
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas).and. (isia .eq. nsia)) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) +f_L111ttoC15(nsia)*CascadeRate
- endif
- enddo
- !add L111 trapped by C15 01052022
- !if ((nsia) .le. (N_lpc15)) then
- !do isia = N_SIAs_m+1, N_C15
- ! if ( (isia-nsia) .ge. (N_SIAs_m+1) ) then
- ! pd(N_offVAC+isia) = pd(N_offVAC+isia) +k_C15_L111t(isia-nsia,(nsia))*C_C15(isia-nsia)
- ! endif
- ! if ((isia+nsia) .le. N_C15) then
- ! pd(N_offVAC+isia) = pd(N_offVAC+isia)-k_C15_L111t(isia,(nsia))*C_C15(isia)
- ! endif
- !enddo
- !endif
- !--L111
- do isia = N_loop_start, N_L111
- if (isia == nsia) then
- pd(N_offC15+isia) = pd(N_offC15+isia) +g_trap_L111t(nsia)
- endif
- pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_L111t(isia,nsia)*CL111(isia)
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_L111t(isia,nsia)*CL111t(isia)
- if ((isia-nsia) .ge. N_loop_start .and. (isia-nsia) .ne. nsia) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111t_L111t(isia-nsia,nsia)*CL111t(isia-nsia)
- !if ((isia-nsia) == nsia) then !L111t(10) +L111t(10) will form L100
- ! pd(N_offL111+isia) = pd(N_offL111+isia)-k_L111t_L111t(isia-nsia,nsia)*CL111t(isia-nsia)
- !endif
- endif
- if ((isia-nsia) .ge. 1 .and. (isia-nsia) .le. N_SIAs_m) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_SIAs_L111t(isia-nsia,nsia)*CSIAs(isia-nsia)
- endif
- if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs) then
- pd(N_offL111+isia) =pd(N_offL111+isia) +k_VACs_L111t(nsia-isia,nsia)*CVACs(nsia-isia)
- endif
- if ((isia-nsia) .ge. N_loop_start) then
- if ((isia-nsia) .ne. nsia) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111_L111t(isia-nsia,nsia)*CL111(isia-nsia)
- endif
- if (nsia .gt. (isia-nsia)) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_L111t_L100(nsia,isia-nsia)*CL100(isia-nsia)
- endif
- endif
- if ((isia+1) .eq. nsia) then
- pd(N_offL111+isia) =pd(N_offL111+isia) +g_SIA_L111t(nsia)
- endif
- if ((isia-1) .eq. nsia) then
- pd(N_offL111+isia) =pd(N_offL111+isia) +g_VAC_L111t(nsia)
- endif
- if (isia == nsia) then
- pd(N_offL111+isia) = pd(N_offL111+isia)-loss_L111t(nsia)
- do temp1 = N_loop_start, N_L111t
- pd(N_offL111+isia) =pd(N_offL111+isia) -k_L111t_L111t(nsia,temp1)*CL111t(temp1)
- enddo
- do temp1 = N_loop_start, N_L111
- pd(N_offL111+isia) =pd(N_offL111+isia) -k_L111_L111t(temp1,nsia)*CL111(temp1)
- enddo
- do temp1 = N_loop_start, N_L100
- pd(N_offL111+isia) =pd(N_offL111+isia) -k_L111t_L100(nsia,temp1)*CL100(temp1)
- enddo
- do isia2 = 1, N_SIAs_m
- pd(N_offL111+isia) =pd(N_offL111+isia) -k_SIAs_L111t(isia2,nsia)*CSIAs(isia2)
- enddo
- do nvac = 1, N_VACs
- pd(N_offL111+isia) =pd(N_offL111+isia) -k_VACs_L111t(nvac,nsia)*CVACs(nvac)
- enddo
- if (nsia .gt. N_loop_start) then
- pd(N_offL111+isia) =pd(N_offL111+isia) -g_SIA_L111t(nsia)
- endif
- pd(N_offL111+isia) =pd(N_offL111+isia) -g_VAC_L111t(nsia)
- pd(N_offL111+isia) =pd(N_offL111+isia) -g_trap_L111t((nsia))
- do ugroup = 1, Nu_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111tL0(ugroup) &
- &-k_L111t_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)
- enddo
- do ugroup = 1, Nu_L100
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL100(nsia,ugroup)*adft_L0(ugroup)*CL100L0(ugroup) &
- &-k_L111t_uL100(nsia,ugroup)*adft_L1(ugroup)*CL100L1(ugroup)
- enddo
- endif
- !add cascade overlap 01012022
- if ((nsia .le. Nmax_cas).and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
- pd(N_offL111+isia) =pd(N_offL111+isia)-(f_L111ttoL100(nsia)+f_L111ttoC15(nsia))*CascadeRate
- endif
- !add L111t trapped by c15 01062022
- !if ((isia .le. (N_lpc15)) .and. (isia .eq. nsia)) then
- ! do isia2 = N_SIAs_m+1, N_C15
- ! if ((isia2+nsia) .le. N_C15) then
- ! pd(N_offL111+isia) =pd(N_offL111+isia)-k_C15_L111t(isia2,(nsia))*C_C15(isia2)
- ! endif
- ! enddo
- !endif
- enddo
- !--L111tL0,L1
- do u_idx = 1, Nu_L111t
- 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))
- 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))
- !from k_L111t
- st = mesh_ust(u_idx) -nsia
- ed = mesh_ued(u_idx) -nsia
- do isia = N_loop_start, N_L111t
- if ((isia .ge. st) .and. (isia .le. ed) .and. (isia .ne. nsia)) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111t_L111t(isia,nsia)*CL111t(isia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_L111t(isia,nsia)*CL111t(isia) &
- & *(nsia +isia -mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !from k_L111
- do isia = N_loop_start, N_L111
- if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111_L111t(isia,nsia)*CL111(isia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111_L111t(isia,nsia)*CL111(isia) &
- &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !from k_L100
- do isia = N_loop_start, nsia-1
- if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia) &
- &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !from k_SIA
- do isia = 1, N_SIAs_m
- if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_SIAs_L111t(isia, nsia)*CSIAs(isia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_SIAs_L111t(isia, nsia)*CSIAs(isia) &
- &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !from k_uL111t
- st = mesh_ust(u_idx) -nsia
- ed = mesh_ued(u_idx) -nsia
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111t_uL111t(nsia,ugroup2)*(akaL0_Idef_L0(u_idx,nsia,ugroup2)&
- &*CL111tL0(ugroup2)+akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_uL111t(nsia,ugroup2)*(akaL1_Idef_L0(u_idx,nsia,ugroup2)&
- &*CL111tL0(ugroup2)+akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
- endif
- enddo
- if (u_idx .eq. 1 .and. nsia .eq. N_L111t) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +g_VAC_L111t(nsia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx)+g_VAC_L111t(nsia)*(nsia+1-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L111t_L100(nsia,isia)*CL100(isia)
- if ((isia-nsia) .ge. nsia) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_L111t_L100(nsia,isia-nsia)*CL100(isia-nsia)
- endif
- if (isia/2 .eq. nsia) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +2*f_g2s*k_L111t_L111t(nsia, nsia)*CL111t(nsia) &
- &+ f_g2s*k_L111_L111t(nsia, nsia)*CL111(nsia)
- endif
- !add cascade overlap 01012022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +f_L111ttoL100(nsia)*CascadeRate
- endif
- enddo
- !--L100L0,L1
- do u_idx = 1, Nu_L100
- 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))
- 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))
- st = mesh_ust(u_idx) -nsia
- ed = mesh_ued(u_idx) -nsia
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_L111t_uL100(nsia,ugroup2)&
- & *(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111t_uL100(nsia,ugroup2)&
- & *(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL100L0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL100L1(ugroup2))
- endif
- enddo
- !from k_L100
- do isia = nsia, N_L100
- if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia)*uf0(u_idx)
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) +k_L111t_L100(nsia,isia)*CL100(isia) &
- &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !form from L111t+L111t
- if (2*nsia .ge. mesh_ust(u_idx) .and. 2*nsia .le. mesh_ued(u_idx)) then
- pd(N_offL100+u_idx) =pd(N_offL100+u_idx) +2*f_g2s*k_L111t_L111t(nsia,nsia)*CL111t(nsia)*uf0(u_idx) &
- & + f_g2s*k_L111_L111t(nsia,nsia)*CL111(nsia)*uf0(u_idx)
- pd(N_offL100L0+u_idx) =pd(N_offL100L0+u_idx) &
- & +2*f_g2s*k_L111t_L111t(nsia,nsia)*CL111t(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)&
- & + f_g2s*k_L111_L111t(nsia,nsia)*CL111(nsia)*(nsia+nsia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- !~~trap
- pd(bin_length) = -k_trap_L111t(nsia)*Ctrap
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------uL111tL0 block----------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j >= N_offL111t+1 .and. j <= N_offL111tL0) then
- u_idx = j -N_offL111t
- pd(N_offsinkL111t+u_idx) = loss_uL111t(u_idx)*abL0_L0(u_idx)
- pd(N_offsinkL111tL0+u_idx) = loss_uL111t(u_idx)*abL1_L0(u_idx)
- !--SIAs
- do isia = 1, N_SIAs_m
- pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL111t(isia,u_idx)*adft_L0(u_idx)*CSIAs(isia)
- do nvac = 1, N_VACs
- if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
- pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL111t(nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- enddo
- pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL111t(u_idx)*adft_L0(u_idx)
- !--VACs
- do nvac = 1,N_VACs
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL111t(nvac,u_idx)*adft_L0(u_idx)*CVACs(nvac)
- do temp = N_L111t, N_VACs
- if (((temp-nvac) .ge. mesh_ust(u_idx)) .and. ((temp-nvac) .le. mesh_ued(u_idx))) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL111t(temp,u_idx)*CVACs(temp)
- endif
- enddo
- enddo
- pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL111t(u_idx)*adft_L0(u_idx)
- !--L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL111t(isia,u_idx)*adft_L0(u_idx)*CL111(isia)
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL111t(isia,u_idx)*adft_L0(u_idx)*CL111t(isia)
- do temp = 1, N_VACs
- if ((temp+isia) .ge. mesh_ust(u_idx) .and. (temp+isia) .le. mesh_ued(u_idx)) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(temp,u_idx)*CVACs(temp)
- endif
- enddo
- if (isia .eq. N_L111t .and. u_idx .eq. 1) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +g_SIA_uL111t(1)
- endif
- enddo
- !L111tL0,L1---
- st1 = mesh_ust(u_idx)
- ed1 = mesh_ued(u_idx)
- do ugroup = 1, Nu_L111t
- !+uL111t
- do u_idx1 = max(u_idx,ugroup), Nu_L111t
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- enddo
- !+SIA
- do isia = 1, N_SIAs_m
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) = pd(N_offL111t+ugroup) +k_SIAs_uL111t(isia,u_idx)&
- &*akaL0_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
- pd(N_offL111tL0+ugroup)= pd(N_offL111tL0+ugroup)+k_SIAs_uL111t(isia,u_idx)&
- &*akaL1_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
- endif
- enddo
- !+vac
- do nvac = 1, N_VACs
- st = mesh_ust(ugroup)+nvac
- ed = mesh_ued(ugroup)+nvac
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_VACs_uL111t(nvac,u_idx)&
- &*akaL0_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_VACs_uL111t(nvac,u_idx)&
- &*akaL1_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- !+L111
- do isia = N_loop_start, N_L111
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_L111_uL111t(isia,u_idx)&
- &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) +k_L111_uL111t(isia,u_idx)&
- &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
- endif
- enddo
- !+L111t
- do isia = N_loop_start, N_L111t
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_L111t_uL111t(isia,u_idx)&
- &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L111t_uL111t(isia,u_idx)&
- &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
- endif
- enddo
- !+L100
- do isia = N_loop_start, N_L100
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_L100_uL111t(isia,u_idx)&
- &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL100(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L100_uL111t(isia,u_idx)&
- &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL100(isia)
- endif
- enddo
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +g_SIA_uL111t(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_SIA_uL111t(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)
- endif
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +g_VAC_uL111t(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_VAC_uL111t(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)
- endif
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, ugroup
- if (u_idx .eq. u_idx1) then
- factor = 2
- else
- factor = 1
- endif
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- enddo
- endif
- !from +uL100
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, min(ugroup, Nu_L100) !uL100
- if (u_idx .eq. u_idx1) then
- factor = 0.5
- elseif (u_idx .gt. u_idx1) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L0L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L0L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L0L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L0L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
- enddo
- endif
- if (ugroup == u_idx) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -loss_uL111t(ugroup)*abL0_L0(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-loss_uL111t(ugroup)*abL1_L0(ugroup)
- !- k_SIAm
- do isia =1, N_SIAs_m
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_SIAs_uL111t(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_SIAs_uL111t(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)
- enddo
- !- k_VACs
- do nvac = 1, N_VACs
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_VACs_uL111t(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_VACs_uL111t(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)
- enddo
- !- k_L111
- do isia = N_loop_start, N_L111
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_L111_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)
- enddo
- do isia = N_loop_start, N_L111t
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_L111t_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111t_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)
- enddo
- do isia = N_loop_start, N_L100
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_L100_uL111t(isia,ugroup)*abL0_L0(ugroup)*CL100(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L100_uL111t(isia,ugroup)*abL1_L0(ugroup)*CL100(isia)
- enddo
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -g_SIA_uL111t(ugroup)*abL0_L0(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_SIA_uL111t(ugroup)*abL1_L0(ugroup)
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -g_VAC_uL111t(ugroup)*abL0_L0(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_VAC_uL111t(ugroup)*abL1_L0(ugroup)
- !+uL100
- do u_idx1 = 1, Nu_L100
- do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t,Nu_L100)
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
- enddo
- enddo
- !+uL111t
- do u_idx1 = 1, Nu_L111t
- do u_idx2 = max(u_idx1,ugroup), Nu_L111t
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- enddo
- enddo
- endif
- !--L111
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L100_uL111t(isia,u_idx)*adft_L0(u_idx)*CL100(isia)
- enddo
- !--L100L0,L1
- do ugroup = 1, Nu_L100
- do u_idx2 = max(u_idx,ugroup), max(Nu_L111t, Nu_L100)
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li0L0(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li1L0(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
- pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li0L0(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li1L0(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
- enddo
- do u_idx2 = 1, ugroup
- if (u_idx2 .eq. u_idx) then
- factor = 0.5
- elseif (u_idx2 .gt. u_idx) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L0L0(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L1L0(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
- pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L0L0(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L1L0(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
- enddo
- enddo
- !~~trap
- pd(bin_length) = -k_trap_uL111t(u_idx)*adft_L0(u_idx)*Ctrap
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------uL111tL1 block----------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j >= N_offL111tL0+1 .and. j <= N_offL111tL1) then
- u_idx = j -N_offL111tL0
- pd(N_offsinkL111t+u_idx) = loss_uL111t(u_idx)*abL0_L1(u_idx)
- pd(N_offsinkL111tL0+u_idx) = loss_uL111t(u_idx)*abL1_L1(u_idx)
- !--SIAs
- do isia = 1, N_SIAs_m
- pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL111t(isia,u_idx)*adft_L1(u_idx)*CSIAs(isia)
- do nvac = 1, N_VACs
- if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
- pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL111t(nvac,u_idx)*v1(nvac+isia,u_idx)*CVACs(nvac)
- endif
- enddo
- enddo
- pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL111t(u_idx)*adft_L1(u_idx)
- !--VACs
- do nvac = 1,N_VACs
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL111t(nvac,u_idx)*adft_L1(u_idx)*CVACs(nvac)
- do temp = N_L111t, N_VACs
- if (((temp-nvac) .ge. mesh_ust(u_idx)) .and. ((temp-nvac) .le. mesh_ued(u_idx))) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL111t(temp,u_idx)*v1(temp-nvac,u_idx)*CVACs(temp)
- endif
- enddo
- enddo
- pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL111t(u_idx)*adft_L1(u_idx)
- !--L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL111t(isia,u_idx)*adft_L1(u_idx)*CL111(isia)
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL111t(isia,u_idx)*adft_L1(u_idx)*CL111t(isia)
- do temp = 1, N_VACs
- if ((temp+isia) .ge. mesh_ust(u_idx) .and. (temp+isia) .le. mesh_ued(u_idx)) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_VACs_uL111t(temp,u_idx)*v1(isia +temp,u_idx)*CVACs(temp)
- endif
- enddo
- if (isia .eq. N_L111t .and. u_idx .eq. 1) then
- pd(N_offL111+isia) = pd(N_offL111+isia) +g_SIA_uL111t(1)*v1(N_L111+1,1)
- endif
- enddo
- !--L111tL0,L1
- st1 = mesh_ust(u_idx)
- ed1 = mesh_ued(u_idx)
- do ugroup = 1, Nu_L111t
- !+uL111t
- do u_idx1 = max(u_idx,ugroup), Nu_L111t
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi0_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx)*akbLi1_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- enddo
- !+SIA
- do isia = 1, N_SIAs_m
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) = pd(N_offL111t+ugroup) +k_SIAs_uL111t(isia,u_idx)&
- &*akaL0_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
- pd(N_offL111tL0+ugroup)= pd(N_offL111tL0+ugroup)+k_SIAs_uL111t(isia,u_idx)&
- &*akaL1_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
- endif
- enddo
- !+vac
- do nvac = 1, N_VACs
- st = mesh_ust(ugroup)+nvac
- ed = mesh_ued(ugroup)+nvac
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_VACs_uL111t(nvac,u_idx)&
- &*akaL0_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_VACs_uL111t(nvac,u_idx)&
- &*akaL1_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- do isia = N_loop_start, N_L111
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_L111_uL111t(isia,u_idx)&
- &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) +k_L111_uL111t(isia,u_idx)&
- &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
- endif
- enddo
- !+L111t
- do isia = N_loop_start, N_L111t
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_L111t_uL111t(isia,u_idx)&
- &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L111t_uL111t(isia,u_idx)&
- &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
- endif
- enddo
- !+L100
- do isia = N_loop_start, N_L100
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +k_L100_uL111t(isia,u_idx)&
- &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL100(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+k_L100_uL111t(isia,u_idx)&
- &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL100(isia)
- endif
- enddo
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +g_SIA_uL111t(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_SIA_uL111t(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)
- endif
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) +g_VAC_uL111t(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)+g_VAC_uL111t(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)
- endif
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, ugroup
- if (u_idx .eq. u_idx1) then
- factor = 2
- else
- factor = 1
- endif
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL0_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1)&
- &+factor*k_uL111t_uL111t(u_idx,u_idx1)*akaL1_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- enddo
- endif
- !group+ from uL100
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, min(ugroup, Nu_L100) !uL100
- if (u_idx .eq. u_idx1) then
- factor = 0.5
- elseif (u_idx .gt. u_idx1) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L1L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL0_L1L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L1L0(u_idx,u_idx1,ugroup)*CL100L0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx,u_idx1)*akaL1_L1L1(u_idx,u_idx1,ugroup)*CL100L1(u_idx1)
- enddo
- endif
- if (ugroup == u_idx) then
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -loss_uL111t(ugroup)*abL0_L1(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-loss_uL111t(ugroup)*abL1_L1(ugroup)
- !- k_SIAm
- do isia =1, N_SIAs_m
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_SIAs_uL111t(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_SIAs_uL111t(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)
- enddo
- !- k_VACs
- do nvac = 1, N_VACs
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_VACs_uL111t(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_VACs_uL111t(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)
- enddo
- !- k_L111
- do isia = N_loop_start, N_L111
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_L111_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)
- enddo
- do isia = N_loop_start, N_L111t
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_L111t_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L111t_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)
- enddo
- do isia = N_loop_start, N_L100
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -k_L100_uL111t(isia,ugroup)*abL0_L1(ugroup)*CL100(isia)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup)-k_L100_uL111t(isia,ugroup)*abL1_L1(ugroup)*CL100(isia)
- enddo
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -g_SIA_uL111t(ugroup)*abL0_L1(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_SIA_uL111t(ugroup)*abL1_L1(ugroup)
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) -g_VAC_uL111t(ugroup)*abL0_L1(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) -g_VAC_uL111t(ugroup)*abL1_L1(ugroup)
- !+uL100
- do u_idx1 = 1, Nu_L100
- do u_idx2 = max(u_idx1,ugroup), max(Nu_L111t,Nu_L100)
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL100L0(u_idx1) &
- &-k_uL111t_uL100(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL100L1(u_idx1)
- enddo
- enddo
- !+uL111t
- do u_idx1 = 1, Nu_L111t
- do u_idx2 = max(u_idx1,ugroup), Nu_L111t
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1) &
- &-k_uL111t_uL111t(ugroup,u_idx1)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- enddo
- enddo
- endif
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L100_uL111t(isia,u_idx)*adft_L1(u_idx)*CL100(isia)
- enddo
- !--L100L0,L1
- do ugroup = 1, Nu_L100
- do u_idx2 = max(u_idx,ugroup), max(Nu_L111t, Nu_L100)
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li0L1(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi0_Li1L1(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
- pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li0L1(ugroup,u_idx,u_idx2)*CL100L0(ugroup) &
- &-k_uL111t_uL100(u_idx,ugroup)*akbLi1_Li1L1(ugroup,u_idx,u_idx2)*CL100L1(ugroup)
- enddo
- do u_idx2 = 1, ugroup
- if (u_idx2 .eq. u_idx) then
- factor = 0.5
- elseif (u_idx2 .gt. u_idx) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L0L1(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL0_L1L1(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
- pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L0L1(u_idx2,u_idx,ugroup)*CL100L0(u_idx2) &
- &+factor*k_uL111t_uL100(u_idx,u_idx2)*akaL1_L1L1(u_idx2,u_idx,ugroup)*CL100L1(u_idx2)
- enddo
- enddo
- !--UVAcs,LO,L1
- !~~trap
- pd(bin_length) = -k_trap_uL111t(u_idx)*adft_L1(u_idx)*Ctrap
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------L100 block--------------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j >= N_offL111tL1+N_loop_start .and. j <= N_offL100) then
- nsia = j -N_offL111tL1
- !--SIAs
- do isia = 1,N_SIAs_m
- pd(N_sink+isia) = pd(N_sink+isia) -k_SIAs_L100(isia,nsia)*CSIAs(isia)
- if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs_m) then
- pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_L100(nsia-isia,nsia)*CVACs(nsia-isia)
- endif
- enddo
- pd(N_sink+1) = pd(N_sink+1)+ g_SIA_L100(nsia)
- !--VACs
- do nvac = 1, N_VACs_m
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_L100(nvac,nsia)*CVACs(nvac)
- if ((nsia+nvac) .le. N_VACs_m) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_L100(nsia+nvac,nsia)*CVACs(nsia+nvac)
- endif
- enddo
- pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_L100(nsia)
- !add cascade overlap 01032022
- do isia = N_SIAs_m+1, N_C15
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas).and. (isia .eq. nsia)) then
- pd(N_offVAC+isia) = pd(N_offVAC+isia) +f_L100toC15(nsia)*CascadeRate
- endif
- enddo
- !--L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_L111_L100((isia),(nsia))*CL111(isia)
- if ((isia-nsia) .gt. nsia) then
- pd(N_offC15+isia) =pd(N_offC15+isia) +k_L111_L100((isia-nsia),(nsia))*CL111(isia-nsia)
- endif
- !add cascade overlap 01012022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
- pd(N_offC15+isia) =pd(N_offC15+isia)+(1-f111t)*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate
- endif
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_L100((isia),(nsia))*CL111t(isia)
- if ((isia-nsia) .gt. nsia) then
- pd(N_offL111+isia) =pd(N_offL111+isia) +k_L111t_L100((isia-nsia),(nsia))*CL111t(isia-nsia)
- endif
- !add cascade overlap 01012022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (nsia .eq. isia)) then
- pd(N_offL111+isia) =pd(N_offL111+isia)+f111t*(1-f_L100toL100(nsia)-f_L100toC15(nsia))*CascadeRate
- endif
- enddo
- !--L111tL0,L1
- do u_idx = 1, Nu_L111t
- 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))
- 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))
- st = mesh_ust(u_idx) -nsia
- ed = mesh_ued(u_idx) -nsia
- do ugroup2 = 1, u_idx
- st1 = mesh_ust(ugroup2)
- ed1 = mesh_ued(ugroup2)
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L100_uL111t(nsia,ugroup2)&
- &*(akaL0_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL0_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L100_uL111t(nsia,ugroup2)&
- & *(akaL1_Idef_L0(u_idx,nsia,ugroup2)*CL111tL0(ugroup2) +akaL1_Idef_L1(u_idx,nsia,ugroup2)*CL111tL1(ugroup2))
- endif
- enddo
- !from k_L111t
- do isia = nsia+1, N_L111t
- if ((nsia + isia) .ge. mesh_ust(u_idx) .and. (nsia + isia) .le. mesh_ued(u_idx)) then
- pd(N_offL111t+u_idx) =pd(N_offL111t+u_idx) +k_L111t_L100(isia,nsia)*CL111t(isia)*uf0(u_idx)
- pd(N_offL111tL0+u_idx) =pd(N_offL111tL0+u_idx) +k_L111t_L100(isia,nsia)*CL111t(isia) &
- &*(nsia + isia-mesh_x0(u_idx))*uf1(u_idx)
- endif
- enddo
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- if (((isia-nsia) .ge. N_loop_start) .and. (nsia .ge. (isia-nsia))) then
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_L111t_L100(isia-nsia,nsia)*CL111t(isia-nsia)
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_L111_L100(isia-nsia,nsia)*CL111(isia-nsia)
- endif
- if ((isia-nsia) .ge. 1 .and. (isia-nsia) .le. N_SIAs_m) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia)+k_SIAs_L100(isia-nsia,nsia)*CSIAs(isia-nsia)
- endif
- if ((nsia-isia) .ge. 1 .and. (nsia-isia) .le. N_VACs_m) then
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +k_VACs_L100(nsia-isia,nsia)*CVACs(nsia-isia)
- endif
- if ((isia+1) .eq. nsia) then
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +g_SIA_L100(isia+1)
- endif
- if ((isia-1) .eq. nsia) then
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) +g_VAC_L100(isia-1)
- endif
- if (isia == nsia) then
- do isia2 = N_loop_start, N_L111t
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_L111t_L100(isia2,nsia)*CL111t(isia2)
- enddo
- do isia2 = N_loop_start, N_L111
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_L111_L100(isia2,nsia)*CL111(isia2)
- enddo
- do isia2 = 1, N_SIAs_m
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_SIAs_L100(isia2,nsia)*CSIAs(isia2)
- enddo
- do nvac = 1, N_VACs_m
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -k_VACs_L100(nvac,(nsia))*CVACs(nvac)
- enddo
- if (nsia .gt. N_loop_start) then
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -g_SIA_L100(nsia)
- endif
- pd(N_offL111tL1+isia) =pd(N_offL111tL1+isia) -g_VAC_L100(nsia)
- do ugroup = 1, Nu_L111t
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -k_L100_uL111t(nsia,ugroup)*adft_L0(ugroup)*CL111tL0(ugroup)&
- &-k_L100_uL111t(nsia,ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)
- enddo
- endif
- !add cascade overlap 01012022
- if ((nsia .le. Nmax_cas) .and. (nsia .ge. Nmin_cas) .and. (isia .eq. nsia)) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) -(1-f_L100toL100(nsia))*CascadeRate
- endif
- enddo
- !--L100L0,L1
- do ugroup =1, Nu_L100
- do isia = 1, N_SIAs_m
- if ((nsia +isia) .ge. mesh_ust(ugroup) .and. (nsia +isia) .le. mesh_ued(ugroup)) then
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) + k_SIAs_L100(isia,nsia)*CSIAs(isia)*uf0(ugroup)
- pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup)+ k_SIAs_L100(isia,nsia)*CSIAs(isia) &
- &*(nsia +isia -mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- do isia = N_loop_start, nsia
- if ((nsia +isia) .ge. mesh_ust(ugroup) .and. (nsia +isia) .le. mesh_ued(ugroup)) then
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) +k_L111_L100(isia,nsia)*CL111(isia)*uf0(ugroup) &
- & +k_L111t_L100(isia,nsia)*CL111t(isia)*uf0(ugroup)
- pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup) &
- & +k_L111_L100(isia,nsia)*CL111(isia)*(nsia +isia -mesh_x0(ugroup))*uf1(ugroup) &
- & +k_L111t_L100(isia,nsia)*CL111t(isia)*(nsia +isia -mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- if (ugroup .eq. 1 .and. nsia .eq. N_L100) then
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) +g_VAC_L100(N_L100)*uf0(ugroup)
- pd(N_offL100L0+ugroup) = pd(N_offL100L0+ugroup)+ g_VAC_L100(N_L100)*(N_L100+1-mesh_x0(ugroup))*uf1(ugroup)
- endif
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------uL100tL0 block----------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j >= N_offL100+1 .and. j <= N_offL100L0) then
- u_idx = j -N_offL100
- !--SIAs
- do isia = 1, N_SIAs_m
- pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL100(isia,u_idx)*adft_L0(u_idx)*CSIAs(isia)
- do nvac = 1, N_VACs_m
- if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
- pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- enddo
- pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL100(u_idx)*adft_L0(u_idx)
- !--VACs
- do nvac = 1,N_VACs_m
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL100(nvac,u_idx)*adft_L0(u_idx)*CVACs(nvac)
- do temp = 1, N_VACs_m
- if ((temp .ge. mesh_ust(u_idx)+nvac) .and. (temp .le. mesh_ued(u_idx))) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL100(temp,u_idx)*CVACs(temp)
- endif
- enddo
- enddo
- pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL100(u_idx)*adft_L0(u_idx)
- !--L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL100(isia,u_idx)*adft_L0(u_idx)*CL111(isia)
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL100(isia,u_idx)*adft_L0(u_idx)*CL111t(isia)
- enddo
- !--L111tL0,L1
- do ugroup = 1, Nu_L111t
- do u_idx1 = max(u_idx,ugroup), max(Nu_L111t,Nu_L100)
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li0L0(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li1L0(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- enddo
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, ugroup
- if (u_idx1 .eq. u_idx) then
- factor = 0.5
- elseif (u_idx1 .gt. u_idx) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L0(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L0(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L0(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L0(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
- enddo
- endif
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- do nvac = 1, N_VACs_m
- if (((nvac+isia).ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- if (isia .eq. N_L100 .and. u_idx .eq. 1) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +g_SIA_uL100(1)
- endif
- enddo
- !--L100L0,L1
- st1 = mesh_ust(u_idx)
- ed1 = mesh_ued(u_idx)
- do ugroup = 1, Nu_L100
- !+SIA
- do isia = 1, N_SIAs_m
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) +k_SIAs_uL100(isia,u_idx)&
- &*akaL0_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
- pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup)+k_SIAs_uL100(isia,u_idx)&
- &*akaL1_Idef_L0(ugroup,isia,u_idx)*CSIAs(isia)
- endif
- enddo
- !+vac
- do nvac = 1, N_VACs_m
- st = mesh_ust(ugroup)+nvac
- ed = mesh_ued(ugroup)+nvac
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +k_VACs_uL100(nvac,u_idx)&
- &*akaL0_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_VACs_uL100(nvac,u_idx)&
- &*akaL1_Vdef_L0(ugroup,nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- !+L111
- do isia = N_loop_start, N_L111
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +k_L111_uL100(isia,u_idx)&
- &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) +k_L111_uL100(isia,u_idx)&
- &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111(isia)
- endif
- enddo
- !+L111t
- do isia = N_loop_start, N_L111t
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +k_L111t_uL100(isia,u_idx)&
- &*akaL0_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_L111t_uL100(isia,u_idx)&
- &*akaL1_Idef_L0(ugroup,isia,u_idx)*CL111t(isia)
- endif
- enddo
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +g_SIA_uL100(u_idx)*akaL0_Vdef_L0(ugroup,1,u_idx)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_SIA_uL100(u_idx)*akaL1_Vdef_L0(ugroup,1,u_idx)
- endif
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +g_VAC_uL100(u_idx)*akaL0_Idef_L0(ugroup,1,u_idx)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_VAC_uL100(u_idx)*akaL1_Idef_L0(ugroup,1,u_idx)
- endif
- !group+ from uL100
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, min(ugroup, Nu_L111t)
- if (u_idx .eq. u_idx1) then
- factor = 0.5
- elseif (u_idx .ge. u_idx1) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- enddo
- endif
- if (ugroup == u_idx) then
- !- k_SIAm
- do isia =1, N_SIAs_m
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_SIAs_uL100(isia,ugroup)*abL0_L0(ugroup)*CSIAs(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_SIAs_uL100(isia,ugroup)*abL1_L0(ugroup)*CSIAs(isia)
- enddo
- !- k_VACs
- do nvac = 1, N_VACs_m
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_VACs_uL100(nvac,ugroup)*abL0_L0(ugroup)*CVACs(nvac)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_VACs_uL100(nvac,ugroup)*abL1_L0(ugroup)*CVACs(nvac)
- enddo
- !- k_L111
- do isia = N_loop_start, N_L111
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_L111_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111(isia)
- enddo
- do isia = N_loop_start, N_L111t
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_L111t_uL100(isia,ugroup)*abL0_L0(ugroup)*CL111t(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111t_uL100(isia,ugroup)*abL1_L0(ugroup)*CL111t(isia)
- enddo
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -g_SIA_uL100(ugroup)*abL0_L0(ugroup)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_SIA_uL100(ugroup)*abL1_L0(ugroup)
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -g_VAC_uL100(ugroup)*abL0_L0(ugroup)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_VAC_uL100(ugroup)*abL1_L0(ugroup)
- do u_idx1 =1, Nu_L111t
- do u_idx2 =max(u_idx1,ugroup), max(Nu_L100, Nu_L111t)
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li0L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- enddo
- enddo
- endif
- !write (*,*) "L0_colume", u_idx, ugroup, pd(N_offL100+ugroup)
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------uL100tL1 block----------------
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- elseif (j >= N_offL100L0+1 .and. j <= N_offL100L0+Nu_L100) then
- u_idx = j -N_offL100L0
- !--SIAs
- do isia = 1, N_SIAs_m
- pd(N_sink+isia) = pd(N_sink+isia)-k_SIAs_uL100(isia,u_idx)*adft_L1(u_idx)*CSIAs(isia)
- do nvac = 1, N_VACs_m
- if (((nvac+isia) .ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
- pd(N_sink+isia) =pd(N_sink+isia) +k_VACs_uL100(nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- enddo
- pd(N_sink+1) = pd(N_sink+1)+ g_SIA_uL100(u_idx)*adft_L1(u_idx)
- !--VACs
- do nvac = 1,N_VACs_m
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac)-k_VACs_uL100(nvac,u_idx)*adft_L1(u_idx)*CVACs(nvac)
- do temp = 1, N_VACs_m
- if ((temp .ge. mesh_ust(u_idx)+nvac) .and. (temp .le. mesh_ued(u_idx))) then
- pd(N_offSIA+nvac) = pd(N_offSIA+nvac) +k_VACs_uL100(temp,u_idx)*CVACs(temp)
- endif
- enddo
- enddo
- pd(N_offSIA+1) = pd(N_offSIA+1)+g_VAC_uL100(u_idx)*adft_L1(u_idx)
- !--L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia)-k_L111_uL100(isia,u_idx)*adft_L1(u_idx)*CL111(isia)
- enddo
- !--L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) -k_L111t_uL100(isia,u_idx)*adft_L1(u_idx)*CL111t(isia)
- enddo
- !--L111tL0,L1
- do ugroup = 1, Nu_L111t
- do u_idx1 = max(u_idx,ugroup), max(Nu_L111t,Nu_L100)
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi0_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li0L1(ugroup,u_idx,u_idx1)*CL111tL0(ugroup) &
- &-k_uL111t_uL100(ugroup,u_idx)*akbLi1_Li1L1(ugroup,u_idx,u_idx1)*CL111tL1(ugroup)
- enddo
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, ugroup
- if (u_idx1 .eq. u_idx) then
- factor = 0.5
- elseif (u_idx1 .gt. u_idx) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL111t+ugroup) =pd(N_offL111t+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L0L1(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L1(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
- pd(N_offL111tL0+ugroup)=pd(N_offL111tL0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L0L1(u_idx1,u_idx,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L1(u_idx1,u_idx,ugroup)*CL111tL1(u_idx1)
- enddo
- endif
- enddo
- !--L100
- do isia = N_loop_start, N_L100
- do nvac = 1, N_VACs_m
- if (((nvac+isia).ge. mesh_ust(u_idx)) .and. ((nvac+isia) .le. mesh_ued(u_idx))) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +k_VACs_uL100(nvac,u_idx)*v1(isia+nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- if (isia .eq. N_L100 .and. u_idx .eq. 1) then
- pd(N_offL111tL1+isia) = pd(N_offL111tL1+isia) +g_SIA_uL100(1)*v1(N_L100+1,1)
- endif
- enddo
- !--L100L0,L1
- st1 = mesh_ust(u_idx)
- ed1 = mesh_ued(u_idx)
- do ugroup = 1, Nu_L100
- !+SIA
- do isia = 1, N_SIAs_m
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) +k_SIAs_uL100(isia,u_idx)&
- &*akaL0_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
- pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup)+k_SIAs_uL100(isia,u_idx)&
- &*akaL1_Idef_L1(ugroup,isia,u_idx)*CSIAs(isia)
- endif
- enddo
- !+vac
- do nvac = 1, N_VACs_m
- st = mesh_ust(ugroup)+nvac
- ed = mesh_ued(ugroup)+nvac
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +k_VACs_uL100(nvac,u_idx)&
- &*akaL0_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_VACs_uL100(nvac,u_idx)&
- &*akaL1_Vdef_L1(ugroup,nvac,u_idx)*CVACs(nvac)
- endif
- enddo
- !+L111
- do isia = N_loop_start, N_L111
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +k_L111_uL100(isia,u_idx)&
- &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) +k_L111_uL100(isia,u_idx)&
- &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111(isia)
- endif
- enddo
- !+L111t
- do isia = N_loop_start, N_L111t
- st = mesh_ust(ugroup) -isia
- ed = mesh_ued(ugroup) -isia
- if (((ed .ge. st1) .and. (ed .le. ed1)) .or. ((st .ge. st1) .and. (st .le. ed1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +k_L111t_uL100(isia,u_idx)&
- &*akaL0_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+k_L111t_uL100(isia,u_idx)&
- &*akaL1_Idef_L1(ugroup,isia,u_idx)*CL111t(isia)
- endif
- enddo
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx-1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +g_SIA_uL100(u_idx)*akaL0_Vdef_L1(ugroup,1,u_idx)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_SIA_uL100(u_idx)*akaL1_Vdef_L1(ugroup,1,u_idx)
- endif
- if ((ugroup .eq. u_idx) .or. (ugroup .eq. (u_idx+1))) then
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) +g_VAC_uL100(u_idx)*akaL0_Idef_L1(ugroup,1,u_idx)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)+g_VAC_uL100(u_idx)*akaL1_Idef_L1(ugroup,1,u_idx)
- endif
- !group+ from uL111t
- if (u_idx .le. ugroup) then
- do u_idx1 = 1, min(ugroup, Nu_L111t) !uL111t
- if (u_idx .eq. u_idx1) then
- factor = 0.5
- elseif (u_idx .ge. u_idx1) then
- factor = 1.0
- else
- factor = 0.
- endif
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL0_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L0(u_idx,u_idx1,ugroup)*CL111tL0(u_idx1) &
- &+factor*k_uL111t_uL100(u_idx1,u_idx)*akaL1_L1L1(u_idx,u_idx1,ugroup)*CL111tL1(u_idx1)
- enddo
- endif
- if (ugroup == u_idx) then
- !- k_SIAm
- do isia =1, N_SIAs_m
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_SIAs_uL100(isia,ugroup)*abL0_L1(ugroup)*CSIAs(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_SIAs_uL100(isia,ugroup)*abL1_L1(ugroup)*CSIAs(isia)
- enddo
- !- k_VACs
- do nvac = 1, N_VACs_m
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_VACs_uL100(nvac,ugroup)*abL0_L1(ugroup)*CVACs(nvac)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_VACs_uL100(nvac,ugroup)*abL1_L1(ugroup)*CVACs(nvac)
- enddo
- !- k_L111
- do isia = N_loop_start, N_L111
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_L111_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111(isia)
- enddo
- do isia = N_loop_start, N_L111t
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -k_L111t_uL100(isia,ugroup)*abL0_L1(ugroup)*CL111t(isia)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup)-k_L111t_uL100(isia,ugroup)*abL1_L1(ugroup)*CL111t(isia)
- enddo
- do u_idx1 =1, Nu_L111t
- do u_idx2 =max(u_idx1,ugroup), max(Nu_L100, Nu_L111t)
- pd(N_offL100+ugroup) = pd(N_offL100+ugroup) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi0_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- pd(N_offL100L0+ugroup)= pd(N_offL100L0+ugroup) &
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L0(ugroup,u_idx1,u_idx2)*CL111tL0(u_idx1)&
- &-k_uL111t_uL100(u_idx1,ugroup)*akbLi1_Li1L1(ugroup,u_idx1,u_idx2)*CL111tL1(u_idx1)
- enddo
- enddo
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -g_SIA_uL100(ugroup)*abL0_L1(ugroup)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_SIA_uL100(ugroup)*abL1_L1(ugroup)
- pd(N_offL100+ugroup) =pd(N_offL100+ugroup) -g_VAC_uL100(ugroup)*abL0_L1(ugroup)
- pd(N_offL100L0+ugroup)=pd(N_offL100L0+ugroup) -g_VAC_uL100(ugroup)*abL1_L1(ugroup)
- endif
- !write (*,*) "L1_colume", u_idx, ugroup, pd(N_offL100+ugroup)
- enddo
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- !----------trap--------------------
- elseif (j == bin_length) then
- !L111
- do isia = N_loop_start, N_L111
- pd(N_offC15+isia) = pd(N_offC15+isia) -k_trap_L111(isia)*CL111(isia)
- enddo
- !L111t
- do isia = N_loop_start, N_L111t
- pd(N_offL111+isia) = pd(N_offL111+isia) +k_trap_L111(isia)*CL111(isia)
- enddo
- ! trap
- !do isia = N_loop_start, N_L111
- ! pd(bin_length) = pd(bin_length) -k_trap_L111(isia)*CL111(isia)
- !enddo
- do isia = N_loop_start, N_L111t
- pd(bin_length) = pd(bin_length) -k_trap_L111t(isia)*CL111t(isia)
- enddo
- do ugroup = 1, Nu_L111t
- pd(bin_length) = pd(bin_length) -k_trap_uL111t(ugroup)*adft_L0(ugroup)*CL111tL0(ugroup) &
- &-k_trap_uL111t(ugroup)*adft_L1(ugroup)*CL111tL1(ugroup)
- enddo
- do nvac =1, N_VACs_m
- pd(bin_length) = pd(bin_length) -k_trap_VACs(nvac)*CVACs(nvac)
- enddo
- endif
- return
- end subroutine jac_column_f77
- ! wrapper for jac_col
- subroutine jac_col_forpy(neq, t, u, j, ia, ja, pd )
- use coeffi
- implicit none
- interface
- subroutine jac_column_f77(neq, t, u, j, ia, ja, pd)
- !f2py intent(hide) neq, ia, ja
- !f2py intent(out) pd
- integer neq, j, ia, ja
- double precision t, pd
- double precision, target :: u
- dimension u(neq), ia(neq + 1), ja(*), pd(neq)
- end subroutine jac_column_f77
- end interface
- intent(out) pd
- integer neq, j, ia, ja
- double precision t, pd
- double precision, intent(in) :: u
- dimension u(neq), ia(neq + 1), ja(*), pd(neq)
- call jac_column_f77(neq,t, u, j, ia, ja, pd)
- end subroutine jac_col_forpy
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement