diff --git a/hypnotoad/cases/tokamak.py b/hypnotoad/cases/tokamak.py index 0b243621..ae6d8858 100644 --- a/hypnotoad/cases/tokamak.py +++ b/hypnotoad/cases/tokamak.py @@ -44,7 +44,7 @@ class TokamakEquilibrium(Equilibrium): 5, doc="Number of radial points in the core", value_type=int, - checks=is_positive, + check_all=is_positive, ), nx_pf=WithMeta( "nx_core", @@ -53,19 +53,19 @@ class TokamakEquilibrium(Equilibrium): "varied due to BOUT++ limitations" ), value_type=int, - checks=is_positive, + check_all=is_positive, ), nx_inter_sep=WithMeta( 0, doc="Number of radial points in the inter-separatrix region", value_type=int, - checks=is_non_negative, + check_all=is_non_negative, ), nx_sol=WithMeta( 5, doc="Number of radial points in the SOL", value_type=int, - checks=is_positive, + check_all=is_positive, ), nx_sol_inner=WithMeta( "nx_sol", @@ -74,7 +74,7 @@ class TokamakEquilibrium(Equilibrium): "varied due to BOUT++ limitations" ), value_type=int, - checks=is_positive, + check_all=is_positive, ), nx_sol_outer=WithMeta( "nx_sol", @@ -83,61 +83,61 @@ class TokamakEquilibrium(Equilibrium): "varied due to BOUT++ limitations" ), value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_inner_divertor=WithMeta( 4, doc="Number of poloidal points in the inner divertor(s)", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_inner_lower_divertor=WithMeta( "ny_inner_divertor", doc="Number of poloidal points in the inner, lower divertor", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_inner_upper_divertor=WithMeta( "ny_inner_divertor", doc="Number of poloidal points in the inner, upper divertor", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_outer_divertor=WithMeta( 4, doc="Number of poloidal points in the outer divertor(s)", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_outer_lower_divertor=WithMeta( "ny_outer_divertor", doc="Number of poloidal points in the outer, lower divertor", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_outer_upper_divertor=WithMeta( "ny_outer_divertor", doc="Number of poloidal points in the outer, upper divertor", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_sol=WithMeta( 8, doc="Number of poloidal points in the SOL upstream of the X-point(s)", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_inner_sol=WithMeta( lambda options: options.ny_sol // 2, doc="Number of poloidal points in the inner SOL upstream of the X-point(s)", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_outer_sol=WithMeta( lambda options: options.ny_sol - options.ny_inner_sol, doc="Number of poloidal points in the outer SOL upstream of the X-point(s)", value_type=int, - checks=is_positive, + check_all=is_positive, ), psinorm_core=WithMeta( 0.9, @@ -228,7 +228,7 @@ class TokamakEquilibrium(Equilibrium): "to be slightly displaced from the null so code can follow Grad(psi)." ), value_type=float, - checks=[is_positive, lambda x: x < 1.0], + check_all=[is_positive, lambda x: x < 1.0], ), ) @@ -381,7 +381,7 @@ def __init__( super().__init__(nonorthogonal_settings) # Print the table of options - print(optionsTableString(self.user_options)) + print(self.user_options.as_table()) if make_regions: # Create self.regions diff --git a/hypnotoad/cases/torpex.py b/hypnotoad/cases/torpex.py index 1584308e..32755ecd 100644 --- a/hypnotoad/cases/torpex.py +++ b/hypnotoad/cases/torpex.py @@ -63,37 +63,37 @@ class TORPEXMagneticField(Equilibrium): 4, doc="Number of radial points in the PFR regions", value_type=int, - checks=is_positive, + check_all=is_positive, ), nx_sol=WithMeta( 4, doc="Number of radial points in the SOL regions", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_inner_lower_divertor=WithMeta( 4, doc="Number of poloidal points in the inner, lower leg", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_inner_upper_divertor=WithMeta( 4, doc="Number of poloidal points in the inner, upper leg", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_outer_upper_divertor=WithMeta( 4, doc="Number of poloidal points in the outer, upper leg", value_type=int, - checks=is_positive, + check_all=is_positive, ), ny_outer_lower_divertor=WithMeta( 4, doc="Number of poloidal points in the outer, lower leg", value_type=int, - checks=is_positive, + check_all=is_positive, ), psi_core=WithMeta( None, @@ -101,7 +101,7 @@ class TORPEXMagneticField(Equilibrium): value_type=float, ), psi_sol=WithMeta( - None, doc="psi value of the SOL", value_type=float, checks=is_positive, + None, doc="psi value of the SOL", value_type=float, check_all=is_positive, ), psi_sol_inner=WithMeta( lambda options: options.psi_sol, @@ -137,7 +137,7 @@ def __init__(self, equilibOptions, meshOptions): numpy.abs((self.user_options.psi_core - self.user_options.psi_sol) / 20.0), ) - print(optionsTableString(self.user_options)) + print(self.user_options.as_table()) # Call Equilibrium constructor after adding stuff to options super().__init__(meshOptions) diff --git a/hypnotoad/core/equilibrium.py b/hypnotoad/core/equilibrium.py index 760aa8f1..1d06e6c5 100644 --- a/hypnotoad/core/equilibrium.py +++ b/hypnotoad/core/equilibrium.py @@ -351,13 +351,13 @@ class FineContour: "interpolation or distance calculations" ), value_type=int, - checks=is_positive, + check_all=is_positive, ), finecontour_atol=WithMeta( 1.0e-12, doc="Absolute tolerance for refinement of FineContours", value_type=float, - checks=is_positive, + check_all=is_positive, ), finecontour_diagnose=WithMeta( False, @@ -374,7 +374,7 @@ class FineContour: "FineContour" ), value_type=int, - checks=is_positive, + check_all=is_positive, ), ) @@ -795,18 +795,18 @@ class PsiContour: user_options_factory = OptionsFactory( # Include settings for member FineContour objects - FineContour.user_options_factory.defaults, + FineContour.user_options_factory, refine_width=WithMeta( 1.0e-5, doc="Width for line search when refining points", value_type=float, - checks=is_positive, + check_all=is_positive, ), refine_atol=WithMeta( 2.0e-8, doc="Absolute tolerance for refinement of points", value_type=float, - checks=is_positive, + check_all=is_positive, ), refine_methods=WithMeta( ["integrate+newton", "integrate"], @@ -817,7 +817,7 @@ class PsiContour: "refine with Newton; 'none' - no refinement (always succeeds)" ), value_type=[str, Sequence], - checks=lambda x: numpy.all( + check_all=lambda x: numpy.all( [ value in ["newton", "line", "integrate", "integrate+newton", "none"] for value in ([x] if isinstance(x, str) else x) @@ -1592,13 +1592,16 @@ class EquilibriumRegion(PsiContour): user_options_factory = OptionsFactory( # Include settings for member PsiContour objects - PsiContour.user_options_factory.defaults, + PsiContour.user_options_factory, # # General options for the grid ############################## orthogonal=WithMeta(True, doc="Is grid orthogonal?", value_type=bool), y_boundary_guards=WithMeta( - 0, doc="Number of y-boundary cells", value_type=int, checks=is_non_negative, + 0, + doc="Number of y-boundary cells", + value_type=int, + check_all=is_non_negative, ), # Input parameters for poloidal spacing functions ################################################# @@ -1619,7 +1622,7 @@ class EquilibriumRegion(PsiContour): "Use None to not constrain the spacing." ), value_type=[float, NoneType], - checks=is_positive_or_None, + check_all=is_positive_or_None, ), target_poloidal_spacing_length=WithMeta( None, @@ -1628,7 +1631,7 @@ class EquilibriumRegion(PsiContour): "Use None to not constrain the spacing." ), value_type=[float, NoneType], - checks=is_positive_or_None, + check_all=is_positive_or_None, ), N_norm_prefactor=WithMeta( 1.0, @@ -1646,7 +1649,7 @@ class EquilibriumRegion(PsiContour): "significantly different from zero in poloidal spacing functions" ), value_type=float, - checks=is_non_negative, + check_all=is_non_negative, ), poloidalfunction_diagnose=WithMeta( False, @@ -1666,7 +1669,7 @@ class EquilibriumRegion(PsiContour): "grids)" ), value_type=float, - checks=is_positive, + check_all=is_positive, ), nonorthogonal_xpoint_poloidal_spacing_range=WithMeta( "nonorthogonal_xpoint_poloidal_spacing_length", @@ -1675,7 +1678,7 @@ class EquilibriumRegion(PsiContour): "X-point. This range is used at the radial location of separatrices" ), value_type=[float, NoneType], - checks=is_non_negative_or_None, + check_all=is_non_negative_or_None, ), nonorthogonal_xpoint_poloidal_spacing_range_inner=WithMeta( "nonorthogonal_xpoint_poloidal_spacing_range", @@ -1684,7 +1687,7 @@ class EquilibriumRegion(PsiContour): "X-point. This range is used at 'inner' radial boundaries (core and PFR)" ), value_type=[float, NoneType], - checks=is_non_negative_or_None, + check_all=is_non_negative_or_None, ), nonorthogonal_xpoint_poloidal_spacing_range_outer=WithMeta( "nonorthogonal_xpoint_poloidal_spacing_range", @@ -1693,7 +1696,7 @@ class EquilibriumRegion(PsiContour): "X-point. This range is used at 'outer' radial boundaries (SOL)" ), value_type=[float, NoneType], - checks=is_non_negative_or_None, + check_all=is_non_negative_or_None, ), nonorthogonal_target_poloidal_spacing_length=WithMeta( 5.0e-2, @@ -1702,7 +1705,7 @@ class EquilibriumRegion(PsiContour): "grids)" ), value_type=float, - checks=is_positive, + check_all=is_positive, ), nonorthogonal_target_poloidal_spacing_range=WithMeta( "nonorthogonal_target_poloidal_spacing_length", @@ -1711,7 +1714,7 @@ class EquilibriumRegion(PsiContour): "target. This range is used at the radial location of separatrices" ), value_type=[float, NoneType], - checks=is_non_negative_or_None, + check_all=is_non_negative_or_None, ), nonorthogonal_target_poloidal_spacing_range_inner=WithMeta( "nonorthogonal_target_poloidal_spacing_range", @@ -1720,7 +1723,7 @@ class EquilibriumRegion(PsiContour): "target. This range is used at 'inner' radial boundaries (core and PFR)" ), value_type=[float, NoneType], - checks=is_non_negative_or_None, + check_all=is_non_negative_or_None, ), nonorthogonal_target_poloidal_spacing_range_outer=WithMeta( "nonorthogonal_target_poloidal_spacing_range", @@ -1729,7 +1732,7 @@ class EquilibriumRegion(PsiContour): "target. This range is used at 'outer' radial boundaries (SOL)" ), value_type=[float, NoneType], - checks=is_non_negative_or_None, + check_all=is_non_negative_or_None, ), nonorthogonal_radial_range_power=WithMeta( 1.0, @@ -1738,7 +1741,7 @@ class EquilibriumRegion(PsiContour): "or outer range values" ), value_type=float, - checks=is_non_negative, + check_all=is_non_negative, ), nonorthogonal_spacing_method=WithMeta( "combined", @@ -2872,7 +2875,7 @@ class Equilibrium: user_options_factory = OptionsFactory( # Include settings for member EquilibriumRegion objects - EquilibriumRegion.user_options_factory.defaults, + EquilibriumRegion.user_options_factory, # # Radial spacing options ######################## @@ -2883,7 +2886,7 @@ class Equilibrium: "closer, >1 to make points further apart" ), value_type=float, - checks=is_positive, + check_all=is_positive, ), poloidal_spacing_delta_psi=WithMeta( None, @@ -2892,12 +2895,12 @@ class Equilibrium: "separatrix segment. Use None for an automatically selected increment." ), value_type=[float, NoneType], - checks=is_positive_or_None, + check_all=is_positive_or_None, ), ) nonorthogonal_options_factory = OptionsFactory( - EquilibriumRegion.nonorthogonal_options_factory.defaults, + EquilibriumRegion.nonorthogonal_options_factory, ) def __init__(self, nonorthogonal_settings): diff --git a/hypnotoad/core/mesh.py b/hypnotoad/core/mesh.py index 08c7402f..cc7620a0 100644 --- a/hypnotoad/core/mesh.py +++ b/hypnotoad/core/mesh.py @@ -260,7 +260,7 @@ class MeshRegion: """ user_options_factory = OptionsFactory( - EquilibriumRegion.user_options_factory.defaults, + EquilibriumRegion.user_options_factory, shiftedmetric=WithMeta( True, doc="Is grid generated for paralleltransform=ShiftedMetric?", @@ -276,13 +276,13 @@ class MeshRegion: 2.0e-8, doc="Relative tolerance for following Grad(psi)", value_type=float, - checks=is_non_negative, + check_all=is_non_negative, ), follow_perpendicular_atol=WithMeta( 1.0e-8, doc="Absolute tolerance for following Grad(psi)", value_type=float, - checks=is_non_negative, + check_all=is_non_negative, ), geometry_rtol=WithMeta( 1.0e-10, @@ -291,7 +291,7 @@ class MeshRegion: "(for example the Jacobian)" ), value_type=float, - checks=is_positive, + check_all=is_positive, ), cap_Bp_ylow_xpoint=WithMeta( False, @@ -1879,9 +1879,9 @@ class Mesh: user_options_factory = OptionsFactory( # Include settings for member Equilibrium object - Equilibrium.user_options_factory.defaults, + Equilibrium.user_options_factory, # Include settings for member MeshRegion objects - MeshRegion.user_options_factory.defaults, + MeshRegion.user_options_factory, ) def __init__(self, equilibrium, settings):