setup_exp Function

public function setup_exp(dict) result(array)

Setup experimental geometry from Georgies paper. i.e a glass bottle with contents

Arguments

Type IntentOptional Attributes Name
type(toml_table), intent(inout) :: dict

Return Value type(sdf), allocatable, (:)


Source Code

    function setup_exp(dict) result(array)
    !! Setup experimental geometry from Georgies paper. i.e a glass bottle with contents
    
        use sdfs,         only : sdf, box, cylinder!, subtraction
        use sdfHelpers,   only : rotate_y, translate
        use utils,        only : deg2rad
        use vector_class, only : vector
        use mat_class,    only : invert
        use opticalProperties, only : mono, opticalProp_t

        type(toml_table), intent(inout)  :: dict

        type(sdf), allocatable :: array(:)
        type(opticalProp_t) :: opt(3)

        type(vector)  :: a, b
        real(kind=wp) :: n, optprop(5)

        error stop "add model and subtraction here"
        call get_value(dict, "musb", optprop(1))
        call get_value(dict, "muab", optprop(2))
        call get_value(dict, "musc", optprop(3))
        call get_value(dict, "muac", optprop(4))
        call get_value(dict, "hgg", optprop(5))
        n = 1._wp

        opt(1) = mono(optprop(1), optprop(2), optprop(5), 1.5_wp)
        opt(2) = mono(optprop(3), optprop(4), optprop(5), 1.3_wp)

        a = vector(-10._wp, 0._wp, 0._wp)
        b = vector(10._wp, 0._wp, 0._wp)
        !bottle
        array(2) = cylinder(a, b, 1.75_wp, opt(1), 2)
        ! contents
        array(1) = cylinder(a, b, 1.55_wp, opt(2), 1)

        ! t = invert(translate(vector(0._wp, 0._wp, -5._wp+1.75_wp)))
        ! slab = box(vector(10._wp, 10._wp, 10._wp), optprop(3), optprop(4), optprop(5), 1.3_wp, 1, transform=t)
        opt(3) = mono(0.0_wp, 0.0_wp, 0.0_wp, n)
        array(3) = box(vector(4._wp, 4._wp, 4._wp), opt(3), 2)

    end function setup_exp