module state_matrices implicit none private public :: state_matrix_copy public :: state_matrix_t public :: matrix_element_t type :: matrix_element_t private integer, dimension(:), allocatable :: f end type matrix_element_t type :: state_matrix_t private type(matrix_element_t), dimension(:), allocatable :: me end type state_matrix_t type :: polarization_t logical :: polarized = .false. integer :: spin_type = 0 integer :: multiplicity = 0 type(state_matrix_t) :: state end type polarization_t contains function polarization_copy (pol_in) result (pol) type(polarization_t) :: pol type(polarization_t), intent(in) :: pol_in !!! type(state_matrix_t) :: state_dummy pol%polarized = pol_in%polarized pol%spin_type = pol_in%spin_type pol%multiplicity = pol_in%multiplicity !!! state_dummy = state_matrix_copy (pol_in%state) !!! pol%state = state_dummy pol%state = state_matrix_copy (pol_in%state) end function polarization_copy function state_matrix_copy (state_in) result (state) type(state_matrix_t) :: state type(state_matrix_t), intent(in), target :: state_in end function state_matrix_copy end module state_matrices