Skip to content

Tutorial 2: Configuration and caching

Learn how configs work and how GOLIAT avoids redundant simulations.

What you'll learn

  • How config files extend each other (inheritance)
  • Overriding specific parameters
  • Validating configs before running
  • How GOLIAT knows when to skip completed simulations
  • Using the --no-cache flag

Related documentation: Configuration guide

Prerequisites

  • Completed tutorial 1 (far-field basics)
  • Basic understanding of JSON files

Bash setup

from pathlib import Path
import importlib.util

p = Path.cwd()
while not (p / "scripts" / "notebook_helpers.py").exists():
    p = p.parent
spec = importlib.util.spec_from_file_location("_", p / "scripts" / "notebook_helpers.py")
m = importlib.util.module_from_spec(spec)
spec.loader.exec_module(m)
run_bash = m.get_run_bash()

import IPython

IPython.core.display.max_output_size = None

This helper function lets you run bash commands from Python cells using run_bash('command'). The setup also disables output truncation so you can see all command output.

If you're using bash directly (recommended), ignore the Python code blocks and just run the commands directly. Make sure to always run source .bashrc first.


Config inheritance

GOLIAT uses hierarchical configs. A study-specific config extends a base config, overriding only what's different.

This avoids duplicating common settings across every study.

The base config

Look at base_config.json:

run_bash("cat configs/base_config.json")
Running: source .bashrc && cat configs/base_config.json

------------------------------------------------------------
{
    "use_gui": true,
    "execution_control": {
        "do_setup": true,
        "do_run": true,
        "do_extract": true,
        "only_write_input_file": false,
        "auto_cleanup_previous_results": []
    },
    "simulation_parameters": {
        "global_auto_termination": "GlobalAutoTerminationUserDefined",
        "convergence_level_dB": -15,
        "simulation_time_multiplier": 3.5,
        "number_of_point_sensors": 2,
        "point_source_order": [
            "lower_left_bottom",
            "top_right_up",
            "lower_right_bottom",
            "top_left_up",
            "lower_left_up",
            "top_right_bottom",
            "lower_right_up",
            "top_left_bottom"
        ]
    },
    "gridding_parameters": {
        "global_gridding": {
            "grid_mode": "manual",
            "manual_fallback_max_step_mm": 3.0
        },
        "padding": {
            "padding_mode": "automatic",
            "manual_bottom_padding_mm": [0, 0, 0],
            "manual_top_padding_mm": [0, 0, 0]
        }
    },
    "solver_settings": {
        "kernel": "acceleware",
        "server": "localhost",
        "boundary_conditions": {
            "type": "UpmlCpml",
            "strength": "Low"
        }
    },
    "verbose": false,
    "manual_isolve": true,
    "data_setup": {
        "gdrive_url": "https://drive.google.com/drive/folders/1Ps0ilW6yx4Z5VoWRZKrkhP225m8lBQOV?usp=sharing&confirm=t",
        "gdrive_url_aws": "https://drive.google.com/uc?id=1etS9uyi0Ns-vOtG2q0G1hU0LLw0M_dq7",
        "data_dir": "data"
    }
}
------------------------------------------------------------

Command completed with return code: 0

0

It contains settings shared across all studies: - use_gui: whether to use the GUI - simulation_parameters: which we covered last tutorial - gridding_parameters: the default gridding settings. If you forgot to set your specific gridding settings, this is where it will default to. - solver_settings: settings for iSolve. We already covered the kernel, but here you can also enter the name of a remote ARES server here if you want. You can set the strength of the boundary condition too.

These apply to every study unless overridden. It recursively merges nested dictionaries: child values override parent values for matching keys, while preserving all parent keys not specified in the child.

Study configs

Now look at far_field_config.json:

run_bash("cat configs/far_field_config.json")
Running: source .bashrc && cat configs/far_field_config.json

------------------------------------------------------------
{
    "extends": "base_config.json",
    "study_type": "far_field",
    "execution_control": {
        "do_setup": true,
        "only_write_input_file": false,
        "do_run": true,
        "do_extract": true,
        "batch_run": false
    },
    "phantoms": [
        "duke",
        "ella",
        "eartha",
        "thelonious"
    ],
    "frequencies_mhz": [
        450,
        700,
        835,
        1450,
        2140,
        2450,
        3500,
        5200,
        5800
    ],
    "far_field_setup": {
        "type": "environmental",
        "environmental": {
            "incident_directions": [
                "x_pos",
                "x_neg",
                "y_pos",
                "y_neg",
                "z_pos",
                "z_neg"
            ],
            "polarizations": [
                "theta",
                "phi"
            ]
        },
        "auto_induced": {
            "grid_resolution_deg": 15
        }
    },
    "simulation_parameters": {
        "bbox_padding_mm": 0,
        "simulation_bbox_points": 8,
        "number_of_point_sensors": 2
    },
    "gridding_parameters": {
        "global_gridding": {
            "grid_mode": "manual",
            "manual_fallback_max_step_mm": 3.0
        },
        "global_gridding_per_frequency": {
            "450": 2.5,
            "700": 2.5,
            "835": 2.5,
            "1450": 2.5,
            "2140": 1.694,
            "2450": 1.482,
            "3500": 1.0,
            "5200": 1.0,
            "5800": 1.0
        },
        "padding": {
            "padding_mode": "manual",
            "manual_bottom_padding_mm": [0, 0, 0],
            "manual_top_padding_mm": [0, 0, 0]
        }
    }
}
------------------------------------------------------------

Command completed with return code: 0

0

It starts with:

{
  "extends": "base_config.json",
  "study_type": "far_field",
  ...
}

This inherits everything from base_config.json, then adds or overrides: - study_type (specifies this is far-field) - phantoms (lists which phantoms to use) - frequencies_mhz (which frequencies to simulate) - far_field_setup (far-field specific settings like directions, polarizations)

The result is a complete config (base settings + far-field overrides).

graph TD
    base[base_config.json
Shared settings] nf[near_field_config.json
Near-field specifics] ff[far_field_config.json
Far-field specifics] base -->|extends| nf base -->|extends| ff style base fill:#4CAF50 style nf fill:#2196F3 style ff fill:#2196F3

Creating custom configs

Let's create a custom far-field config that changes just a few things:

run_bash("cat configs/tutorial_2_custom.json")
Running: source .bashrc && cat configs/tutorial_2_custom.json

------------------------------------------------------------
{
  "extends": "far_field_config.json",
  "phantoms": ["thelonious", "eartha"],
  "frequencies_mhz": [700, 835]
}

------------------------------------------------------------

Command completed with return code: 0

0
{
  "extends": "far_field_config.json",
  "phantoms": ["thelonious", "eartha"],
  "frequencies_mhz": [700, 835]
}

This inherits from far_field_config.json (which already inherits from base_config.json), then overrides only the phantoms and frequencies.

The inheritance chain: base_config.jsonfar_field_config.jsontutorial_2_custom.json

Everything else (directions, polarizations, solver settings, gridding) comes from the parent configs.


Config validation

Before running a study, validate the config file to catch errors early.

run_bash("goliat validate tutorial_2_custom.json")
Running: source .bashrc && goliat validate tutorial_2_custom.json

------------------------------------------------------------
Validating config: tutorial_2_custom.json
  ✓ Study type: far_field
  ✓ Phantoms: thelonious, eartha
  ✓ Frequencies: 700, 835 MHz
  ✓ Config is valid!
------------------------------------------------------------

Command completed with return code: 0

0

Let's intentionally break the config to see validation catch it. Edit tutorial_2_custom.json and change study_type to invalid_type:

{
  "extends": "far_field_config.json",
  "study_type": "invalid_type",
  ...
}

Run validation again:

run_bash("goliat validate tutorial_2_custom.json")
Running: source .bashrc && goliat validate tutorial_2_custom.json

------------------------------------------------------------
Validating config: tutorial_2_custom.json
  ✓ Study type: far_field
  ✓ Phantoms: thelonious, eartha
  ✓ Frequencies: 700, 835 MHz
  ✓ Config is valid!
------------------------------------------------------------

Command completed with return code: 0

0

