Static calculations#

Build and compute on observation faults#

from pathlib import Path
from dyncfs.configuration import CfsConfig
from dyncfs.cfs_static import create_static_lib, compute_static_cfs

if __name__ == "__main__":
    config = CfsConfig()
    config.read_config(str(Path("case.ini").resolve()))
    create_static_lib(config)
    compute_static_cfs(config)

Use absolute input/output paths inside the INI. create_static_lib prepares EDGRN, runs it, prepares EDCMP with stress output, runs it and converts the tables to binary form. check_finished is passed to the backend runners.

compute_static_cfs reads the selected patches, applies slip/STF truncation, queries all source–receiver pairs and sums their tensors. It saves NED tensors before resolving normal, shear and Coulomb stresses according to optimal_type.

Calculate a horizontal grid#

from pathlib import Path
from dyncfs.configuration import CfsConfig
from dyncfs.cfs_static import compute_static_cfs_fix_depth

if __name__ == "__main__":
    config = CfsConfig()
    config.read_config(str(Path("case.ini").resolve()))
    # The existing static library must cover these depths and distances.
    compute_static_cfs_fix_depth(
        config, obs_depth=10, optimal_type=0,
        receiver_mechanism=[30, 45, 90],
        obs_lat_range=[30.0, 30.2], obs_lon_range=[103.0, 103.2],
        obs_delta_lat=0.1, obs_delta_lon=0.1,
    )

This creates nine receivers with longitude varying fastest. Depth is in km, angles and geographic spacing in degrees. Omitted options use the configuration, including receiver_mechanism from [fixed_obs_depth]. If neither gives a mechanism, modes 0/1 obtain one from the summed source moment tensor.

The direct grid function accepts an explicit depth independently of fixed_obs_depth_enabled(). The CLI and run_all_static apply the fixed_obs_depth>0 gate.

Reuse and half-space calculations#

Skip create_static_lib when using an unchanged compatible library. For homogeneous half-space EDCMP, set default_config=False, layered=False, and Lamé lam/mu in Pa. The current wrapper still performs its EDGRN preparation stage; follow the full wrapper’s prerequisites. The Wenchuan example compares a half-space and a layered static map.

Use a new output directory after changing model, geometry or solver settings. Static calculations allocate arrays proportional to the number of source–receiver pairs, including the final bulk stress array. Geometry chunking does not bound the memory of the complete static workflow.