subroutine init_perturbation_creation(pert)
! Create the 'crtn_elems' and 'crtn_bits' components of a perturbation object.
! The 'crtn_orbs' components should be allocated and filled in already, as
! should the ncreate component.
type(perturbation), intent(inout) :: pert
integer :: i
if (.not. allocated(pert%crtn_elems)) allocate(pert%crtn_elems(pert%ncreate))
if (.not. allocated(pert%crtn_bits)) allocate(pert%crtn_bits(pert%ncreate))
do i = 1, pert%ncreate
pert%crtn_elems(i) = (pert%crtn_orbs(i) - 1) / bits_n_int
pert%crtn_bits(i) = mod(pert%crtn_orbs(i) - 1, bits_n_int)
end do
end subroutine init_perturbation_creation