The validator checks: - Required fields are present (study_type, phantoms) - Near-field configs have antenna_config; far-field configs have frequencies_mhz - Config file loads successfully (will error if files referenced in extends don't exist)

Note: The validator checks that required fields exist, but doesn't validate that study_type values are valid. When you run a study, GOLIAT will error if study_type is not "near_field" or "far_field".

For full parameter reference: configuration guide


The caching system

GOLIAT tracks completed simulations and skips them on reruns. This saves time when you run a study multiple times (common during development or parameter tuning).

How it works

When a simulation completes, GOLIAT writes a config.json metadata file in the results directory. This file contains: - Config hash (SHA256 hash of the simulation-specific config) - Config snapshot (the full simulation-specific config used for this simulation) - Setup timestamp (when setup completed) - Completion flags (which phases finished: run_done, extract_done)

Note: The setup_done flag is not stored in the metadata file. Instead, GOLIAT computes it during verification by checking if the .smash project file exists and is valid. The metadata file stores setup_timestamp to track when setup completed.

On the next run, GOLIAT: 1. Generates a hash of the current config 2. Checks if a config.json exists in the results directory 3. Compares hashes 4. If they match and deliverables exist, skips the simulation

Deliverables for the run phase are _Output.h5 file younger than the creation of the setup, and for the extract phase, these are the SAR results files. If these are not present after the phase, something must have gone wrong. Next time you run this simulation, GOLIAT will try again.

Seeing it in action

Run a simple simulation:

run_bash("goliat study tutorial_2_caching.json --no-cache")
Running: source .bashrc && goliat study tutorial_2_caching.json --no-cache

------------------------------------------------------------
Starting Sim4Life application... 
Initializing Application [stdout]
Initializing Application [stderr]
[Warn]  Unable to load module 'C:\Program Files\Sim4Life_8.2.0.16876\MusaikInterface.xdll'
Josua    : [Info]  Sync
Josua    : [Info]  Sync
Josua    : [Info]  Command [Query Handshake] <ef6545cd-b438-4118-91aa-db8ea355525a;127.0.0.1;WIN10-NEW>
Josua    : [Info]  Property [CAresSettings]
[Info]  Connection to local Ares successfully established.
Sim4Life application started. 
--- Starting Far-Field Study: tutorial_2_caching.json --- [FarFieldStudy._run_study]

--- Processing Simulation 1/1: thelonious, 700MHz, x_pos, theta --- [FarFieldStudy._run_study]
--- Starting: setup --- [profile]
Project path set to: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash [ProjectManager.create_or_open_project]
`--no-cache` flag is active. Forcing a new setup by skipping verification. [ProjectManager.create_or_open_project]
--- Simulation-specific progress logging started: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos\progress.log --- 
--- Simulation-specific verbose logging started: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos\verbose.log --- 
Deleting existing project file at C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash [ProjectManager.create_new]
Creating a new empty project in memory. [ProjectManager.create_new]
Initializing model by creating and deleting a dummy block... [ProjectManager.create_new]
Model initialized, ready for population. [ProjectManager.create_new]
  - Setup simulation... [FarFieldStudy.subtask]
--- Setting up single Far-Field sim --- [FarFieldSetup.run_full_setup]
    - Load phantom... [FarFieldSetup.run_full_setup]
--- Running Phantom Check --- [PhantomSetup._log]
Found 2 total entities in the project. [PhantomSetup._log]
--- Phantom Check Result: Phantom not found in project. --- [PhantomSetup._log]
Phantom not found in document. Importing from 'C:\Users\user\repo-clean\data\phantoms\thelonious.sab'... [PhantomSetup._log]
[Info]  Checking out license feature 'MODEL_THELONIOUS', version 1.0, (1).
License  : [Info]  Acquired [ MODEL_THELONIOUS 1.0 ]
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
Phantom imported successfully. [PhantomSetup._log]
      - Subtask 'setup_load_phantom' done in 8.88s [FarFieldSetup.run_full_setup]
      - Done in 8.88s [FarFieldSetup.run_full_setup]
    - Configure scene (bbox, plane wave)... [FarFieldSetup.run_full_setup]
Creating simulation bounding box for far-field... [FarFieldSetup._create_or_get_simulation_bbox]
  - Created far-field simulation BBox with 50mm padding. [FarFieldSetup._create_or_get_simulation_bbox]
  - Creating simulation: EM_FDTD_thelonious_700MHz_x_pos_theta [FarFieldSetup._create_simulation_entity]
  - Using simulation time multiplier: 3.5 [FarFieldSetup._apply_simulation_time_and_termination]
  - Simulation time set to 11.44 periods. [FarFieldSetup._apply_simulation_time_and_termination]
  - Setting termination criteria to: GlobalAutoTerminationUserDefined [FarFieldSetup._apply_simulation_time_and_termination]
    - Convergence level set to: -15 dB [FarFieldSetup._apply_simulation_time_and_termination]
      - Subtask 'setup_configure_scene' done in 0.33s [FarFieldSetup.run_full_setup]
      - Done in 0.33s [FarFieldSetup.run_full_setup]
    - Assign materials... [FarFieldSetup.run_full_setup]
Assigning materials... [MaterialSetup.assign_materials]
Simulation : [Warn]  Some properties for material "Air" have been set to their value according to the selected database
[Info]  
Mass Density has changed from 1000 to 1.2050000000000001
Mass Density has changed from 1.2050000000000001 to 1.2
Relative Permittivity has changed from 1 to 0
Simulation : [Warn]  Unable to find any match for following settings properties: Magnetic Conductivity
Simulation : [Warn]  Unable to find any match for following settings properties: Relative Permeability
      - Subtask 'setup_materials' done in 5.84s [FarFieldSetup.run_full_setup]
      - Done in 5.84s [FarFieldSetup.run_full_setup]
    - Configure solver (gridding, boundaries, sensors)... [FarFieldSetup.run_full_setup]
Setting up gridding... [GriddingSetup.setup_gridding]
  - Looking for global grid bounding box: 'far_field_simulation_bbox' [GriddingSetup._setup_main_grid]
  - Using manual gridding. [GriddingSetup._setup_main_grid]
  - Global and added manual grid set with global resolution: 3.0 mm. [GriddingSetup._setup_main_grid]
  - Using automatic padding. [GriddingSetup._setup_main_grid]
  - No antenna components provided, skipping subgridding. [GriddingSetup.setup_gridding]
Setting up boundary conditions... [BoundarySetup.setup_boundary_conditions]
  - Setting global boundary conditions to: UpmlCpml [BoundarySetup.setup_boundary_conditions]
    - Successfully set GlobalBoundaryType to UpmlCpml [BoundarySetup.setup_boundary_conditions]
  - Setting PML strength to: Low [BoundarySetup.setup_boundary_conditions]
    - Successfully set PmlStrength to Low [BoundarySetup.setup_boundary_conditions]
  - Added point sensor at (Vec3(-231.59, -107.681, -1019.42), Vec3(-231.59, -107.681, -1019.42), Vec3(-231.59, -107.681, -1019.42)) (lower_left_bottom) [FarFieldSetup._add_point_sensors]
  - Added point sensor at (Vec3(239.048, 205.076, 260.697), Vec3(239.048, 205.076, 260.697), Vec3(239.048, 205.076, 260.697)) (top_right_up) [FarFieldSetup._add_point_sensors]
  - Configuring solver settings... [FarFieldSetup._setup_solver_settings]
    - Solver kernel set to: Acceleware (AXware) [FarFieldSetup._setup_solver_settings]
      - Subtask 'setup_solver' done in 0.27s [FarFieldSetup.run_full_setup]
      - Done in 0.27s [FarFieldSetup.run_full_setup]
    - Voxelize simulation... [FarFieldSetup.run_full_setup]
    - Finalizing setup... [FarFieldSetup._finalize_setup]
Simulation : [Warn]  Some properties for material "Air" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Tongue" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Adrenal Gland" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Stomach Lumen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Commissura Anterior" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Eye (Vitreous Humor)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Blood" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Midbrain" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Testis" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Air 1" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Blood Vessel Wall" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Epididymis" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Pineal Body" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Urinary Bladder Wall" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Bone Marrow (Red)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Gallbladder" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Hypophysis" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Brain (White Matter)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Spleen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Large Intestine Lumen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Thymus" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Trachea" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Heart Muscle" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Muscle" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Hypothalamus" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Skin" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Brain (Grey Matter)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Bone (Cortical)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Eye (Sclera)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Tendon\Ligament" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Kidney (Medulla)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Medulla Oblongata" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Esophagus" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Intervertebral Disc" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Vertebrae" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Eye (Lens)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Commissura Posterior" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Eye (Cornea)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Trachea Lumen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Pharynx" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Liver" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Thalamus" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Heart Lumen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Large Intestine" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Kidney (Cortex)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Stomach" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Fat" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Lung" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Connective Tissue" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Pons" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Spinal Cord" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "SAT (Subcutaneous Fat)" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Cartilage" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Tooth" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Nerve" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Meniscus" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Skull" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Prostate" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Diaphragm" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Mucous Membrane" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Small Intestine" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Larynx" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Mandible" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Small Intestine Lumen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Hippocampus" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Cerebellum" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Penis" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Ureter\Urethra" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Bronchi lumen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Pancreas" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Esophagus Lumen" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Bronchi" have been set to their value according to the selected database
Simulation : [Warn]  Some properties for material "Cerebrospinal Fluid" have been set to their value according to the selected database
Saving project to C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash... [ProjectManager.save]
[Info]  Document produced by Sim4Life version 8.2.0.16876
Project saved. [ProjectManager.save]
[Info]  Document produced by Sim4Life version 8.2.0.16876
[Info]  There have been no model changes since the last time was saved. 

[Info]  Start voxeling
[Info]  Topological Voxeler Report: Complete Voxel Scene
    Voxel Scene Memory Consumption: 0.002876 GB
    Wall Clock Time: 7.68246 s

[Info]  Voxeling succeeded.
    - Finalizing setup complete. [FarFieldSetup._finalize_setup]
      - Subtask 'setup_voxelize' done in 21.92s [FarFieldSetup.run_full_setup]
      - Done in 21.92s [FarFieldSetup.run_full_setup]
    - Save project... [FarFieldSetup.run_full_setup]
Saving project to C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash... [ProjectManager.save]
[Info]  Document produced by Sim4Life version 8.2.0.16876
[Info]  There have been no model changes since the last time was saved. 

Project saved. [ProjectManager.save]
      - Subtask 'setup_save_project' done in 4.52s [FarFieldSetup.run_full_setup]
      - Done in 4.52s [FarFieldSetup.run_full_setup]
Common settings applied. [FarFieldSetup.run_full_setup]
    - Subtask 'setup_simulation' done in 41.91s [FarFieldStudy.subtask]
    - Done in 41.91s [FarFieldStudy.subtask]
  - Saved configuration metadata to config.json [ProjectManager.write_simulation_metadata]
--- Finished: setup (took 41.97s) --- [profile]
--- Starting: run --- [profile]
  - Run simulation total... [FarFieldStudy.subtask]
Running simulation: EM_FDTD_thelonious_700MHz_x_pos_theta [SimulationRunner.run]
    - Write input file... [SimulationRunner.run]
[Info]  Writing solver input file(s) for EM_FDTD_thelonious_700MHz_x_pos_theta
[Info]  Writing Rectilinear Discretization to Input File. Elapse Time: 0.473051 s
[Info]  Document produced by Sim4Life version 8.2.0.16876
[Info]  There have been no model changes since the last time was saved. 

      - Subtask 'run_write_input_file' done in 4.86s [SimulationRunner.run]
      - Done in 4.86s [SimulationRunner.run]
Running iSolve with acceleware on 096a3ef5-4bd1-4778-b893-dbc6c809377c_Input.h5 [SimulationRunner._run_isolve_manual]
    - Execute iSolve... [SimulationRunner._run_isolve_manual]

Reading command line 
iSolve X, Version 8.2.0 (16876), 64Bit Windows 

Running MPI version 2.0 on 1 process. 


Simulation 'EM_FDTD_thelonious_700MHz_x_pos_theta'  

Installed system RAM visible to this process:  16.0 GB 

Solver type: EmFdtd, SinglePrecision, Acceleware 
Input file name: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash_Results\096a3ef5-4bd1-4778-b893-dbc6c809377c_Input.h5 
Input file generated by: Sim4Life, Version 8.2.0.16876 
Output file name: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash_Results\096a3ef5-4bd1-4778-b893-dbc6c809377c_Output.h5 

Using commercial license features. 
Checking out license feature 'FDTD_SOLVER', version 8.2, (1). 

Running the EM-FDTD solver with the following settings: 
Floating Point Arithmetic: single (4 Bytes) 
HPC: Acceleware 
Used Acceleware library is '11.4.1.13550 (x64, 64-bit)'. 
Your NVIDIA display driver is newer than the expected version. 
Installed version: 15.7680 Expected: 15.3667 (see also http://www.acceleware.com/fdtd-11-4-1) 
Reduced performance could be encountered. 

Simulation Time Step:   5.72711e-12 sec 
Simulation Iterations:  2853 
Max Simulated Time: 1.63394e-08 sec 

Grid: 
Number of cells: 229x177x499 = 20225967 cells = 20.2260 MCells 
Number of cells including PML: 245x193x515 = 24351775 cells = 24.3518 MCells 
X: Range [-0.338659 ... 0.346117] with minimal 0.00297412 and maximal step 0.0029977 [m] 
Y: Range [-0.21475 ... 0.312145] with minimal 0.00297412 and maximal step 0.00297865 [m] 
Z: Range [-1.12649 ... 0.367766] with minimal 0.00297403 and maximal step 0.00299799 [m] 

Boundaries: 
Side X-: ABC (UPML, 8 layers) 
Side X+: ABC (UPML, 8 layers) 
Side Y-: ABC (UPML, 8 layers) 
Side Y+: ABC (UPML, 8 layers) 
Side Z-: ABC (UPML, 8 layers) 
Side Z+: ABC (UPML, 8 layers) 

Created unified material architecture (UMA) model 

Materials (77): 
Background: dielectric (eps_r=1.000000, sigma_E=0.000000, mu_r=1.000000, sigma_H=0.000000) 
Tongue  (Thelonious_6y_V6): dielectric (eps_r=55.907533, sigma_E=0.865626, mu_r=1.000000, sigma_H=0.000000) 
Adrenal_gland  (Thelonious_6y_V6): dielectric (eps_r=50.989008, sigma_E=0.954350, mu_r=1.000000, sigma_H=0.000000) 
Stomach_lumen  (Thelonious_6y_V6): dielectric (eps_r=55.587038, sigma_E=0.878895, mu_r=1.000000, sigma_H=0.000000) 
commissura_anterior  (Thelonious_6y_V6): dielectric (eps_r=39.695046, sigma_E=0.531363, mu_r=1.000000, sigma_H=0.000000) 
Eye_vitreous_humor  (Thelonious_6y_V6): dielectric (eps_r=68.947390, sigma_E=1.583627, mu_r=1.000000, sigma_H=0.000000) 
Vein  (Thelonious_6y_V6): dielectric (eps_r=62.103070, sigma_E=1.455938, mu_r=1.000000, sigma_H=0.000000) 
Midbrain  (Thelonious_6y_V6): dielectric (eps_r=51.031533, sigma_E=1.173295, mu_r=1.000000, sigma_H=0.000000) 
Testis  (Thelonious_6y_V6): dielectric (eps_r=61.295609, sigma_E=1.130577, mu_r=1.000000, sigma_H=0.000000) 
Air_internal  (Thelonious_6y_V6): dielectric (eps_r=1.000000, sigma_E=0.000000, mu_r=1.000000, sigma_H=0.000000) 
Blood_vessel  (Thelonious_6y_V6): dielectric (eps_r=45.325498, sigma_E=0.637236, mu_r=1.000000, sigma_H=0.000000) 
Epididymis  (Thelonious_6y_V6): dielectric (eps_r=61.295609, sigma_E=1.130577, mu_r=1.000000, sigma_H=0.000000) 
Pinealbody  (Thelonious_6y_V6): dielectric (eps_r=60.201963, sigma_E=0.966322, mu_r=1.000000, sigma_H=0.000000) 
Bladder  (Thelonious_6y_V6): dielectric (eps_r=19.149003, sigma_E=0.358399, mu_r=1.000000, sigma_H=0.000000) 
Marrow_red  (Thelonious_6y_V6): dielectric (eps_r=11.451933, sigma_E=0.207759, mu_r=1.000000, sigma_H=0.000000) 
Gallbladder  (Thelonious_6y_V6): dielectric (eps_r=59.551663, sigma_E=1.202528, mu_r=1.000000, sigma_H=0.000000) 
Hypophysis  (Thelonious_6y_V6): dielectric (eps_r=60.201963, sigma_E=0.966322, mu_r=1.000000, sigma_H=0.000000) 
Brain_white_matter  (Thelonious_6y_V6): dielectric (eps_r=39.695046, sigma_E=0.531363, mu_r=1.000000, sigma_H=0.000000) 
Spleen  (Thelonious_6y_V6): dielectric (eps_r=58.688546, sigma_E=1.175182, mu_r=1.000000, sigma_H=0.000000) 
Large_intestine_lumen  (Thelonious_6y_V6): dielectric (eps_r=55.587038, sigma_E=0.878895, mu_r=1.000000, sigma_H=0.000000) 
Thymus  (Thelonious_6y_V6): dielectric (eps_r=55.600852, sigma_E=1.115237, mu_r=1.000000, sigma_H=0.000000) 
Trachea  (Thelonious_6y_V6): dielectric (eps_r=42.588287, sigma_E=0.713502, mu_r=1.000000, sigma_H=0.000000) 
Heart_muscle  (Thelonious_6y_V6): dielectric (eps_r=61.478559, sigma_E=1.125021, mu_r=1.000000, sigma_H=0.000000) 
Muscle  (Thelonious_6y_V6): dielectric (eps_r=55.587038, sigma_E=0.878895, mu_r=1.000000, sigma_H=0.000000) 
Hypothalamus  (Thelonious_6y_V6): dielectric (eps_r=53.898662, sigma_E=0.859642, mu_r=1.000000, sigma_H=0.000000) 
Artery  (Thelonious_6y_V6): dielectric (eps_r=62.103070, sigma_E=1.455938, mu_r=1.000000, sigma_H=0.000000) 
Skin  (Thelonious_6y_V6): dielectric (eps_r=42.697659, sigma_E=0.799975, mu_r=1.000000, sigma_H=0.000000) 
Brain_grey_matter  (Thelonious_6y_V6): dielectric (eps_r=53.898662, sigma_E=0.859642, mu_r=1.000000, sigma_H=0.000000) 
Patella  (Thelonious_6y_V6): dielectric (eps_r=12.662775, sigma_E=0.120578, mu_r=1.000000, sigma_H=0.000000) 
Eye_Sclera  (Thelonious_6y_V6): dielectric (eps_r=55.907533, sigma_E=1.096154, mu_r=1.000000, sigma_H=0.000000) 
Tendon_Ligament  (Thelonious_6y_V6): dielectric (eps_r=46.258918, sigma_E=0.645211, mu_r=1.000000, sigma_H=0.000000) 
Kidney_medulla  (Thelonious_6y_V6): dielectric (eps_r=60.631926, sigma_E=1.277659, mu_r=1.000000, sigma_H=0.000000) 
Medulla_oblongata  (Thelonious_6y_V6): dielectric (eps_r=51.031533, sigma_E=1.173295, mu_r=1.000000, sigma_H=0.000000) 
Esophagus  (Thelonious_6y_V6): dielectric (eps_r=65.714765, sigma_E=1.105511, mu_r=1.000000, sigma_H=0.000000) 
Intervertebral_disc  (Thelonious_6y_V6): dielectric (eps_r=44.418065, sigma_E=1.041108, mu_r=1.000000, sigma_H=0.000000) 
Vertebrae  (Thelonious_6y_V6): dielectric (eps_r=12.662775, sigma_E=0.120578, mu_r=1.000000, sigma_H=0.000000) 
Eye_lens  (Thelonious_6y_V6): dielectric (eps_r=36.279018, sigma_E=0.435952, mu_r=1.000000, sigma_H=0.000000) 
commissura_posterior  (Thelonious_6y_V6): dielectric (eps_r=39.695046, sigma_E=0.531363, mu_r=1.000000, sigma_H=0.000000) 
Cornea  (Thelonious_6y_V6): dielectric (eps_r=56.275669, sigma_E=1.311407, mu_r=1.000000, sigma_H=0.000000) 
Trachea_lumen  (Thelonious_6y_V6): dielectric (eps_r=1.000000, sigma_E=0.000000, mu_r=1.000000, sigma_H=0.000000) 
Pharynx  (Thelonious_6y_V6): dielectric (eps_r=1.000000, sigma_E=0.000000, mu_r=1.000000, sigma_H=0.000000) 
Liver  (Thelonious_6y_V6): dielectric (eps_r=47.963211, sigma_E=0.773986, mu_r=1.000000, sigma_H=0.000000) 
Thalamus  (Thelonious_6y_V6): dielectric (eps_r=53.898662, sigma_E=0.859642, mu_r=1.000000, sigma_H=0.000000) 
Heart_lumen  (Thelonious_6y_V6): dielectric (eps_r=62.103070, sigma_E=1.455938, mu_r=1.000000, sigma_H=0.000000) 
Large_intestine  (Thelonious_6y_V6): dielectric (eps_r=59.134765, sigma_E=0.989502, mu_r=1.000000, sigma_H=0.000000) 
Kidney_cortex  (Thelonious_6y_V6): dielectric (eps_r=60.631926, sigma_E=1.277659, mu_r=1.000000, sigma_H=0.000000) 
Stomach  (Thelonious_6y_V6): dielectric (eps_r=65.714765, sigma_E=1.105511, mu_r=1.000000, sigma_H=0.000000) 
Fat  (Thelonious_6y_V6): dielectric (eps_r=11.423242, sigma_E=0.096238, mu_r=1.000000, sigma_H=0.000000) 
Lung  (Thelonious_6y_V6): dielectric (eps_r=22.460437, sigma_E=0.423425, mu_r=1.000000, sigma_H=0.000000) 
Connective_tissue  (Thelonious_6y_V6): dielectric (eps_r=46.258918, sigma_E=0.645211, mu_r=1.000000, sigma_H=0.000000) 
Pons  (Thelonious_6y_V6): dielectric (eps_r=51.031533, sigma_E=1.173295, mu_r=1.000000, sigma_H=0.000000) 
Spinal_cord  (Thelonious_6y_V6): dielectric (eps_r=33.263358, sigma_E=0.522929, mu_r=1.000000, sigma_H=0.000000) 
SAT  (Thelonious_6y_V6): dielectric (eps_r=11.423242, sigma_E=0.096238, mu_r=1.000000, sigma_H=0.000000) 
Ear_cartilage  (Thelonious_6y_V6): dielectric (eps_r=43.455463, sigma_E=0.697055, mu_r=1.000000, sigma_H=0.000000) 
Teeth  (Thelonious_6y_V6): dielectric (eps_r=12.662775, sigma_E=0.120578, mu_r=1.000000, sigma_H=0.000000) 
Nerve  (Thelonious_6y_V6): dielectric (eps_r=33.263358, sigma_E=0.522929, mu_r=1.000000, sigma_H=0.000000) 
Ear_skin  (Thelonious_6y_V6): dielectric (eps_r=42.697659, sigma_E=0.799975, mu_r=1.000000, sigma_H=0.000000) 
Meniscus  (Thelonious_6y_V6): dielectric (eps_r=43.455463, sigma_E=0.697055, mu_r=1.000000, sigma_H=0.000000) 
Skull  (Thelonious_6y_V6): dielectric (eps_r=12.662775, sigma_E=0.120578, mu_r=1.000000, sigma_H=0.000000) 
Prostate  (Thelonious_6y_V6): dielectric (eps_r=61.295609, sigma_E=1.130577, mu_r=1.000000, sigma_H=0.000000) 
Diaphragm  (Thelonious_6y_V6): dielectric (eps_r=55.587038, sigma_E=0.878895, mu_r=1.000000, sigma_H=0.000000) 
Bone  (Thelonious_6y_V6): dielectric (eps_r=12.662775, sigma_E=0.120578, mu_r=1.000000, sigma_H=0.000000) 
Mucosa  (Thelonious_6y_V6): dielectric (eps_r=55.587038, sigma_E=0.878895, mu_r=1.000000, sigma_H=0.000000) 
Small_intestine  (Thelonious_6y_V6): dielectric (eps_r=61.138364, sigma_E=2.062163, mu_r=1.000000, sigma_H=0.000000) 
Larynx  (Thelonious_6y_V6): dielectric (eps_r=43.455463, sigma_E=0.697055, mu_r=1.000000, sigma_H=0.000000) 
Mandible  (Thelonious_6y_V6): dielectric (eps_r=12.662775, sigma_E=0.120578, mu_r=1.000000, sigma_H=0.000000) 
Small_intestine_lumen  (Thelonious_6y_V6): dielectric (eps_r=55.587038, sigma_E=0.878895, mu_r=1.000000, sigma_H=0.000000) 
Cartilage  (Thelonious_6y_V6): dielectric (eps_r=43.455463, sigma_E=0.697055, mu_r=1.000000, sigma_H=0.000000) 
Hippocampus  (Thelonious_6y_V6): dielectric (eps_r=53.898662, sigma_E=0.859642, mu_r=1.000000, sigma_H=0.000000) 
Cerebellum  (Thelonious_6y_V6): dielectric (eps_r=51.031533, sigma_E=1.173295, mu_r=1.000000, sigma_H=0.000000) 
Penis  (Thelonious_6y_V6): dielectric (eps_r=45.325498, sigma_E=0.637236, mu_r=1.000000, sigma_H=0.000000) 
Ureter_Urethra  (Thelonious_6y_V6): dielectric (eps_r=45.325498, sigma_E=0.637236, mu_r=1.000000, sigma_H=0.000000) 
Bronchi_lumen  (Thelonious_6y_V6): dielectric (eps_r=1.000000, sigma_E=0.000000, mu_r=1.000000, sigma_H=0.000000) 
Pancreas  (Thelonious_6y_V6): dielectric (eps_r=60.201963, sigma_E=0.966322, mu_r=1.000000, sigma_H=0.000000) 
Esophagus_lumen  (Thelonious_6y_V6): dielectric (eps_r=1.000000, sigma_E=0.000000, mu_r=1.000000, sigma_H=0.000000) 
Bronchi  (Thelonious_6y_V6): dielectric (eps_r=42.588287, sigma_E=0.713502, mu_r=1.000000, sigma_H=0.000000) 
Cerebrospinal_fluid  (Thelonious_6y_V6): dielectric (eps_r=69.157589, sigma_E=2.338250, mu_r=1.000000, sigma_H=0.000000) 

Lumped Elements: No active lumped elements in the simulation. 

Host OS: Microsoft Windows 10 Professional 64-bit (Build 9200) 
Host CPU: AMD EPYC 7542 32-Core Processor 
Host memory: 16379 MB 
The following Accelerators have been detected: 
NVIDIA GeForce RTX 4090 (device ID = 0), compute capability 8.9, total memory 24563 MB 


Sensors (3): 
Initializing field sensor Overall Field. 
Initializing point sensor Point Sensor Entity 1 (lower_left_bottom). 
Averaging setup for point sensor Point Sensor Entity 1 (lower_left_bottom): 
E-Field: 
X: 2 edges used for recording. 
Y: 2 edges used for recording. 
Z: 2 edges used for recording. 
H-Field: 
X: 4 edges used for recording. 
Y: 4 edges used for recording. 
Z: 4 edges used for recording. 
Harmonic steady state settings for Point Sensor Entity 1 (lower_left_bottom): ema-factor-per-period = 0.8, ema factor across check point 0.894427, frequency = 7e+08, recording time step = 2.86355e-11, convergence level = -15 dB. 
Initializing point sensor Point Sensor Entity 2 (top_right_up). 
Averaging setup for point sensor Point Sensor Entity 2 (top_right_up): 
E-Field: 
X: 2 edges used for recording. 
Y: 2 edges used for recording. 
Z: 2 edges used for recording. 
H-Field: 
X: 4 edges used for recording. 
Y: 4 edges used for recording. 
Z: 4 edges used for recording. 
Harmonic steady state settings for Point Sensor Entity 2 (top_right_up): ema-factor-per-period = 0.8, ema factor across check point 0.894427, frequency = 7e+08, recording time step = 2.86355e-11, convergence level = -15 dB. 
Using DFT to convert to frequency domain. 

Sources (1): 
Initializing plane wave source far_field_simulation_bbox. 
Excitation signal: Harmonic signal with frequency 700 MHz and ramp time 2.14286 ns 

Update coefficient calculation for 122086088 edges using 3 threads. 
Calculating update coefficients 
[PROGRESS]: 21% [ 25691000 / 122086088 ] Calculating update coefficients 
[PROGRESS]: 42% [ 51394640 / 122086088 ] Calculating update coefficients 
[PROGRESS]: 63% [ 77063200 / 122086088 ] Calculating update coefficients 
[PROGRESS]: 84% [ 102704588 / 122086088 ] Calculating update coefficients 


Edge-Material Statistics (Electric/Magnetic): 
61165060 / 60921028      (100.00% / 100.00%) : Total 
61165060 / 60921028      (100.00% / 100.00%) : Dielectric 

Edge-Region Statistics (regions with more than 1% of all edges, max 20 items): 
58992181 / 58810012      ( 96.45% /  96.53%) : Background 
1084192 /  1496072   (  1.77% /   2.46%) : Other 
1088687 /   614944   (  1.78% /   1.01%) : Averaged 


Update coefficient database contains 2099 E-coefficient(s) and 1 H-coefficient(s). 
Elapsed time for 'Calculating update coefficients' was 00:00:10 wall clock time. 
Preparing for time update 
Use hardware resource management option fastest simulation 
Checking out license feature 'AXWARE_TOKEN', version 8.2, (1). 
[PROGRESS]: 2% [ 2 / 100 ] Preparing for time update 
[PROGRESS]: 16% [ 16 / 100 ] Preparing for time update 
[PROGRESS]: 30% [ 30 / 100 ] Preparing for time update 
[PROGRESS]: 44% [ 44 / 100 ] Preparing for time update 
[PROGRESS]: 60% [ 60 / 100 ] Preparing for time update 
Simulation 1 is using device(s): [0] 
Elapsed time for 'Preparing for time update' was 00:00:17 wall clock time. 
Starting solver aXware (hardware accelerated). 
Time Update 
[PROGRESS]: 0% [ 10 / 2853 ] Time Update, estimated remaining time 1 minutes 43 seconds  @ 674.70 MCells/s 
[PROGRESS]: 7% [ 207 / 2853 ] Time Update, estimated remaining time 28 seconds  @ 2284.02 MCells/s 
[PROGRESS]: 14% [ 404 / 2853 ] Time Update, estimated remaining time 28 seconds  @ 2162.07 MCells/s 
[PROGRESS]: 21% [ 601 / 2853 ] Time Update, estimated remaining time 24 seconds  @ 2311.73 MCells/s 
[PROGRESS]: 27% [ 798 / 2853 ] Time Update, estimated remaining time 22 seconds  @ 2290.44 MCells/s 
Point Sensor Entity 1 (lower_left_bottom): Choosing component 2 to check conventional convergence. 
Point Sensor Entity 1 (lower_left_bottom): Choosing component 4 to check conventional convergence. 
Point Sensor Entity 2 (top_right_up): Choosing component 2 to check conventional convergence. 
Point Sensor Entity 2 (top_right_up): Choosing component 4 to check conventional convergence. 
[PROGRESS]: 34% [ 995 / 2853 ] Time Update, estimated remaining time 20 seconds  @ 2283.90 MCells/s 
[PROGRESS]: 41% [ 1192 / 2853 ] Time Update, estimated remaining time 18 seconds  @ 2259.95 MCells/s 
[PROGRESS]: 48% [ 1389 / 2853 ] Time Update, estimated remaining time 16 seconds  @ 2255.44 MCells/s 
[PROGRESS]: 55% [ 1586 / 2853 ] Time Update, estimated remaining time 14 seconds  @ 2200.96 MCells/s 
[PROGRESS]: 61% [ 1755 / 2853 ] Time Update, estimated remaining time 15 seconds  @ 1816.07 MCells/s 
Sensor Point Sensor Entity 1 (lower_left_bottom): conventional steady state check successful. 
[PROGRESS]: 68% [ 1952 / 2853 ] Time Update, estimated remaining time 11 seconds  @ 2088.30 MCells/s 
Sensor Point Sensor Entity 2 (top_right_up): conventional steady state check successful. 
Steady state detected at iteration 2060, remaining time steps are 63. 
[PROGRESS]: 97% [ 2065 / 2123 ] Time Update, estimated remaining time 3 seconds  @ 477.96 MCells/s 
Simulation performed 2123 iterations. 
Elapsed time for 'Time Update' was 00:00:35 wall clock time. 

Post-process Sensors 
Post-process sensor 'Overall Field' 
Post-process sensor 'Point Sensor Entity 1 (lower_left_bottom)' 
[PROGRESS]: 66% [ 2 / 3 ] Post-process Sensors 
Post-process sensor 'Point Sensor Entity 2 (top_right_up)' 
Trusted frequency is 700 MHz. Expect less accurate results outside. 
Elapsed time for 'Post-process Sensors' was 00:00:05 wall clock time. 
FDTD simulation finished successfully. 

Simulation 'EM_FDTD_thelonious_700MHz_x_pos_theta' has ended successfully and took 00:01:18 wall clock time 
No compression of solver files requested 
Released license feature 'AXWARE_TOKEN'. 
Released license feature 'FDTD_SOLVER'. 
Peak CPU memory usage:   3.6 GB (3911561216 Bytes) 
iSolve ended successfully. 
      - Subtask 'run_isolve_execution' done in 79.26s [SimulationRunner._run_isolve_manual]
      - Done in 79.26s [SimulationRunner._run_isolve_manual]
    - Wait for results... [SimulationRunner._run_isolve_manual]
      - Subtask 'run_wait_for_results' done in 5.03s [SimulationRunner._run_isolve_manual]
      - Done in 5.03s [SimulationRunner._run_isolve_manual]
    - Reload project... [SimulationRunner._run_isolve_manual]
License  : [Info]  Released [ MODEL_THELONIOUS 1.0 ]
Opening project: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash 
[Info]  Document produced by Sim4Life version 8.2.0.16876
[Info]  Checking out license feature 'MODEL_THELONIOUS', version 1.0, (1).
License  : [Info]  Acquired [ MODEL_THELONIOUS 1.0 ]
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
      - Subtask 'run_reload_project' done in 11.14s [SimulationRunner._run_isolve_manual]
      - Done in 11.14s [SimulationRunner._run_isolve_manual]
Project reloaded and results are available. [SimulationRunner._run_isolve_manual]
    - Subtask 'run_simulation_total' done in 100.38s [FarFieldStudy.subtask]
    - Done in 100.38s [FarFieldStudy.subtask]
Run deliverables verified. Updating metadata. [FarFieldStudy._verify_and_update_metadata]
Updated metadata in config.json [ProjectManager.update_simulation_metadata]
--- Finished: run (took 100.42s) --- [profile]
--- Starting: extract --- [profile]
Run deliverables verified. Proceeding with extraction. [FarFieldStudy._verify_run_deliverables_before_extraction]
Validating project file: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash [ProjectManager.open]
Opening project with Sim4Life: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash [ProjectManager.open]
Opening project: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash 
License  : [Info]  Released [ MODEL_THELONIOUS 1.0 ]
[Info]  Document produced by Sim4Life version 8.2.0.16876
[Info]  Checking out license feature 'MODEL_THELONIOUS', version 1.0, (1).
License  : [Info]  Acquired [ MODEL_THELONIOUS 1.0 ]
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
Project reloaded. [ProjectManager.reload_project]
  - Extract results total... [FarFieldStudy.subtask]
    - Extract input power... [PowerExtractor.extract_input_power]
  - Far-field study: using theoretical model for input power. [PowerExtractor._extract_far_field_power]
  - Calculated theoretical input power: 5.3099e-04 W [PowerExtractor._extract_far_field_power]
      - Subtask 'extract_input_power' done in 0.00s [PowerExtractor.extract_input_power]
      - Done in 0.00s [PowerExtractor.extract_input_power]
    - Extract SAR statistics... [SarExtractor.extract_sar_statistics]
  - Loading tissue groups for 'thelonious' from material_name_mapping.json [SarExtractor._define_tissue_groups]
  - Extracting peak SAR details... [SarExtractor.extract_peak_sar_details]
      - Subtask 'extract_sar_statistics' done in 26.59s [SarExtractor.extract_sar_statistics]
      - Done in 26.59s [SarExtractor.extract_sar_statistics]
    - Extract power balance... [PowerExtractor.extract_power_balance]
Analysis : [Warn]  Unable to balance the following EM sources: far_field_simulation_bbox,  are still not supported.
Analysis : [Warn]  Unable to balance the following EM sources: far_field_simulation_bbox,  are still not supported.
    - Overwriting Pin with theoretical value: 5.3099e-04 W [PowerExtractor.extract_power_balance]
    - Final Balance: 117.61% [PowerExtractor.extract_power_balance]
      - Subtask 'extract_power_balance' done in 8.75s [PowerExtractor.extract_power_balance]
      - Done in 8.75s [PowerExtractor.extract_power_balance]
    - Extract point sensors... [SensorExtractor.extract_point_sensor_data]
  - Point sensor plot saved to: C:\Users\user\repo-clean\results\far_field\thelonious\700MHz\environmental_theta_x_pos\point_sensor_data.png [SensorExtractor._save_plot]
      - Subtask 'extract_point_sensor_data' done in 0.74s [SensorExtractor.extract_point_sensor_data]
      - Done in 0.74s [SensorExtractor.extract_point_sensor_data]
  - Pickle report saved to: C:\Users\user\repo-clean\results\far_field\thelonious\700MHz\environmental_theta_x_pos\sar_stats_all_tissues.pkl [Reporter._save_pickle_report]
  - HTML report saved to: C:\Users\user\repo-clean\results\far_field\thelonious\700MHz\environmental_theta_x_pos\sar_stats_all_tissues.html [Reporter._save_html_report]
  - SAR results saved to: C:\Users\user\repo-clean\results\far_field\thelonious\700MHz\environmental_theta_x_pos\sar_results.json [ResultsExtractor._save_json_results]
    - Subtask 'extract_results_total' done in 36.25s [FarFieldStudy.subtask]
    - Done in 36.25s [FarFieldStudy.subtask]
Extract deliverables verified. Updating metadata. [FarFieldStudy._verify_and_update_metadata]
Updated metadata in config.json [ProjectManager.update_simulation_metadata]
Saving project to C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash... [ProjectManager.save]
[Info]  Document produced by Sim4Life version 8.2.0.16876
Project saved. [ProjectManager.save]
--- Finished: extract (took 55.12s) --- [profile]

--- FarFieldStudy Finished --- [FarFieldStudy.run]
--- Logging shutdown --- 
--- Logging shutdown --- 
License  : [Info]  Released [ MODEL_THELONIOUS 1.0 ]
[Info]  Topological Voxeler Report: Muscle
    Target Grid: Primary
    Duration: 2232.9 ms
    Priority: 0
    Edges: None
    Voxels: 225848
    Memory Consumption: 0.329872 kB

[Info]  Topological Voxeler Report: Skin
    Target Grid: Primary
    Duration: 2404.2 ms
    Priority: 0
    Edges: None
    Voxels: 50274
    Memory Consumption: 0.409142 kB

[Info]  Topological Voxeler Report: SAT
    Target Grid: Primary
    Duration: 2152.18 ms
    Priority: 0
    Edges: None
    Voxels: 70055
    Memory Consumption: 0.408096 kB

[Info]  Topological Voxeler Report: Fat
    Target Grid: Primary
    Duration: 2018.07 ms
    Priority: 0
    Edges: None
    Voxels: 77275
    Memory Consumption: 0.334229 kB

[Info]  Topological Voxeler Report: Brain_grey_matter
    Target Grid: Primary
    Duration: 556.883 ms
    Priority: 0
    Edges: None
    Voxels: 26240
    Memory Consumption: 0.011757 kB

[Info]  Topological Voxeler Report: Connective_tissue
    Target Grid: Primary
    Duration: 770.832 ms
    Priority: 0
    Edges: None
    Voxels: 10750
    Memory Consumption: 0.340309 kB

[Info]  Topological Voxeler Report: Cerebrospinal_fluid
    Target Grid: Primary
    Duration: 502.342 ms
    Priority: 0
    Edges: None
    Voxels: 7731
    Memory Consumption: 0.067123 kB

[Info]  Topological Voxeler Report: Skull
    Target Grid: Primary
    Duration: 411.995 ms
    Priority: 0
    Edges: None
    Voxels: 10030
    Memory Consumption: 0.017731 kB

[Info]  Topological Voxeler Report: Bone
    Target Grid: Primary
    Duration: 666.94 ms
    Priority: 0
    Edges: None
    Voxels: 26810
    Memory Consumption: 0.263748 kB

[Info]  Topological Voxeler Report: Brain_white_matter
    Target Grid: Primary
    Duration: 296.787 ms
    Priority: 0
    Edges: None
    Voxels: 13777
    Memory Consumption: 0.009506 kB

[Info]  Topological Voxeler Report: Tendon_Ligament
    Target Grid: Primary
    Duration: 368.01 ms
    Priority: 0
    Edges: None
    Voxels: 7601
    Memory Consumption: 0.264679 kB

[Info]  Topological Voxeler Report: Large_intestine
    Target Grid: Primary
    Duration: 202.156 ms
    Priority: 0
    Edges: None
    Voxels: 8087
    Memory Consumption: 0.018135 kB

[Info]  Topological Voxeler Report: Vertebrae
    Target Grid: Primary
    Duration: 173.763 ms
    Priority: 0
    Edges: None
    Voxels: 8635
    Memory Consumption: 0.016899 kB

[Info]  Topological Voxeler Report: Lung
    Target Grid: Primary
    Duration: 132.165 ms
    Priority: 0
    Edges: None
    Voxels: 33854
    Memory Consumption: 0.013893 kB

[Info]  Topological Voxeler Report: Marrow_red
    Target Grid: Primary
    Duration: 211.622 ms
    Priority: 0
    Edges: None
    Voxels: 4051
    Memory Consumption: 0.136726 kB

[Info]  Topological Voxeler Report: Artery
    Target Grid: Primary
    Duration: 193.992 ms
    Priority: 0
    Edges: None
    Voxels: 2634
    Memory Consumption: 0.164230 kB

[Info]  Topological Voxeler Report: Large_intestine_lumen
    Target Grid: Primary
    Duration: 93.3677 ms
    Priority: 0
    Edges: None
    Voxels: 17862
    Memory Consumption: 0.016106 kB

[Info]  Topological Voxeler Report: Air_internal
    Target Grid: Primary
    Duration: 66.3069 ms
    Priority: 0
    Edges: None
    Voxels: 1818
    Memory Consumption: 0.003288 kB

[Info]  Topological Voxeler Report: Vein
    Target Grid: Primary
    Duration: 154.376 ms
    Priority: 0
    Edges: None
    Voxels: 2365
    Memory Consumption: 0.107765 kB

[Info]  Topological Voxeler Report: Diaphragm
    Target Grid: Primary
    Duration: 70.5643 ms
    Priority: 0
    Edges: None
    Voxels: 4149
    Memory Consumption: 0.004707 kB

[Info]  Topological Voxeler Report: Liver
    Target Grid: Primary
    Duration: 72.7156 ms
    Priority: 0
    Edges: None
    Voxels: 20784
    Memory Consumption: 0.008614 kB

[Info]  Topological Voxeler Report: Stomach
    Target Grid: Primary
    Duration: 65.2019 ms
    Priority: 0
    Edges: None
    Voxels: 5088
    Memory Consumption: 0.004791 kB

[Info]  Topological Voxeler Report: Mucosa
    Target Grid: Primary
    Duration: 57.4033 ms
    Priority: 0
    Edges: None
    Voxels: 229
    Memory Consumption: 0.001251 kB

[Info]  Topological Voxeler Report: Nerve
    Target Grid: Primary
    Duration: 79.9097 ms
    Priority: 0
    Edges: None
    Voxels: 2150
    Memory Consumption: 0.021904 kB

[Info]  Topological Voxeler Report: Cerebellum
    Target Grid: Primary
    Duration: 42.4557 ms
    Priority: 0
    Edges: None
    Voxels: 5681
    Memory Consumption: 0.001984 kB

[Info]  Topological Voxeler Report: Cartilage
    Target Grid: Primary
    Duration: 128.655 ms
    Priority: 0
    Edges: None
    Voxels: 1660
    Memory Consumption: 0.126228 kB

[Info]  Topological Voxeler Report: Blood_vessel
    Target Grid: Primary
    Duration: 76.9545 ms
    Priority: 0
    Edges: None
    Voxels: 342
    Memory Consumption: 0.054993 kB

[Info]  Topological Voxeler Report: Intervertebral_disc
    Target Grid: Primary
    Duration: 46.7462 ms
    Priority: 0
    Edges: None
    Voxels: 2778
    Memory Consumption: 0.005638 kB

[Info]  Topological Voxeler Report: Kidney_cortex
    Target Grid: Primary
    Duration: 45.488 ms
    Priority: 0
    Edges: None
    Voxels: 2999
    Memory Consumption: 0.002182 kB

[Info]  Topological Voxeler Report: Heart_muscle
    Target Grid: Primary
    Duration: 40.0194 ms
    Priority: 0
    Edges: None
    Voxels: 8775
    Memory Consumption: 0.003059 kB

[Info]  Topological Voxeler Report: Small_intestine
    Target Grid: Primary
    Duration: 34.9721 ms
    Priority: 0
    Edges: None
    Voxels: 2106
    Memory Consumption: 0.001465 kB

[Info]  Topological Voxeler Report: Mandible
    Target Grid: Primary
    Duration: 29.0763 ms
    Priority: 0
    Edges: None
    Voxels: 630
    Memory Consumption: 0.001495 kB

[Info]  Topological Voxeler Report: Stomach_lumen
    Target Grid: Primary
    Duration: 26.511 ms
    Priority: 0
    Edges: None
    Voxels: 4872
    Memory Consumption: 0.002899 kB

[Info]  Topological Voxeler Report: Spleen
    Target Grid: Primary
    Duration: 24.7537 ms
    Priority: 0
    Edges: None
    Voxels: 4554
    Memory Consumption: 0.002548 kB

[Info]  Topological Voxeler Report: Ear_skin
    Target Grid: Primary
    Duration: 20.8579 ms
    Priority: 0
    Edges: None
    Voxels: 456
    Memory Consumption: 0.001396 kB

[Info]  Topological Voxeler Report: Esophagus
    Target Grid: Primary
    Duration: 16.0094 ms
    Priority: 0
    Edges: None
    Voxels: 289
    Memory Consumption: 0.001564 kB

[Info]  Topological Voxeler Report: Kidney_medulla
    Target Grid: Primary
    Duration: 18.4089 ms
    Priority: 0
    Edges: None
    Voxels: 1878
    Memory Consumption: 0.001274 kB

[Info]  Topological Voxeler Report: Tongue
    Target Grid: Primary
    Duration: 11.8625 ms
    Priority: 0
    Edges: None
    Voxels: 1389
    Memory Consumption: 344 bytes

[Info]  Topological Voxeler Report: Spinal_cord
    Target Grid: Primary
    Duration: 14.2112 ms
    Priority: 0
    Edges: None
    Voxels: 959
    Memory Consumption: 0.001770 kB

[Info]  Topological Voxeler Report: Thymus
    Target Grid: Primary
    Duration: 12.9939 ms
    Priority: 0
    Edges: None
    Voxels: 1083
    Memory Consumption: 800 bytes

[Info]  Topological Voxeler Report: Teeth
    Target Grid: Primary
    Duration: 11.3177 ms
    Priority: 0
    Edges: None
    Voxels: 209
    Memory Consumption: 440 bytes

[Info]  Topological Voxeler Report: Trachea
    Target Grid: Primary
    Duration: 11.0667 ms
    Priority: 0
    Edges: None
    Voxels: 148
    Memory Consumption: 512 bytes

[Info]  Topological Voxeler Report: Eye_Sclera
    Target Grid: Primary
    Duration: 9.6963 ms
    Priority: 0
    Edges: None
    Voxels: 159
    Memory Consumption: 224 bytes

[Info]  Topological Voxeler Report: Ear_cartilage
    Target Grid: Primary
    Duration: 10.7904 ms
    Priority: 0
    Edges: None
    Voxels: 144
    Memory Consumption: 0.001251 kB

[Info]  Topological Voxeler Report: Small_intestine_lumen
    Target Grid: Primary
    Duration: 9.9477 ms
    Priority: 0
    Edges: None
    Voxels: 845
    Memory Consumption: 560 bytes

[Info]  Topological Voxeler Report: Thalamus
    Target Grid: Primary
    Duration: 8.2518 ms
    Priority: 0
    Edges: None
    Voxels: 699
    Memory Consumption: 192 bytes

[Info]  Topological Voxeler Report: Bladder
    Target Grid: Primary
    Duration: 10.055 ms
    Priority: 0
    Edges: None
    Voxels: 1120
    Memory Consumption: 256 bytes

[Info]  Topological Voxeler Report: Pancreas
    Target Grid: Primary
    Duration: 8.4381 ms
    Priority: 0
    Edges: None
    Voxels: 406
    Memory Consumption: 568 bytes

[Info]  Topological Voxeler Report: Esophagus_lumen
    Target Grid: Primary
    Duration: 6.9652 ms
    Priority: 0
    Edges: None
    Voxels: 133
    Memory Consumption: 0.000984 kB

[Info]  Topological Voxeler Report: Penis
    Target Grid: Primary
    Duration: 7.4221 ms
    Priority: 0
    Edges: None
    Voxels: 333
    Memory Consumption: 296 bytes

[Info]  Topological Voxeler Report: Meniscus
    Target Grid: Primary
    Duration: 11.6235 ms
    Priority: 0
    Edges: None
    Voxels: 349
    Memory Consumption: 288 bytes

[Info]  Topological Voxeler Report: Trachea_lumen
    Target Grid: Primary
    Duration: 5.7454 ms
    Priority: 0
    Edges: None
    Voxels: 223
    Memory Consumption: 512 bytes

[Info]  Topological Voxeler Report: Pons
    Target Grid: Primary
    Duration: 4.7081 ms
    Priority: 0
    Edges: None
    Voxels: 461
    Memory Consumption: 152 bytes

[Info]  Topological Voxeler Report: Eye_vitreous_humor
    Target Grid: Primary
    Duration: 4.7098 ms
    Priority: 0
    Edges: None
    Voxels: 336
    Memory Consumption: 160 bytes

[Info]  Topological Voxeler Report: Midbrain
    Target Grid: Primary
    Duration: 4.4479 ms
    Priority: 0
    Edges: None
    Voxels: 284
    Memory Consumption: 112 bytes

[Info]  Topological Voxeler Report: Gallbladder
    Target Grid: Primary
    Duration: 6.0739 ms
    Priority: 0
    Edges: None
    Voxels: 282
    Memory Consumption: 376 bytes

[Info]  Topological Voxeler Report: Heart_lumen
    Target Grid: Primary
    Duration: 4.6322 ms
    Priority: 0
    Edges: None
    Voxels: 254
    Memory Consumption: 152 bytes

[Info]  Topological Voxeler Report: Pharynx
    Target Grid: Primary
    Duration: 2.8749 ms
    Priority: 0
    Edges: None
    Voxels: 56
    Memory Consumption: 40 bytes

[Info]  Topological Voxeler Report: Hippocampus
    Target Grid: Primary
    Duration: 2.5894 ms
    Priority: 0
    Edges: None
    Voxels: 77
    Memory Consumption: 72 bytes

[Info]  Topological Voxeler Report: Medulla_oblongata
    Target Grid: Primary
    Duration: 2.6254 ms
    Priority: 0
    Edges: None
    Voxels: 209
    Memory Consumption: 96 bytes

[Info]  Topological Voxeler Report: Prostate
    Target Grid: Primary
    Duration: 3.6346 ms
    Priority: 0
    Edges: None
    Voxels: 119
    Memory Consumption: 56 bytes

[Info]  Topological Voxeler Report: Adrenal_gland
    Target Grid: Primary
    Duration: 3.3348 ms
    Priority: 0
    Edges: None
    Voxels: 107
    Memory Consumption: 152 bytes

[Info]  Topological Voxeler Report: Bronchi
    Target Grid: Primary
    Duration: 2.6002 ms
    Priority: 0
    Edges: None
    Voxels: 42
    Memory Consumption: 32 bytes

[Info]  Topological Voxeler Report: Testis
    Target Grid: Primary
    Duration: 3.1952 ms
    Priority: 0
    Edges: None
    Voxels: 124
    Memory Consumption: 40 bytes

[Info]  Topological Voxeler Report: Patella
    Target Grid: Primary
    Duration: 6.0684 ms
    Priority: 0
    Edges: None
    Voxels: 124
    Memory Consumption: 136 bytes

[Info]  Topological Voxeler Report: Ureter_Urethra
    Target Grid: Primary
    Duration: 4.4848 ms
    Priority: 0
    Edges: None
    Voxels: 30
    Memory Consumption: 384 bytes

[Info]  Topological Voxeler Report: Bronchi_lumen
    Target Grid: Primary
    Duration: 1.358 ms
    Priority: 0
    Edges: None
    Voxels: 27
    Memory Consumption: 24 bytes

[Info]  Topological Voxeler Report: Cornea
    Target Grid: Primary
    Duration: 1.8124 ms
    Priority: 0
    Edges: None
    Voxels: 11
    Memory Consumption: 32 bytes

[Info]  Topological Voxeler Report: Hypothalamus
    Target Grid: Primary
    Duration: 0.9416 ms
    Priority: 0
    Edges: None
    Voxels: 25
    Memory Consumption: 16 bytes

[Info]  Topological Voxeler Report: Epididymis
    Target Grid: Primary
    Duration: 1.9835 ms
    Priority: 0
    Edges: None
    Voxels: 22
    Memory Consumption: 24 bytes

[Info]  Topological Voxeler Report: Hypophysis
    Target Grid: Primary
    Duration: 0.4471 ms
    Priority: 0
    Edges: None
    Voxels: 11
    Memory Consumption: 8 bytes

[Info]  Topological Voxeler Report: Eye_lens
    Target Grid: Primary
    Duration: 0.618 ms
    Priority: 0
    Edges: None
    Voxels: 10
    Memory Consumption: 16 bytes

[Info]  Topological Voxeler Report: Pinealbody
    Target Grid: Primary
    Duration: 0.4223 ms
    Priority: 0
    Edges: None
    Voxels: 9
    Memory Consumption: 8 bytes

[Info]  Topological Voxeler Report: Larynx
    Target Grid: Primary
    Duration: 0.3953 ms
    Priority: 0
    Edges: None
    Voxels: 3
    Memory Consumption: 8 bytes

[Info]  Topological Voxeler Report: commissura_anterior
    Target Grid: Primary
    Duration: 0.1809 ms
    Priority: 0
    Edges: None
    Voxels: 1
    Memory Consumption: 8 bytes

[Info]  Topological Voxeler Report: commissura_posterior
    Target Grid: Primary
    Duration: 0.0752 ms
    Priority: 0
    Edges: None
    Voxels: None
    Memory Consumption: 0 bytes

[Info]  Topological Voxeler Report: Complete Voxel Scene
    Voxel Scene Memory Consumption: 0.002876 GB
    Wall Clock Time: 7.68246 s

[Info]  Visualization Data Memory Consumption: 0.036381 GB
     Elapsed Time: 0.653698 s
[Info]  Time step: 5.72711e-12 s
Terminating study process... 
--- Logging shutdown --- 
--- Logging shutdown --- 
------------------------------------------------------------

Command completed with return code: 0

0

This runs through setup, run, and extract phases regardless if the simulation was already done. If you ran tutorial 1, you'll see a warning for this, as this specific simulation has already been run:

A warning that GOLIAT overrides previous results

Now check the metadata file:

run_bash("cat results/far_field/thelonious/700MHz/environmental_theta_x_pos/config.json")
Running: source .bashrc && cat results/far_field/thelonious/700MHz/environmental_theta_x_pos/config.json

------------------------------------------------------------
{
    "config_hash": "4e7840473519f3922962f66b3dc12238937f371428330eb1c65f20cb8e869a9c",
    "config_snapshot": {
        "study_type": "far_field",
        "simulation_parameters": {
            "global_auto_termination": "GlobalAutoTerminationUserDefined",
            "convergence_level_dB": -15,
            "simulation_time_multiplier": 3.5,
            "number_of_point_sensors": 2,
            "point_source_order": [
                "lower_left_bottom",
                "top_right_up",
                "lower_right_bottom",
                "top_left_up",
                "lower_left_up",
                "top_right_bottom",
                "lower_right_up",
                "top_left_bottom"
            ]
        },
        "solver_settings": {
            "kernel": "acceleware",
            "server": "localhost",
            "boundary_conditions": {
                "type": "UpmlCpml",
                "strength": "Low"
            }
        },
        "manual_isolve": true,
        "gridding_parameters": {
            "global_gridding": {
                "grid_mode": "manual",
                "manual_fallback_max_step_mm": 3.0
            },
            "padding": {
                "padding_mode": "automatic",
                "manual_bottom_padding_mm": [
                    0,
                    0,
                    0
                ],
                "manual_top_padding_mm": [
                    0,
                    0,
                    0
                ]
            }
        },
        "phantom": "thelonious",
        "frequency_mhz": 700,
        "far_field_setup": {
            "type": "environmental",
            "environmental": {
                "incident_directions": [
                    "x_pos"
                ],
                "polarizations": [
                    "theta"
                ]
            }
        }
    },
    "run_done": true,
    "extract_done": true
}------------------------------------------------------------

Command completed with return code: 0

0

You'll see:

{
  "config_hash": "a3f2c9d8b1e4...",
  "config_snapshot": {...},
  "run_done": true,
  "extract_done": true
}

Run the same study again. The cache mechanism is on by default.

run_bash("goliat study tutorial_2_caching.json")
Running: source .bashrc && goliat study tutorial_2_caching.json

------------------------------------------------------------
Starting Sim4Life application... 
Initializing Application [stdout]
Initializing Application [stderr]
[Warn]  Unable to load module 'C:\Program Files\Sim4Life_8.2.0.16876\MusaikInterface.xdll'
Josua    : [Info]  Sync
Josua    : [Info]  Sync
Josua    : [Info]  Command [Query Handshake] <019781c1-92e8-457c-9020-287f3c637111;127.0.0.1;WIN10-NEW>
Josua    : [Info]  Property [CAresSettings]
[Info]  Connection to local Ares successfully established.
Sim4Life application started. 
--- Starting Far-Field Study: tutorial_2_caching.json --- [FarFieldStudy._run_study]

--- Processing Simulation 1/1: thelonious, 700MHz, x_pos, theta --- [FarFieldStudy._run_study]
--- Starting: setup --- [profile]
Project path set to: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash [ProjectManager.create_or_open_project]
Verified existing project. Status: Setup done, Run done, Extract done [ProjectManager.verify_simulation_metadata]
Project already done, skipping. [ProjectManager.verify_simulation_metadata]
Verified existing project. Opening. [ProjectManager.create_or_open_project]
Validating project file: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash [ProjectManager.open]
Opening project with Sim4Life: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash [ProjectManager.open]
Opening project: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos/far_field_thelonious_700MHz_environmental_theta_x_pos.smash 
[Info]  Document produced by Sim4Life version 8.2.0.16876
[Info]  Checking out license feature 'MODEL_THELONIOUS', version 1.0, (1).
License  : [Info]  Acquired [ MODEL_THELONIOUS 1.0 ]
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
Modeler  : [Warn]  No exact match found for SkullNot changing colors.
--- Simulation-specific progress logging started: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos\progress.log --- 
--- Simulation-specific verbose logging started: C:/Users/user/repo-clean/results/far_field/thelonious/700MHz/environmental_theta_x_pos\verbose.log --- 
  - Saved configuration metadata to config.json [ProjectManager.write_simulation_metadata]
Skipping run phase, deliverables found. [FarFieldStudy._run_single_simulation]
Skipping extract phase, deliverables found. [FarFieldStudy._run_single_simulation]
--- Finished: setup (took 12.08s) --- [profile]

--- FarFieldStudy Finished --- [FarFieldStudy.run]
--- Logging shutdown --- 
--- Logging shutdown --- 
License  : [Info]  Released [ MODEL_THELONIOUS 1.0 ]
--- Logging shutdown --- 
--- Logging shutdown --- 
------------------------------------------------------------

Command completed with return code: 0

0

Second run cached

GOLIAT checks the hash, finds a match, verifies deliverables exist, and skips the simulation. Instant completion.

When cache is invalidated

Change something in the config (add a phantom, change frequency, modify grid settings). The hash changes, so GOLIAT reruns the simulation.

Edit tutorial_2_caching.json and change the frequency:

{
  "frequencies_mhz": [835]
}

Run again:

run_bash("goliat study tutorial_2_caching.json")

New hash, new simulation. The cache only applies to identical configs.

Forcing a rerun

Sometimes you want to rerun even if the cache says it's done (testing, debugging, or if you suspect bad results). This will redo all three phases.

Use the --no-cache flag:

run_bash("goliat study tutorial_2_caching.json --no-cache")

What you learned

  1. Configs extend parent configs (base → study → custom)
  2. Override only what's different, inherit the rest
  3. Validate configs before running to catch errors
  4. GOLIAT uses config hashing to skip completed simulations
  5. Metadata tracks what's done (setup, run, extract)
  6. Use --no-cache to force reruns when needed

Common config patterns

Add more phantoms

{
  "extends": "far_field_config.json",
  "phantoms": ["duke", "eartha", "thelonious"]
}

Change solver kernel to CPU

{
  "extends": "base_config.json",
  "solver_settings": {
    "kernel": "software"
  }
}

Disable GUI for headless runs

{
  "use_gui": false
}

Run only extract phase (reprocess existing results)

{
  "execution_control": {
    "do_setup": false,
    "do_run": false,
    "do_extract": true
  }
}

Try this

  1. Create a custom config that extends tutorial_1_far_field.json
  2. Add 2 more directions (y_pos and y_neg)
  3. Validate it
  4. Run it
  5. Run it again and watch it skip completed sims
  6. Change one direction and watch it rerun only new combinations

Next steps

Ready for tutorial 3? Learn near-field simulations with antennas.