Major Release: v3.0.0 #2592
ma-sadeghi
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Please see this blogpost for a high-level highlight of the changes.
🎆 Major Changes
geometry
andphysics
modulesGeometry
andPhysics
objectstopotools
to a newvisualization
modulematerials
andmetrics
modules in favor of creating detailed examples🚀 New features
solvers
module containing classes that define a generic api for using arbitrary numerical solversintegrators
module containing classes that define the api for transient solversscipy.integrate.ivp_solve
function for transient problemsDemo
network generator which includes geometry models already assigned and ready for instant usetopotools.find_interface_throats
to find throats between two sets of poresSteadyStateSolution
class for storing the results of steady state algorithmsTransientSolution
class for storing results of transient algorithms at each time step, including ability to interpolate between timesparams
attribute to all objects for storing scalar values and constantspn['param.foo']
which looks up values frompn.params['foo']
in a way that works seamlessly with existing pore-scale modelsx
as a property toTransport
classes for easy access to the solved quantitygenerate_voxel_image
tovisualization
modulemodels.network
plot_network_jupyter
function to visualization module which creates an interactive visualization using Plotlycontrib
folder/module for putting experimental and beta features, and well as contributions before they are adopted into the main code baseTransientMultiPhysics
class to thecontrib
folderplot_network
function based on vispy tocontrib
foldersettings
attribute on objects to work more like python'sdataclasses
with settings as attributes, while also enforcing their type🍰 Enhancements
ScipyCG
to the solvers module (usesscipy.sparse.linalg.cg
)intersecting_cones/pyramids
size factor models, as well as hybridcones_and_cylinders
which adopt intersecting cones/pyramids as neededcall
method toModelWrapper
so they can run themselves directly with zero effort by useropenpnm.models.collections
containing dict files of preset models for all sub-classes to simplify instantiationworkspace.settings
_validate_data_health
to account for throats without an assigned conductance modelgetitem
on dictionaries to return a numeric value if used as a key, so pn[1.0] returns 1.0. This allows passing in scalar values to pore-scale models with no need to assign that scalar to all locations firstasmask
argument to neighbor lookup functionsReactiveTransport
ReactiveTransport
to facilitate iterative solvesget_conduit_data
method to Base class🔧 Maintenance
Algorithm
Phase
objects for cleaner tracebacks when autointerpolation is enablestopotools
module into library of functions requiring no openpnm specific classesnumpy
unbuffered
operations in surface area modelsopenpnm.models.misc/phase/physics
modules to keep namespace cleanrelaxation_source
from ReactiveTransportSettings as we no longer apply relaxation to source term__all__
functionality throughout code to control imports of functionsTransport
to put boundary condition functions in a mixinregenerate_models
to work when models lackregen_mode
argumentcache_b
, changedcache_A
tocache
since b is very smallfreeze_models
option fromModelsMixin
utils.misc
Transport
and subclassed algorithms' run methodscipy
's convergence checkerset_label
Bravais
andCubicDual
Base
class into several mixins for more control of inheritance #maintGeometry
andPhysics
objects, in favor ofNetwork
andPhase
handling all related data and models directlymodels.topology
tomodels.network
MixedInvasionPercolation(Coop)
andOrdinaryPercolation
algorithms until they can be better supportedtarget
keyword withnetwork
orphase
throughout all pore-scale models, except ones that are truly generalobj.settings['sources']
toobj[pore.sources']
to be consistent with how boundary conditions are tracked (i.e.alg['pore.bc.rate']
)mode
argument when adding boundary conditionsProject
class to a minimal pseudo-list, with no extraneous methods inherited from list cluttering the namespaceBase2
objects no longer accepts settingsiterative_props
, removedset_variable_props
ModelsMixin
fromAlgorithm
since algorithms don't typically need modelsDrainage
class in algorithms with more limited scope to replaceOrdinaryPercolation
andPorosimetry
nlin_max_iter
fromReactiveTransportSettings
in favor ofnewton_maxiter
Multiphase
tocontrib
folder to indicate it is experimentalrun
method now returns one or more Solution objects inside dictionary named according to the quantity they containnetwork
a mandatory argument onphase
andalgorithm
objectstomask
andtoindices
toto_mask
andto_indices
since the underscore is the common convention in other packages likepandas
get_domain_area
andget_domain_length
from attributes on transport algorithms totopotools
, for more general usephase
a mandatory argument in algorithms instead of allowing it to be set in settings after the factTransport
since these can be computed by users themselvesSolution
object for returning data from algorithmsSolver
class to handle matrix math which is passed as an argument to run methodsStickAndBall
geometry class (useSpheresAndCylinders
instead)classic_ordinary_diffusion
andclassic_hagen_poiseuille
conductance modelssympy
source models and made generic one much easier to usenum_points
argument fromDelaunay/Voronoi
classes in favorpoints=int
spacing
andshape
attribute fromCubic
and moved totopotools
as functionssetup
method from algorithms in favor of adding to settings attribute directlymodels.geometry.pore_area/throat_area
in favour ofpore/throat_cross_sectional_area
🐛 Bugfixes
regenerate_models
on a mixture now first regenerates each componentduplicate_throats
color_by
argument inplot_coordinates/connections
to accept partial list of values if pores/throats specifiedReactiveTransport
's run method to accept instantiated solver, not the class itselflens
andpendular_ring
modelsTransport
to properly check for connected network including connections with boundary conditions📗 Documentation
substituion
throughout the package to make docstrings more consistentThis discussion was created from the release v3.0.0.
Beta Was this translation helpful? Give feedback.
All reactions