mirror of
https://github.com/pim-n/pg-rad
synced 2026-03-22 21:48:11 +01:00
50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
from importlib.resources import files
|
|
import logging
|
|
|
|
from pg_rad.configs.filepaths import TEST_EXP_DATA
|
|
from .builder import LandscapeBuilder
|
|
from pg_rad.inputparser.specs import (
|
|
SimulationSpec,
|
|
CSVPathSpec,
|
|
ProceduralPathSpec
|
|
)
|
|
from pg_rad.objects.sources import PointSource
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class LandscapeDirector:
|
|
def __init__(self):
|
|
logger.debug("LandscapeDirector initialized.")
|
|
|
|
@staticmethod
|
|
def build_test_landscape():
|
|
fp = files('pg_rad.data').joinpath(TEST_EXP_DATA)
|
|
source = PointSource(
|
|
activity_MBq=100E9,
|
|
isotope="CS137",
|
|
position=(0, 0, 0)
|
|
)
|
|
lb = LandscapeBuilder("Test landscape")
|
|
lb.set_air_density(1.243)
|
|
lb.set_path_from_experimental_data(fp, z=0)
|
|
lb.set_point_sources(source)
|
|
landscape = lb.build()
|
|
return landscape
|
|
|
|
@staticmethod
|
|
def build_from_config(config: SimulationSpec):
|
|
lb = LandscapeBuilder(config.metadata.name)
|
|
lb.set_air_density(config.options.air_density)
|
|
|
|
if isinstance(config.path, CSVPathSpec):
|
|
lb.set_path_from_experimental_data(spec=config.path)
|
|
elif isinstance(config.path, ProceduralPathSpec):
|
|
lb.set_path_from_segments(
|
|
sim_spec=config,
|
|
)
|
|
lb.set_point_sources(*config.point_sources)
|
|
landscape = lb.build()
|
|
return landscape
|