import tfrt.drawing as drawing from tfrt.spectrumRGB import rgb angular_size = itertools.cycle( np.array([PI / 2, PI / 3, PI / 4, PI / 8, PI / 12, PI / 48], dtype=np.float64)) angle_samples = itertools.cycle([5, 9, 25]) center = itertools.cycle([(0, 0), (3, 0), (0, 3)]) central_angle = itertools.cycle([0, PI / 4, PI / 2, PI, -PI / 2]) beam_samples = itertools.cycle([5, 9, 25]) # build the source rays start_angle = next(angular_size) angles = distributions.StaticUniformAngularDistribution( -start_angle, start_angle, next(angle_samples)) base_points = distributions.StaticUniformBeam(-.5, .5, next(beam_samples)) #base_points = distributions.StaticUniformSquare(.1,5,y_size=.3,y_res=10) #base_points = distributions.StaticUniformCircle(next(beam_samples)) source = sources.AngularSource( 2, next(center), next(central_angle), angles, base_points, [drawing.YELLOW], dense=True, ) fig, ax = plt.subplots(1, 1, figsize=(8, 6)) ax.set_aspect("equal") ax.set_xbound(-4, 4)
def build_segs(pts=segment_points): return (pts.base_points_x[:-1], pts.base_points_y[:-1], pts.base_points_x[1:], pts.base_points_y[1:]) segments.update_function = build_segs segments.update_handles.append(segment_points.update) eng.annotation_helper(segments, "mat_in", 1, "x_start", dtype=tf.int64) eng.annotation_helper(segments, "mat_out", 0, "x_start", dtype=tf.int64) # build the target target = boundaries.ManualSegmentBoundary() target.feed_segments(np.array([[10, -5, 10, 5]], dtype=np.float64)) target.frozen = True # build the source rays beam_points = distributions.StaticUniformBeam(-1.5, 1.5, 10) angles = distributions.StaticUniformAngularDistribution(0, 0, 1) source = sources.AngularSource((-1.0, 0.0), 0.0, angles, beam_points, drawing.RAINBOW_6) # build the system system = eng.OpticalSystem2D() system.optical_segments = [segments] system.sources = [source] system.target_segments = [target] system.materials = [{"n": materials.vacuum}, {"n": materials.acrylic}] trace_engine = eng.OpticalEngine( 2, [op.StandardReaction()], simple_ray_inheritance={"angle_ranks", "wavelength"}) trace_engine.optical_system = system
import numpy as np import tensorflow as tf import tfrt.sources as sources import tfrt.distributions as distributions from tfrt.drawing import RAINBOW_6 angles = distributions.StaticUniformAngularDistribution(-1, 1, 11) base_points = distributions.StaticUniformBeam(-1, 1, 9) source = sources.AngularSource(2, (0, 0), 0, angles, base_points, RAINBOW_6, dense=True) print("source printout:") for key, value in source.items(): print(f"{key}: {value.shape}") pcs = sources.PrecompiledSource(source) print("precompiled source printout:") for key, value in pcs.items(): print(f"{key}: {value.shape}") pcs.save("./data/precompiled_source_test.dat")
import numpy as np import tensorflow as tf import tfrt.distributions as distributions import tfrt.boundaries as boundaries import tfrt.engine as eng import tfrt.sources as sources # build the source rays beam_points = distributions.StaticUniformBeam(-.5, .5, 3) angles = distributions.StaticUniformAngularDistribution(-.2, .2, 7) source = sources.AngularSource((-1.0, 0.0), 0.0, angles, beam_points, [500]) def print_source(): for key in source.keys(): print(f"{key}: {source[key].shape}") print(f"source rays printout") print_source() print("------------") eng.annotation_helper(source, "foo", 1, "x_start") source.update() print(f"use annotate helper:") print_source() print("------------") beam_points.sample_count = 5
if __name__ == "__main__": drawing.disable_figure_key_commands() # set up the figure and axes fig, ax = plt.subplots(1, 1, figsize=(9, 9)) # configure axes ax.set_aspect("equal") ax.set_xbound(-2, 2) ax.set_ybound(-2, 2) # build the source rays angular_distribution = distributions.StaticUniformAngularDistribution( -PI / 4.0, PI / 4.0, 6, name="StaticUniformAngularDistribution" ) base_point_distribution = distributions.StaticUniformBeam( -1.0, 1.0, 6 ) movable_source = sources.AngularSource( [0.0, 0.0], 0.0, angular_distribution, base_point_distribution, drawing.RAINBOW_6, name="AngularSource", dense=True, start_on_base=True, ray_length=1.0, ) angles_2 = distributions.RandomUniformAngularDistribution( -PI / 4.0, PI / 4.0, 6, name="StaticUniformAngularDistribution"