Module diskchef.dust_opacity.dust_files

Functions to get the file from LAMDA database

Global variables

var DUST_OPACITY_FILES

Unsorted list of paths to all dust file. Use file to find a file for the species

Functions

def dust_files(dust_name: Literal['draine03', 'diana', 'pyr'] = 'draine03',
size=<Quantity 1.e-05 cm>) ‑> List[str]
Expand source code
def dust_files(dust_name: Literal["draine03", "diana", "pyr"] = "draine03", size=1e-5 * u.cm) -> List[str]:
    """
    Returns a list of absolute paths to matched dust opacity dust_files

    Args:
        dust_name: dust name

    Usage:

    >>> opacity_files = dust_files("draine03", 1e-5 * u.cm)
    >>> len(opacity_files)
    1
    >>> opacity_files[0].endswith("dustkapscatmat_astrosilicate_draine03_1.0e-05cm.inp")
    True
    >>> dust_files("diana")[0]  #doctest: +ELLIPSIS
    '...dustkapscatmat_diana.inp'
    >>> dust_files("pyr")[0]  #doctest: +ELLIPSIS
    '...dustkapscatmat_pyr.inp'
    """
    if dust_name == "draine03":
        regexp = re.compile(rf".*{dust_name}_{size.to(u.cm).value:.1e}cm\.inp$")
        matching_files = [file for file in DUST_OPACITY_FILES if re.search(regexp, file)]
    elif dust_name in {"diana", "pyr"}:
        matching_files = [file for file in DUST_OPACITY_FILES if re.search(rf'.*dustkapscatmat_{dust_name}.inp$', file)]
    else:
        raise CHEFValueError(f"dust_name {dust_name} is not recognized!")
    return matching_files

Returns a list of absolute paths to matched dust opacity dust_files

Args

dust_name
dust name

Usage:

>>> opacity_files = dust_files("draine03", 1e-5 * u.cm)
>>> len(opacity_files)
1
>>> opacity_files[0].endswith("dustkapscatmat_astrosilicate_draine03_1.0e-05cm.inp")
True
>>> dust_files("diana")[0]  #doctest: +ELLIPSIS
'...dustkapscatmat_diana.inp'
>>> dust_files("pyr")[0]  #doctest: +ELLIPSIS
'...dustkapscatmat_pyr.inp'