get_position Subroutine

public subroutine get_position(ind, pos, input_coords)

Get position pos given indices ind

Arguments

Type IntentOptional AttributesName
integer(kind=Int32), intent(in), dimension(3):: ind

Indices

real(kind=Float64), intent(out), dimension(3):: pos

Position in beam_grid coordinates [cm]

integer, intent(in), optional :: input_coords

Indicates coordinate system of ind. Beam grid (0) and cylindrical (2)


Calls

proc~~get_position~~CallsGraph proc~get_position get_position proc~cyl_to_xyz cyl_to_xyz proc~get_position->proc~cyl_to_xyz proc~uvw_to_xyz uvw_to_xyz proc~cyl_to_xyz->proc~uvw_to_xyz proc~cyl_to_uvw cyl_to_uvw proc~cyl_to_xyz->proc~cyl_to_uvw

Called by

proc~~get_position~~CalledByGraph proc~get_position get_position proc~get_plasma get_plasma proc~get_plasma->proc~get_position proc~pnpa_f pnpa_f proc~pnpa_f->proc~get_plasma proc~attenuate attenuate proc~pnpa_f->proc~attenuate proc~dcx_spec dcx_spec proc~dcx_spec->proc~get_plasma proc~dcx dcx proc~dcx->proc~get_plasma proc~mc_halo mc_halo proc~dcx->proc~mc_halo proc~bremsstrahlung bremsstrahlung proc~bremsstrahlung->proc~get_plasma proc~fida_weights_mc fida_weights_mc proc~fida_weights_mc->proc~get_plasma proc~fida_weights_los fida_weights_los proc~fida_weights_los->proc~get_plasma proc~pfida_mc pfida_mc proc~pfida_mc->proc~get_plasma proc~pnpa_mc pnpa_mc proc~pnpa_mc->proc~get_plasma proc~pnpa_mc->proc~attenuate proc~fida_f fida_f proc~fida_f->proc~get_plasma proc~neutron_mc neutron_mc proc~neutron_mc->proc~get_plasma proc~mc_halo->proc~get_plasma proc~npa_f npa_f proc~npa_f->proc~get_plasma proc~npa_f->proc~attenuate proc~get_beam_cx_rate get_beam_cx_rate proc~npa_f->proc~get_beam_cx_rate proc~cold_spec cold_spec proc~cold_spec->proc~get_plasma proc~pfida_f pfida_f proc~pfida_f->proc~get_plasma proc~attenuate->proc~get_plasma proc~neutron_f neutron_f proc~neutron_f->proc~get_plasma proc~get_beam_cx_rate->proc~get_plasma proc~halo_spec halo_spec proc~halo_spec->proc~get_plasma proc~halo halo proc~halo->proc~get_plasma proc~halo->proc~mc_halo proc~npa_weights npa_weights proc~npa_weights->proc~attenuate proc~npa_weights->proc~get_beam_cx_rate program~fidasim fidasim program~fidasim->proc~pnpa_f program~fidasim->proc~dcx_spec program~fidasim->proc~dcx program~fidasim->proc~bremsstrahlung program~fidasim->proc~fida_weights_mc program~fidasim->proc~fida_weights_los program~fidasim->proc~pfida_mc program~fidasim->proc~pnpa_mc program~fidasim->proc~fida_f program~fidasim->proc~neutron_mc program~fidasim->proc~npa_f program~fidasim->proc~cold_spec program~fidasim->proc~pfida_f program~fidasim->proc~neutron_f program~fidasim->proc~halo_spec program~fidasim->proc~halo program~fidasim->proc~npa_weights proc~npa_mc npa_mc program~fidasim->proc~npa_mc proc~npa_mc->proc~attenuate proc~npa_mc->proc~get_beam_cx_rate

Contents

Source Code


Source Code

subroutine get_position(ind, pos, input_coords)
    !+ Get position `pos` given indices `ind`
    integer(Int32), dimension(3), intent(in) :: ind
        !+ Indices
    real(Float64), dimension(3), intent(out) :: pos
        !+ Position in [[libfida:beam_grid]] coordinates [cm]
    integer, intent(in), optional            :: input_coords
        !+ Indicates coordinate system of `ind`. Beam grid (0) and cylindrical (2)

    real(Float64), dimension(3) :: pos_temp1, pos_temp2
    integer :: ics, ocs

    if(present(input_coords)) then
        ics = input_coords
    else
        ics = 0
    endif

    if(ics.eq.0) then
        pos(1) = beam_grid%xc(ind(1))
        pos(2) = beam_grid%yc(ind(2))
        pos(3) = beam_grid%zc(ind(3))
    endif

    if(ics.eq.2) then
        pos_temp1(1) = inter_grid%r(ind(1))
        pos_temp1(2) = inter_grid%z(ind(2))
        pos_temp1(3) = inter_grid%phi(ind(3))
        call cyl_to_xyz(pos_temp1,pos)
    endif

end subroutine get_position