setup OMG scene
function setup_omg_sdf() result(array) !! setup OMG scene use mat_class, only : invert use opticalProperties use sdfHelpers, only : translate, rotate_y use sdfModifiers, only : SmoothUnion use sdfs, only : sdf, cylinder, torus, box, model use vector_class, only : vector type(sdf), allocatable :: array(:) type(sdf), allocatable, save :: cnta(:) type(opticalProp_t), save :: opt(2) type(vector) :: a, b real(kind=wp) :: t(4, 4), mus, mua, hgg, n integer :: layer allocate(array(2), cnta(10)) mus = 10._wp mua = 0.16_wp hgg = 0.0_wp n = 2.65_wp layer = 1 opt(1) = mono(mus, mua, hgg, n) opt(2) = mono(0._wp, 0._wp, 0._wp, 1.0_wp) ! x ! | ! | ! | ! | ! |_____z !O letter a = vector(0._wp, 0._wp, -0.7_wp) t = invert(translate(a)) cnta(1) = torus(.2_wp, 0.05_wp, opt(1), layer, transform=t) !M letter a = vector(-.25_wp, 0._wp, -.25_wp) b = vector(-.25_wp, 0._wp, .25_wp) t = invert(rotate_y(90._wp)) cnta(2) = cylinder(a, b, .05_wp, opt(1), layer, transform=t) a = vector(-.25_wp, 0._wp, -.25_wp) b = vector(.25_wp, 0._wp, .0_wp) cnta(3) = cylinder(a, b, .05_wp, opt(1), layer) a = vector(.25_wp, 0._wp, .0_wp) b = vector(-.25_wp, 0._wp, .25_wp) cnta(4) = cylinder(a, b, .05_wp, opt(1), layer) a = vector(-.25_wp, 0._wp, .25_wp) b = vector(.25_wp, 0._wp, .25_wp) cnta(5) = cylinder(a, b, .05_wp, opt(1), layer) !G letter a = vector(-.25_wp, 0._wp, .5_wp) b = vector(.25_wp, 0._wp, .5_wp) cnta(6) = cylinder(a, b, .05_wp, opt(1), layer) a = vector(-.25_wp, 0._wp, .5_wp) b = vector(-.25_wp, 0._wp, .75_wp) cnta(7) = cylinder(a, b, .05_wp, opt(1), layer) a = vector(.25_wp, 0._wp, .5_wp) b = vector(.25_wp, 0._wp, .75_wp) cnta(8) = cylinder(a, b, .05_wp, opt(1), layer) a = vector(.25_wp, 0._wp, .75_wp) b = vector(0._wp, 0._wp, .75_wp) cnta(9) = cylinder(a, b, .05_wp, opt(1), layer) a = vector(0._wp, 0._wp, .625_wp) b = vector(0._wp, 0._wp, .75_wp) cnta(10) = cylinder(a, b, .05_wp, opt(1), layer) array(1) = model(cnta, smoothunion, 0.09_wp) array(2) = box(vector(2._wp, 2._wp, 2._wp), opt(2), 2) end function setup_omg_sdf