Source code for struphy.topology.grids
import logging
from dataclasses import dataclass
from typing import Tuple
import numpy as np
from struphy.io.options import OptionsBase
from struphy.utils.utils import __dataclass_repr_no_defaults__, all_class_params_are_default
logger = logging.getLogger("struphy")
[docs]
@dataclass(repr=False)
class TensorProductGrid(OptionsBase):
"""Grid as a tensor product of 1d grids.
Parameters
----------
num_elements : Tuple[int, int, int]
Number of elements in each direction.
mpi_dims_mask: Tuple[bool, bool, bool]
True if the dimension is to be used in the domain decomposition (=default for each dimension).
If mpi_dims_mask[i]=False, the i-th dimension will not be decomposed.
"""
num_elements: Tuple[int, int, int] = (24, 10, 1)
mpi_dims_mask: Tuple[bool, bool, bool] = (True, True, True)
def __repr_no_defaults__(self):
return __dataclass_repr_no_defaults__(self)
@property
def is_default(self):
return all_class_params_are_default(self)
# def to_dict(self) -> dict:
# dct = {
# "num_elements": self.num_elements,
# "mpi_dims_mask": self.mpi_dims_mask,
# }
# return dct
# @classmethod
# def from_dict(cls, dct) -> "TensorProductGrid":
# return cls(
# num_elements=tuple(dct["num_elements"]),
# mpi_dims_mask=tuple(dct["mpi_dims_mask"]),
# )