Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release To v0.9.0 #1

Merged
merged 108 commits into from
Jul 26, 2024
Merged

Release To v0.9.0 #1

merged 108 commits into from
Jul 26, 2024

Conversation

SoundsSerious
Copy link

-Added documentation strucutre
-documentaiton CI workflow
-Testing Check Workflow on PR and push
-move tests
-pullin changes from ottermaticslib

SoundsSerious and others added 30 commits December 9, 2023 14:24
>added setup script outline #TODO
>updated documentation
…nused field_inputs

>structure now has a flag when items solved, that prevents erronius output when not solved
>moved structural routines out of the conventional solver.evaluate path
>internal & system references are no longer persistently cached.
>SolverMixin.run will recache the system_references in addition to being lazily cached.
>Test Cases for basic component cost accounting working with prevention for reference loops
>subclasses compiled via `cls_compile()` which targets `subcls_compile`. `pre_compile` is top class only on `attrs.define()` aka `otterize`
>groups parent costs recursively through slot with assigned economics.
>possibility of levelized_cost with output calculation
>tests passing
>need cost categorization,dict_input,and cost terms!
>this is tough to get working with the current composition.
>add a `cost_property` to be accounted for as a both a system property and by the economics & cost_mixins
>apply terms & categories to costs
>costs tally into a lifecycle in economics
>summarizes costs thorugh a lifecycle
>tabulation utility functions to split dataframe into constants dict and variants DF
>added documentation to costs module
Added Economics Layer | v0.9.1 draft
>parents are assigned at the slot level and will warn if they already have an existing parent, then duplicate the item and replace the parent
>make cached_system_property work with cls call
>slots default for cost models
>component.update_internal() by default
>system parent as well
>split dataframe by groups and constants builtin to TabulationMixin
>adjust tests to reflect changes
>post_update_internal + post_update
>warn when assigning a cost to slot that is not cost model
>internal component is nolonger propoerty but a recacheable call
>defaults for subclasses in `default_costs` recursively getting classes
>common values between economics and combine_cost of CostModel
>env vars dont repalce in secret call if they have dontoverride on them
>logging resets!
> can set components via nested reference setting
> system must then reset each time to ensure appropriate settings maintained.
> can use eval_kw or sys_kw in run() to set parameters across all Comp.update (uses eval_kw) System.evaluate uses (sys_kw)
>allow wide CompIter cost models
>default name is none
>solver slot checking type recursively via referenecs to slot accepted clases or component type refs
>DataFrameMixin handles splitting dataframes for system and analysis
>update default costs
>structure is now a cost model
>Need to get costmodel to report internal beams of structure
>remove numeric validator
>dont replace system_properties if attr in herited
>lower log levels for properties
>add update_internal for solver mixin that allows for optional system update() / post_update()
>Add test for costs with explainable elements
>add force_solve feature to extend table
>training PredictionMixin added to store different models internally
>automatic retraining funcitons to target error
>setattrs in dict
>limit training to half of data by default
>convert to section native stress analysis
>need to remove implicit estimation vs calculate code in beams
>added structural load solver till fail_frac = target
>lower case force names to match section properties
>section properties upgrade
>structure prediction logic
>use section fail_frac criteria that updates based on current error rate
>refactor stress report lookup
>relatively fast and accurate for beams
>structures predictions untested
>need to work on data inline (problem specific)
>use root solver as first guess
>wider oob check by default
>rework attrs hash and overrode in some scenerios
>allow running again if kwargs provided to system
>added a full scope data train option
>use bisect to solve since its useful for changing failing case
>pdf figure save with options to close and open
>removed any trace of ottermatics/lib
>dynamics module refactored.
>ATTR_BASE cls & AttributeInstance for specalized API style.
>ATTR_BASE abstracted with define, and make_attribute with instance and define input validators. configure_for_system(name,system) provides customizable class based attribute setting.
SoundsSerious and others added 29 commits April 5, 2024 22:50
- deep underlying problem with components that change their references on the fly
- the most complete solution would be to do all parsing in the problem, taking many interences out of the systems/components
- however we are currently just always refreshing if not a transient which isn't terrible, and is more cautious.
- no refresh in transient, however 16s > 10s performance threshold for our example problem. Where cut extra?
- canidate for engforge release
- need to scale testing over system scopes to with real world cases
- removed time as a property from dynamics and thus all components / systems
- solver / problem / dyanmics should be reliable
- future work:
1. improve general performance & update accuracy by moving all introspection features from instance based caching to session base caching, on property change (on_setattr), and in session.Xnew. Use session.change(key,obj) for components to fix references.
2.  ensure subcomponent lambdas recieve correct component passed
3. subproblems - if you wanted to run a transient and optimize analysis of the results you'd need separate contexts systems for th e optimizing. I think dynamically subclassing contexts makes sense given our class-based-caching strategy.
4. solidify context variable strategy. Strict testing here #TODO
5. smarter ref updates [nested comp-iter, economics] with a class based update_refs callback to allow advanced customization and standardize the existing approaches for comp-iter ect. This goes well with a dependency graph of attributes / properties.
- fixed nonlinear dynamic component bug with old state/input names
- default nonlinear update on create_dynamic_matricies
- more robust solver defaults
- no comp error locate fix
- added test_slider_crank
- dynamic components are integrated to steady state analysis using equalities
- added warning when more equalities than variables, unify rate inequalities as a sum to zero in this case #TODO:
- `time,var` combo added by default for time - integration solver selection
- time specified in number of tests to indicate inclusion in steady state analysis
- problem_eq/ineq/opt should be the interface to use
- added `enter_refresh` option to allow for refreshing of the steady state analysis, now default on .solver() calls in eval() and run()
- changed `save_data_on_exit` to `save_on_exit`, typing yo
- allow filters on dynamic vars, removed bad code in filters
- signals assigned `signals` combo and also `default`
- added `lim` to solver variable combos
- minor formating & name changes
… changed, most efficient in problem __enter__

- issues achieving objectives as desired, normilization & basinhoping/search algorithm would be useful to learn a guess table
- single level comp passing via deepscoping
- more scope passing to consider
- more  work in useful / example problems
- passing problems vs dictionaries now
- black formatting
- apply converged logic to problem context
- run automatically saves data
- replace master
- fix issue in making plot name as a directory
- add example values
- dont use list/dict/tuple in dataframe
- examples / tutorials / tests
- API auto summary
- move tests out of engforge module
@SoundsSerious SoundsSerious merged commit 9c857e3 into main Jul 26, 2024
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant