ltbams 0.9.9__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ams/__init__.py +4 -11
- ams/_version.py +4 -4
- ams/cases/5bus/pjm5bus_demo.xlsx +0 -0
- ams/cases/5bus/pjm5bus_jumper.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced.json +1062 -0
- ams/cases/5bus/pjm5bus_uced.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_esd1.xlsx +0 -0
- ams/cases/5bus/pjm5bus_uced_ev.xlsx +0 -0
- ams/cases/ieee123/ieee123.xlsx +0 -0
- ams/cases/ieee123/ieee123_regcv1.xlsx +0 -0
- ams/cases/ieee14/ieee14.json +1166 -0
- ams/cases/ieee14/ieee14.raw +92 -0
- ams/cases/ieee14/ieee14_conn.xlsx +0 -0
- ams/cases/ieee14/ieee14_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_esd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_pvd1.xlsx +0 -0
- ams/cases/ieee39/ieee39_uced_vis.xlsx +0 -0
- ams/cases/matpower/benchmark.json +1594 -0
- ams/cases/matpower/case118.m +787 -0
- ams/cases/matpower/case14.m +129 -0
- ams/cases/matpower/case300.m +1315 -0
- ams/cases/matpower/case39.m +205 -0
- ams/cases/matpower/case5.m +62 -0
- ams/cases/matpower/case_ACTIVSg2000.m +9460 -0
- ams/cases/npcc/npcc.m +644 -0
- ams/cases/npcc/npcc_uced.xlsx +0 -0
- ams/cases/pglib/pglib_opf_case39_epri__api.m +243 -0
- ams/cases/wecc/wecc.m +714 -0
- ams/cases/wecc/wecc_uced.xlsx +0 -0
- ams/cli.py +6 -0
- ams/core/__init__.py +2 -0
- ams/core/documenter.py +652 -0
- ams/core/matprocessor.py +782 -0
- ams/core/model.py +330 -0
- ams/core/param.py +322 -0
- ams/core/service.py +918 -0
- ams/core/symprocessor.py +224 -0
- ams/core/var.py +59 -0
- ams/extension/__init__.py +5 -0
- ams/extension/eva.py +401 -0
- ams/interface.py +1085 -0
- ams/io/__init__.py +133 -0
- ams/io/json.py +82 -0
- ams/io/matpower.py +406 -0
- ams/io/psse.py +6 -0
- ams/io/pypower.py +103 -0
- ams/io/xlsx.py +80 -0
- ams/main.py +83 -4
- ams/models/__init__.py +24 -0
- ams/models/area.py +40 -0
- ams/models/bus.py +52 -0
- ams/models/cost.py +169 -0
- ams/models/distributed/__init__.py +3 -0
- ams/models/distributed/esd1.py +71 -0
- ams/models/distributed/ev.py +60 -0
- ams/models/distributed/pvd1.py +67 -0
- ams/models/group.py +231 -0
- ams/models/info.py +26 -0
- ams/models/line.py +238 -0
- ams/models/renewable/__init__.py +5 -0
- ams/models/renewable/regc.py +119 -0
- ams/models/reserve.py +94 -0
- ams/models/shunt.py +14 -0
- ams/models/static/__init__.py +2 -0
- ams/models/static/gen.py +165 -0
- ams/models/static/pq.py +61 -0
- ams/models/timeslot.py +69 -0
- ams/models/zone.py +49 -0
- ams/opt/__init__.py +12 -0
- ams/opt/constraint.py +175 -0
- ams/opt/exprcalc.py +127 -0
- ams/opt/expression.py +188 -0
- ams/opt/objective.py +174 -0
- ams/opt/omodel.py +432 -0
- ams/opt/optzbase.py +192 -0
- ams/opt/param.py +156 -0
- ams/opt/var.py +233 -0
- ams/pypower/__init__.py +8 -0
- ams/pypower/_compat.py +9 -0
- ams/pypower/core/__init__.py +8 -0
- ams/pypower/core/pips.py +894 -0
- ams/pypower/core/ppoption.py +244 -0
- ams/pypower/core/ppver.py +18 -0
- ams/pypower/core/solver.py +2451 -0
- ams/pypower/eps.py +6 -0
- ams/pypower/idx.py +174 -0
- ams/pypower/io.py +604 -0
- ams/pypower/make/__init__.py +11 -0
- ams/pypower/make/matrices.py +665 -0
- ams/pypower/make/pdv.py +506 -0
- ams/pypower/routines/__init__.py +7 -0
- ams/pypower/routines/cpf.py +513 -0
- ams/pypower/routines/cpf_callbacks.py +114 -0
- ams/pypower/routines/opf.py +1803 -0
- ams/pypower/routines/opffcns.py +1946 -0
- ams/pypower/routines/pflow.py +852 -0
- ams/pypower/toggle.py +1098 -0
- ams/pypower/utils.py +293 -0
- ams/report.py +212 -50
- ams/routines/__init__.py +23 -0
- ams/routines/acopf.py +117 -0
- ams/routines/cpf.py +65 -0
- ams/routines/dcopf.py +241 -0
- ams/routines/dcpf.py +209 -0
- ams/routines/dcpf0.py +196 -0
- ams/routines/dopf.py +150 -0
- ams/routines/ed.py +312 -0
- ams/routines/pflow.py +255 -0
- ams/routines/pflow0.py +113 -0
- ams/routines/pflow1.py +156 -0
- ams/routines/routine.py +1033 -0
- ams/routines/rted.py +519 -0
- ams/routines/type.py +160 -0
- ams/routines/uc.py +376 -0
- ams/shared.py +34 -9
- ams/system.py +61 -22
- ams/utils/__init__.py +3 -0
- ams/utils/misc.py +77 -0
- ams/utils/paths.py +257 -0
- docs/Makefile +21 -0
- docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_20_1.png +0 -0
- docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_37_1.png +0 -0
- docs/build/doctrees/nbsphinx/_examples_demo_demo_AGC_39_1.png +0 -0
- docs/build/html/_images/_examples_demo_demo_AGC_20_1.png +0 -0
- docs/build/html/_images/_examples_demo_demo_AGC_37_1.png +0 -0
- docs/build/html/_images/_examples_demo_demo_AGC_39_1.png +0 -0
- docs/build/html/_images/xlsx.png +0 -0
- docs/build/html/_static/file.png +0 -0
- docs/build/html/_static/minus.png +0 -0
- docs/build/html/_static/plus.png +0 -0
- docs/make.bat +35 -0
- docs/source/_generated/_generated/ams.core.model.Model.alter.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.doc.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.get.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.idx2uid.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.list2array.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.set.rst +6 -0
- docs/source/_generated/_generated/ams.core.model.Model.set_backref.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.dtype.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.param.RParam.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.LoadScale.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.MinDur.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumExpandDim.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumHstack.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOp.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.NumOpDual.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RBaseService.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ROperationService.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.RampSub.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ValueService.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarReduction.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.VarSelect.v1.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.assign_memory.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.get_names.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.n.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.parse.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.shape.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.size.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.update.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.v.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.v0.rst +6 -0
- docs/source/_generated/_generated/ams.core.service.ZonalSum.v1.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.is_tds.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.link_andes.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.receive.rst +6 -0
- docs/source/_generated/_generated/ams.interface.Dynamic.send.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.constraint.Constraint.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.exprcalc.ExpressionCalc.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.expression.Expression.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.e.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.objective.Objective.v.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.finalize.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.init.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.initialized.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModel.update.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.finalize.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.init.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.initialized.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.omodel.OModelBase.update.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.optbase.OptzBase.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.param.Param.update.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.evaluate.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.get_idx.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.n.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.parse.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.shape.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.size.rst +6 -0
- docs/source/_generated/_generated/ams.opt.var.Var.v.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addConstrs.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addRParam.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addService.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.addVars.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.dc2ac.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.disable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.doc.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.enable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.export_csv.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.get.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.init.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.run.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.set.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.solve.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.summary.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.unpack.rst +6 -0
- docs/source/_generated/_generated/ams.routines.dcopf.DCOPF.update.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addConstrs.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addRParam.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addService.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.addVars.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.dc2ac.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.disable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.doc.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.enable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.export_csv.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.get.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.init.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.run.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.set.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.solve.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.summary.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.unpack.rst +6 -0
- docs/source/_generated/_generated/ams.routines.pflow.PFlow.update.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addConstrs.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addRParam.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addService.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.addVars.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.class_name.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.dc2ac.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.disable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.doc.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.enable.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.export_csv.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.get.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.init.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.run.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.set.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.solve.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.summary.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.unpack.rst +6 -0
- docs/source/_generated/_generated/ams.routines.routine.RoutineBase.update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.add.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.as_dict.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.calc_pu_coeff.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.call_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.collect_config.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.collect_ref.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.connectivity.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.e_clear.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.f_update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.fg_to_dae.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.find_devices.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.find_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.from_ipysheet.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.g_islands.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.g_update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.get_z.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_groups.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_routines.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.import_types.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.init.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.j_islands.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.j_update.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.l_update_eq.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.l_update_var.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.link_ext_param.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.precompile.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.prepare.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.reload.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.remove_pycapsule.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.report.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.reset.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.s_update_post.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.s_update_var.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.save_config.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_address.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_config.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_dae_names.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_output_subidx.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.set_var_arrays.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.setup.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_adder_setter.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_existing.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_no_check_init.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_sparse_pattern.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.store_switch_times.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.summary.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.supported_models.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.supported_routines.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.switch_action.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.to_andes.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.to_ipysheet.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.undill.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.vars_to_dae.rst +6 -0
- docs/source/_generated/_generated/ams.system.System.vars_to_models.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_last.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_filename_prefix_middle.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_last.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.display_parent_prefix_middle.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayable.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.displayname.rst +6 -0
- docs/source/_generated/_generated/ams.utils.paths.DisplayablePath.make_tree.rst +6 -0
- docs/source/_generated/ams.cli.create_parser.rst +6 -0
- docs/source/_generated/ams.cli.main.rst +6 -0
- docs/source/_generated/ams.cli.preamble.rst +6 -0
- docs/source/_generated/ams.cli.rst +32 -0
- docs/source/_generated/ams.core.model.Model.rst +56 -0
- docs/source/_generated/ams.core.model.rst +30 -0
- docs/source/_generated/ams.core.param.RParam.rst +49 -0
- docs/source/_generated/ams.core.param.rst +30 -0
- docs/source/_generated/ams.core.service.LoadScale.rst +51 -0
- docs/source/_generated/ams.core.service.MinDur.rst +53 -0
- docs/source/_generated/ams.core.service.NumExpandDim.rst +53 -0
- docs/source/_generated/ams.core.service.NumHstack.rst +53 -0
- docs/source/_generated/ams.core.service.NumOp.rst +53 -0
- docs/source/_generated/ams.core.service.NumOpDual.rst +53 -0
- docs/source/_generated/ams.core.service.RBaseService.rst +51 -0
- docs/source/_generated/ams.core.service.ROperationService.rst +51 -0
- docs/source/_generated/ams.core.service.RampSub.rst +53 -0
- docs/source/_generated/ams.core.service.ValueService.rst +51 -0
- docs/source/_generated/ams.core.service.VarReduction.rst +53 -0
- docs/source/_generated/ams.core.service.VarSelect.rst +53 -0
- docs/source/_generated/ams.core.service.ZonalSum.rst +53 -0
- docs/source/_generated/ams.core.service.rst +42 -0
- docs/source/_generated/ams.interface.Dynamic.rst +41 -0
- docs/source/_generated/ams.interface.build_group_table.rst +6 -0
- docs/source/_generated/ams.interface.make_link_table.rst +6 -0
- docs/source/_generated/ams.interface.parse_addfile.rst +6 -0
- docs/source/_generated/ams.interface.replace_dev.rst +6 -0
- docs/source/_generated/ams.interface.rst +43 -0
- docs/source/_generated/ams.interface.sync_adsys.rst +6 -0
- docs/source/_generated/ams.interface.to_andes.rst +6 -0
- docs/source/_generated/ams.interface.verify_pf.rst +6 -0
- docs/source/_generated/ams.io.guess.rst +6 -0
- docs/source/_generated/ams.io.json.rst +30 -0
- docs/source/_generated/ams.io.json.write.rst +6 -0
- docs/source/_generated/ams.io.matpower.mpc2system.rst +6 -0
- docs/source/_generated/ams.io.matpower.read.rst +6 -0
- docs/source/_generated/ams.io.matpower.rst +33 -0
- docs/source/_generated/ams.io.matpower.system2mpc.rst +6 -0
- docs/source/_generated/ams.io.matpower.testlines.rst +6 -0
- docs/source/_generated/ams.io.parse.rst +6 -0
- docs/source/_generated/ams.io.psse.rst +23 -0
- docs/source/_generated/ams.io.pypower.ppc2system.rst +6 -0
- docs/source/_generated/ams.io.pypower.py2ppc.rst +6 -0
- docs/source/_generated/ams.io.pypower.read.rst +6 -0
- docs/source/_generated/ams.io.pypower.rst +34 -0
- docs/source/_generated/ams.io.pypower.system2ppc.rst +6 -0
- docs/source/_generated/ams.io.pypower.testlines.rst +6 -0
- docs/source/_generated/ams.io.rst +45 -0
- docs/source/_generated/ams.io.xlsx.rst +30 -0
- docs/source/_generated/ams.io.xlsx.write.rst +6 -0
- docs/source/_generated/ams.main.config_logger.rst +6 -0
- docs/source/_generated/ams.main.demo.rst +6 -0
- docs/source/_generated/ams.main.doc.rst +6 -0
- docs/source/_generated/ams.main.edit_conf.rst +6 -0
- docs/source/_generated/ams.main.find_log_path.rst +6 -0
- docs/source/_generated/ams.main.load.rst +6 -0
- docs/source/_generated/ams.main.misc.rst +6 -0
- docs/source/_generated/ams.main.print_license.rst +6 -0
- docs/source/_generated/ams.main.remove_output.rst +6 -0
- docs/source/_generated/ams.main.rst +44 -0
- docs/source/_generated/ams.main.run.rst +6 -0
- docs/source/_generated/ams.main.run_case.rst +6 -0
- docs/source/_generated/ams.main.save_conf.rst +6 -0
- docs/source/_generated/ams.main.selftest.rst +6 -0
- docs/source/_generated/ams.main.set_logger_level.rst +6 -0
- docs/source/_generated/ams.main.versioninfo.rst +6 -0
- docs/source/_generated/ams.opt.constraint.Constraint.rst +43 -0
- docs/source/_generated/ams.opt.constraint.rst +30 -0
- docs/source/_generated/ams.opt.exprcalc.ExpressionCalc.rst +46 -0
- docs/source/_generated/ams.opt.exprcalc.rst +30 -0
- docs/source/_generated/ams.opt.expression.Expression.rst +46 -0
- docs/source/_generated/ams.opt.expression.rst +30 -0
- docs/source/_generated/ams.opt.objective.Objective.rst +43 -0
- docs/source/_generated/ams.opt.objective.rst +30 -0
- docs/source/_generated/ams.opt.omodel.OModel.rst +48 -0
- docs/source/_generated/ams.opt.omodel.OModelBase.rst +48 -0
- docs/source/_generated/ams.opt.omodel.rst +31 -0
- docs/source/_generated/ams.opt.optbase.OptzBase.rst +41 -0
- docs/source/_generated/ams.opt.optbase.ensure_mats_and_parsed.rst +6 -0
- docs/source/_generated/ams.opt.optbase.ensure_symbols.rst +6 -0
- docs/source/_generated/ams.opt.optbase.rst +38 -0
- docs/source/_generated/ams.opt.param.Param.rst +44 -0
- docs/source/_generated/ams.opt.param.rst +30 -0
- docs/source/_generated/ams.opt.rst +40 -0
- docs/source/_generated/ams.opt.var.Var.rst +45 -0
- docs/source/_generated/ams.opt.var.rst +30 -0
- docs/source/_generated/ams.routines.dcopf.DCOPF.rst +83 -0
- docs/source/_generated/ams.routines.dcopf.rst +30 -0
- docs/source/_generated/ams.routines.pflow.PFlow.rst +83 -0
- docs/source/_generated/ams.routines.pflow.rst +30 -0
- docs/source/_generated/ams.routines.routine.RoutineBase.rst +83 -0
- docs/source/_generated/ams.routines.routine.collect_data.rst +6 -0
- docs/source/_generated/ams.routines.routine.initialize_data_dict.rst +6 -0
- docs/source/_generated/ams.routines.routine.rst +38 -0
- docs/source/_generated/ams.system.System.rst +189 -0
- docs/source/_generated/ams.system.disable_method.rst +6 -0
- docs/source/_generated/ams.system.disable_methods.rst +6 -0
- docs/source/_generated/ams.system.example.rst +6 -0
- docs/source/_generated/ams.system.rst +39 -0
- docs/source/_generated/ams.utils.paths.DisplayablePath.rst +42 -0
- docs/source/_generated/ams.utils.paths.ams_root.rst +6 -0
- docs/source/_generated/ams.utils.paths.cases_root.rst +6 -0
- docs/source/_generated/ams.utils.paths.confirm_overwrite.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_case.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_config_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_dot_andes_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_log_dir.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_pkl_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.get_pycode_path.rst +6 -0
- docs/source/_generated/ams.utils.paths.list_cases.rst +6 -0
- docs/source/_generated/ams.utils.paths.rst +47 -0
- docs/source/_generated/ams.utils.paths.tests_root.rst +6 -0
- docs/source/_templates/autosummary/base.rst +5 -0
- docs/source/_templates/autosummary/class.rst +35 -0
- docs/source/_templates/autosummary/module.rst +65 -0
- docs/source/_templates/autosummary/module_toctree.rst +66 -0
- docs/source/api.rst +102 -0
- docs/source/conf.py +203 -0
- docs/source/examples/index.rst +34 -0
- docs/source/genmodelref.py +61 -0
- docs/source/genroutineref.py +47 -0
- docs/source/getting_started/copyright.rst +20 -0
- docs/source/getting_started/formats/index.rst +20 -0
- docs/source/getting_started/formats/matpower.rst +183 -0
- docs/source/getting_started/formats/psse.rst +46 -0
- docs/source/getting_started/formats/pypower.rst +223 -0
- docs/source/getting_started/formats/xlsx.png +0 -0
- docs/source/getting_started/formats/xlsx.rst +23 -0
- docs/source/getting_started/index.rst +76 -0
- docs/source/getting_started/install.rst +234 -0
- docs/source/getting_started/overview.rst +26 -0
- docs/source/getting_started/testcase.rst +45 -0
- docs/source/getting_started/verification.rst +13 -0
- docs/source/groupdoc/ACLine.rst +92 -0
- docs/source/groupdoc/ACShort.rst +51 -0
- docs/source/groupdoc/ACTopology.rst +66 -0
- docs/source/groupdoc/Collection.rst +84 -0
- docs/source/groupdoc/Cost.rst +135 -0
- docs/source/groupdoc/DG.rst +204 -0
- docs/source/groupdoc/Horizon.rst +97 -0
- docs/source/groupdoc/Information.rst +36 -0
- docs/source/groupdoc/RenGen.rst +63 -0
- docs/source/groupdoc/Reserve.rst +135 -0
- docs/source/groupdoc/StaticGen.rst +229 -0
- docs/source/groupdoc/StaticLoad.rst +53 -0
- docs/source/groupdoc/StaticShunt.rst +45 -0
- docs/source/groupdoc/Undefined.rst +63 -0
- docs/source/groupdoc/VSG.rst +125 -0
- docs/source/images/dcopf_time.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_NameOnTrans.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_Transparent.png +0 -0
- docs/source/images/sponsors/CURENT_Logo_Transparent_Name.png +0 -0
- docs/source/images/sponsors/doe.png +0 -0
- docs/source/index.rst +108 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.e.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.n.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.shape.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.size.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Constraint.v.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.finalize.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.init.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.initialized.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.OModel.update.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.e.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.n.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.shape.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.size.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Objective.v.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.class_name.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.evaluate.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.get_idx.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.n.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.parse.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.shape.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.size.rst +6 -0
- docs/source/modeling/_generated/_generated/ams.opt.Var.v.rst +6 -0
- docs/source/modeling/_generated/ams.opt.Constraint.rst +43 -0
- docs/source/modeling/_generated/ams.opt.OModel.rst +48 -0
- docs/source/modeling/_generated/ams.opt.Objective.rst +43 -0
- docs/source/modeling/_generated/ams.opt.Var.rst +45 -0
- docs/source/modeling/example.rst +159 -0
- docs/source/modeling/index.rst +17 -0
- docs/source/modeling/model.rst +210 -0
- docs/source/modeling/routine.rst +122 -0
- docs/source/modeling/system.rst +51 -0
- docs/source/modelref.rst +66 -0
- docs/source/release-notes.rst +385 -0
- docs/source/routineref.rst +38 -0
- docs/source/typedoc/ACED.rst +91 -0
- docs/source/typedoc/DCED.rst +1869 -0
- docs/source/typedoc/DCUC.rst +899 -0
- docs/source/typedoc/DED.rst +390 -0
- docs/source/typedoc/PF.rst +376 -0
- docs/source/typedoc/UndefinedType.rst +8 -0
- icebar/ips/ips.py +668 -0
- ltbams-1.0.0.dist-info/METADATA +231 -0
- ltbams-1.0.0.dist-info/RECORD +725 -0
- {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/WHEEL +1 -1
- ltbams-1.0.0.dist-info/top_level.txt +5 -0
- tests/__init__.py +0 -0
- tests/test_1st_system.py +33 -0
- tests/test_addressing.py +40 -0
- tests/test_andes_mats.py +61 -0
- tests/test_case.py +266 -0
- tests/test_cli.py +34 -0
- tests/test_export_csv.py +89 -0
- tests/test_group.py +83 -0
- tests/test_interface.py +216 -0
- tests/test_io.py +32 -0
- tests/test_jumper.py +27 -0
- tests/test_known_good.py +267 -0
- tests/test_matp.py +437 -0
- tests/test_model.py +54 -0
- tests/test_omodel.py +119 -0
- tests/test_paths.py +22 -0
- tests/test_report.py +245 -0
- tests/test_repr.py +21 -0
- tests/test_routine.py +178 -0
- tests/test_rtn_dcopf.py +101 -0
- tests/test_rtn_dcpf.py +77 -0
- tests/test_rtn_ed.py +275 -0
- tests/test_rtn_pflow.py +219 -0
- tests/test_rtn_rted.py +273 -0
- tests/test_rtn_uc.py +248 -0
- tests/test_service.py +73 -0
- ltbams-0.9.9.dist-info/LICENSE +0 -692
- ltbams-0.9.9.dist-info/METADATA +0 -859
- ltbams-0.9.9.dist-info/RECORD +0 -14
- ltbams-0.9.9.dist-info/top_level.txt +0 -1
- {ltbams-0.9.9.dist-info → ltbams-1.0.0.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
ams.opt.OModel
|
2
|
+
==============
|
3
|
+
|
4
|
+
.. currentmodule:: ams.opt
|
5
|
+
|
6
|
+
.. autoclass:: OModel
|
7
|
+
|
8
|
+
|
9
|
+
.. automethod:: __init__
|
10
|
+
|
11
|
+
|
12
|
+
.. rubric:: Methods
|
13
|
+
|
14
|
+
.. autosummary::
|
15
|
+
:toctree: _generated/
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
~OModel.evaluate
|
21
|
+
|
22
|
+
|
23
|
+
~OModel.finalize
|
24
|
+
|
25
|
+
|
26
|
+
~OModel.init
|
27
|
+
|
28
|
+
|
29
|
+
~OModel.parse
|
30
|
+
|
31
|
+
|
32
|
+
~OModel.update
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
.. rubric:: Attributes
|
40
|
+
|
41
|
+
.. autosummary::
|
42
|
+
:toctree: _generated/
|
43
|
+
|
44
|
+
|
45
|
+
~OModel.class_name
|
46
|
+
~OModel.initialized
|
47
|
+
|
48
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
ams.opt.Objective
|
2
|
+
=================
|
3
|
+
|
4
|
+
.. currentmodule:: ams.opt
|
5
|
+
|
6
|
+
.. autoclass:: Objective
|
7
|
+
|
8
|
+
|
9
|
+
.. automethod:: __init__
|
10
|
+
|
11
|
+
|
12
|
+
.. rubric:: Methods
|
13
|
+
|
14
|
+
.. autosummary::
|
15
|
+
:toctree: _generated/
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
~Objective.evaluate
|
21
|
+
|
22
|
+
|
23
|
+
~Objective.parse
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
.. rubric:: Attributes
|
31
|
+
|
32
|
+
.. autosummary::
|
33
|
+
:toctree: _generated/
|
34
|
+
|
35
|
+
|
36
|
+
~Objective.class_name
|
37
|
+
~Objective.e
|
38
|
+
~Objective.n
|
39
|
+
~Objective.shape
|
40
|
+
~Objective.size
|
41
|
+
~Objective.v
|
42
|
+
|
43
|
+
|
@@ -0,0 +1,45 @@
|
|
1
|
+
ams.opt.Var
|
2
|
+
===========
|
3
|
+
|
4
|
+
.. currentmodule:: ams.opt
|
5
|
+
|
6
|
+
.. autoclass:: Var
|
7
|
+
|
8
|
+
|
9
|
+
.. automethod:: __init__
|
10
|
+
|
11
|
+
|
12
|
+
.. rubric:: Methods
|
13
|
+
|
14
|
+
.. autosummary::
|
15
|
+
:toctree: _generated/
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
~Var.evaluate
|
21
|
+
|
22
|
+
|
23
|
+
~Var.get_idx
|
24
|
+
|
25
|
+
|
26
|
+
~Var.parse
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
.. rubric:: Attributes
|
34
|
+
|
35
|
+
.. autosummary::
|
36
|
+
:toctree: _generated/
|
37
|
+
|
38
|
+
|
39
|
+
~Var.class_name
|
40
|
+
~Var.n
|
41
|
+
~Var.shape
|
42
|
+
~Var.size
|
43
|
+
~Var.v
|
44
|
+
|
45
|
+
|
@@ -0,0 +1,159 @@
|
|
1
|
+
Examples
|
2
|
+
========
|
3
|
+
|
4
|
+
One example is provided to demonstrate descriptive scheduling modeling.
|
5
|
+
|
6
|
+
DCOPF
|
7
|
+
----------
|
8
|
+
|
9
|
+
|
10
|
+
DC optimal power flow (DCOPF) is a fundamental routine used in power system analysis.
|
11
|
+
In this example, we demonstrate how to implement a DCOPF routine in a descriptive
|
12
|
+
manner using AMS. Below is a simplified DCOPF code snippet.
|
13
|
+
The full code can be found in :py:mod:`ams.routines.dcopf.DCOPF`.
|
14
|
+
|
15
|
+
Data Section
|
16
|
+
^^^^^^^^^^^^
|
17
|
+
|
18
|
+
.. code-block:: python
|
19
|
+
:linenos:
|
20
|
+
|
21
|
+
class DCOPF(RoutineBase):
|
22
|
+
|
23
|
+
def __init__(self, system, config):
|
24
|
+
RoutineBase.__init__(self, system, config)
|
25
|
+
self.info = 'DC Optimal Power Flow'
|
26
|
+
self.type = 'DCED'
|
27
|
+
# --- Data Section ---
|
28
|
+
# --- generator cost ---
|
29
|
+
self.c1 = RParam(info='Gen cost coefficient 1',
|
30
|
+
name='c1', tex_name=r'c_{1}', unit=r'$/(p.u.)',
|
31
|
+
model='GCost', src='c1',
|
32
|
+
indexer='gen', imodel='StaticGen',)
|
33
|
+
# --- generator ---
|
34
|
+
self.ug = RParam(info='Gen connection status',
|
35
|
+
name='ug', tex_name=r'u_{g}',
|
36
|
+
model='StaticGen', src='u',
|
37
|
+
no_parse=True)
|
38
|
+
self.ctrl = RParam(info='Gen controllability',
|
39
|
+
name='ctrl', tex_name=r'c_{trl}',
|
40
|
+
model='StaticGen', src='ctrl',
|
41
|
+
no_parse=True)
|
42
|
+
self.ctrle = NumOpDual(info='Effective Gen controllability',
|
43
|
+
name='ctrle', tex_name=r'c_{trl, e}',
|
44
|
+
u=self.ctrl, u2=self.ug,
|
45
|
+
fun=np.multiply, no_parse=True)
|
46
|
+
# --- load ---
|
47
|
+
self.pd = RParam(info='active demand',
|
48
|
+
name='pd', tex_name=r'p_{d}',
|
49
|
+
model='StaticLoad', src='p0',
|
50
|
+
unit='p.u.',)
|
51
|
+
# --- line ---
|
52
|
+
self.rate_a = RParam(info='long-term flow limit',
|
53
|
+
name='rate_a', tex_name=r'R_{ATEA}',
|
54
|
+
unit='MVA', model='Line',)
|
55
|
+
# --- line angle difference ---
|
56
|
+
self.amax = NumOp(u=self.rate_a, fun=np.ones_like,
|
57
|
+
rfun=np.dot, rargs=dict(b=np.pi),
|
58
|
+
name='amax', tex_name=r'\theta_{max}',
|
59
|
+
info='max line angle difference',
|
60
|
+
no_parse=True,)
|
61
|
+
# --- connection matrix ---
|
62
|
+
self.Cg = RParam(info='Gen connection matrix',
|
63
|
+
name='Cg', tex_name=r'C_{g}',
|
64
|
+
model='mats', src='Cg',
|
65
|
+
no_parse=True, sparse=True,)
|
66
|
+
# --- system matrix ---
|
67
|
+
self.Bbus = RParam(info='Bus admittance matrix',
|
68
|
+
name='Bbus', tex_name=r'B_{bus}',
|
69
|
+
model='mats', src='Bbus',
|
70
|
+
no_parse=True, sparse=True,)
|
71
|
+
|
72
|
+
Lines 1-4: Derive subclass ``DCOPF`` from ``RoutineBase``.
|
73
|
+
|
74
|
+
Lines 5-6: Define routine information and type.
|
75
|
+
|
76
|
+
Lines 9-12: Define linear generator cost coefficients ``c1``, where it
|
77
|
+
sources from ``GCost.c1`` and sorted by ``StaticGen.gen``.
|
78
|
+
|
79
|
+
Lines 22-24: Define effective controllability as service ``ctrle``,
|
80
|
+
where it multiplies ``ctrl`` and ``ug``.
|
81
|
+
|
82
|
+
Lines 42-45: Define generator connection matrix ``Cg``, where it sources from
|
83
|
+
matrix processor ``mats.Cg`` and is sparse.
|
84
|
+
|
85
|
+
Model Section
|
86
|
+
^^^^^^^^^^^^^
|
87
|
+
|
88
|
+
.. code-block:: python
|
89
|
+
:linenos:
|
90
|
+
:lineno-start: 51
|
91
|
+
|
92
|
+
# --- Model Section ---
|
93
|
+
# --- generation ---
|
94
|
+
self.pg = Var(info='Gen active power',
|
95
|
+
unit='p.u.',
|
96
|
+
name='pg', tex_name=r'p_g',
|
97
|
+
model='StaticGen', src='p',
|
98
|
+
v0=self.pg0)
|
99
|
+
# --- bus ---
|
100
|
+
self.aBus = Var(info='Bus voltage angle',
|
101
|
+
unit='rad',
|
102
|
+
name='aBus', tex_name=r'\theta_{bus}',
|
103
|
+
model='Bus', src='a',)
|
104
|
+
# --- power balance ---
|
105
|
+
pb = 'Bbus@aBus + Pbusinj + Cl@pd + Csh@gsh - Cg@pg'
|
106
|
+
self.pb = Constraint(name='pb', info='power balance',
|
107
|
+
e_str=pb, is_eq=True,)
|
108
|
+
# --- line flow ---
|
109
|
+
self.plf = Var(info='Line flow',
|
110
|
+
unit='p.u.',
|
111
|
+
name='plf', tex_name=r'p_{lf}',
|
112
|
+
model='Line',)
|
113
|
+
self.plflb = Constraint(info='line flow lower bound',
|
114
|
+
name='plflb', type='uq',
|
115
|
+
e_str='-Bf@aBus - Pfinj - rate_a',)
|
116
|
+
self.plfub = Constraint(info='line flow upper bound',
|
117
|
+
name='plfub', type='uq',
|
118
|
+
e_str='Bf@aBus + Pfinj - rate_a',)
|
119
|
+
# --- objective ---
|
120
|
+
obj = 'sum(mul(c2, power(pg, 2)))'
|
121
|
+
obj += '+ sum(mul(c1, pg))'
|
122
|
+
obj += '+ sum(mul(ug, c0))'
|
123
|
+
self.obj = Objective(name='obj',
|
124
|
+
info='total cost', unit='$',
|
125
|
+
sense='min', e_str=obj,)
|
126
|
+
|
127
|
+
Continued from the above code.
|
128
|
+
|
129
|
+
Lines 53-57: Define variable ``pg``, where it links to ``StaticGen.p``
|
130
|
+
and initial value ``pg0``.
|
131
|
+
|
132
|
+
Lines 68-71: Define variable ``plf``, where it links to ``Line`` with
|
133
|
+
no target source variable nor initial value.
|
134
|
+
|
135
|
+
Lines 72-77: Define inequality constraints ``plflb`` and ``plfub``
|
136
|
+
for line flow limits.
|
137
|
+
|
138
|
+
Lines 79-84: Define objective function ``obj`` for minimizing total cost.
|
139
|
+
|
140
|
+
Finalize
|
141
|
+
^^^^^^^^
|
142
|
+
|
143
|
+
Lastly, similar to finalize a device model, we need to finalize the routine
|
144
|
+
by adding the ``RTED`` to the routine list in ``$HOME/ams/ams/routines/__init__.py``,
|
145
|
+
where 'rted' is the file name, and 'RTED' is the routine name.
|
146
|
+
|
147
|
+
.. code-block:: python
|
148
|
+
|
149
|
+
all_routines = OrderedDict([
|
150
|
+
... ...
|
151
|
+
('dcopf', ['DCOPF']),
|
152
|
+
('ed', ['ED', 'EDDG', 'EDES']),
|
153
|
+
('rted', ['RTED', 'RTEDDG', 'RTEDES', 'RTEDVIS']),
|
154
|
+
... ...
|
155
|
+
])
|
156
|
+
|
157
|
+
.. note::
|
158
|
+
Refer to the documentation "Example - Customize Formulation"
|
159
|
+
for API customization that does not require modification of the source code.
|
@@ -0,0 +1,17 @@
|
|
1
|
+
.. _development:
|
2
|
+
|
3
|
+
===========
|
4
|
+
Development
|
5
|
+
===========
|
6
|
+
|
7
|
+
This chapter introduces advanced topics on modeling with AMS.
|
8
|
+
It aims to give an in-depth explanation of flexible dispatch mdoeling
|
9
|
+
framework and the interoperation with dynamic simulation.
|
10
|
+
|
11
|
+
.. toctree::
|
12
|
+
:maxdepth: 2
|
13
|
+
|
14
|
+
system
|
15
|
+
model
|
16
|
+
routine
|
17
|
+
example
|
@@ -0,0 +1,210 @@
|
|
1
|
+
Device
|
2
|
+
=========
|
3
|
+
|
4
|
+
This section introduces the modeling of power system devices. Here the term
|
5
|
+
"model" refers to the descriptive model of a device, which is used to
|
6
|
+
hold the device-level data and variables, such as ``Bus``, ``Line``, and ``PQ``.
|
7
|
+
|
8
|
+
AMS employs a similar model organization manner as ANDES, where the class
|
9
|
+
``model`` is used to hold the device-level parameters and variables.
|
10
|
+
|
11
|
+
.. note::
|
12
|
+
|
13
|
+
One major difference here is, in ANDES, two classes, ``ModelData`` and
|
14
|
+
``Model``, are used to hold the device-level parameters and equations.
|
15
|
+
|
16
|
+
Parameters
|
17
|
+
------------
|
18
|
+
Parameter is an atom element in building a power system model. Most parameters
|
19
|
+
are read from an input file, and other parameters are calculated from the existing
|
20
|
+
parameters.
|
21
|
+
|
22
|
+
AMS leverages the parameter definition in ANDES, where four classes,
|
23
|
+
``DataParam``, ``IdxParam``, ``NumParam``, and ``ExtParam`` are used.
|
24
|
+
More details can be found in ANDES documentation
|
25
|
+
`Development - Parameters <https://docs.andes.app/en/latest/modeling/parameters.html>`_.
|
26
|
+
|
27
|
+
Variables
|
28
|
+
-----------
|
29
|
+
|
30
|
+
In AMS, the definition of variables ``Algeb`` is simplified from ANDES. The
|
31
|
+
``Algeb`` class is used to define algebraic variables in the model level, which are used to
|
32
|
+
exchange data with dynamic simulator.
|
33
|
+
|
34
|
+
.. autoclass:: ams.core.var.Algeb
|
35
|
+
:noindex:
|
36
|
+
|
37
|
+
Algeb
|
38
|
+
|
39
|
+
.. note::
|
40
|
+
|
41
|
+
The ``Algeb`` class here is not directly used for optimization purpose, we will discuss
|
42
|
+
its role further in the Routine section.
|
43
|
+
|
44
|
+
Model
|
45
|
+
--------------
|
46
|
+
|
47
|
+
Encapsulating the parameters and variables, the ``Model`` class is used to define the
|
48
|
+
device model.
|
49
|
+
|
50
|
+
.. autoclass:: ams.core.model.Model
|
51
|
+
:noindex:
|
52
|
+
|
53
|
+
Model
|
54
|
+
|
55
|
+
Examples
|
56
|
+
------------
|
57
|
+
|
58
|
+
The following two examples demonstrate how to define a device model in AMS.
|
59
|
+
|
60
|
+
|
61
|
+
PV model
|
62
|
+
^^^^^^^^^^^^^^
|
63
|
+
|
64
|
+
In this example, we define a PV generator model ``PV`` in three steps, data
|
65
|
+
definition, model definition, and manufacturing.
|
66
|
+
|
67
|
+
First, we need to define the parameters needed in a ``PV``.
|
68
|
+
not included in ANDES ``PVData``. In this example, we hold the parameters in
|
69
|
+
a separate class ``GenParam``.
|
70
|
+
|
71
|
+
.. code-block:: python
|
72
|
+
|
73
|
+
from andes.core.param import NumParam, ExtParam
|
74
|
+
|
75
|
+
class GenParam:
|
76
|
+
def __init__(self) -> None:
|
77
|
+
self.ctrl = NumParam(default=1,
|
78
|
+
info="generator controllability",
|
79
|
+
tex_name=r'c_{trl}',)
|
80
|
+
self.Pc1 = NumParam(default=0.0,
|
81
|
+
info="lower real power output of PQ capability curve",
|
82
|
+
tex_name=r'P_{c1}',
|
83
|
+
unit='p.u.')
|
84
|
+
self.Pc2 = NumParam(default=0.0,
|
85
|
+
info="upper real power output of PQ capability curve",
|
86
|
+
tex_name=r'P_{c2}',
|
87
|
+
unit='p.u.')
|
88
|
+
|
89
|
+
......
|
90
|
+
|
91
|
+
self.pg0 = NumParam(default=0.0,
|
92
|
+
info='real power start point',
|
93
|
+
tex_name=r'p_{g0}',
|
94
|
+
unit='p.u.',
|
95
|
+
)
|
96
|
+
|
97
|
+
Second, we define the ``PVModel`` model with two algebraic variables and an external parameter.
|
98
|
+
|
99
|
+
.. code-block:: python
|
100
|
+
|
101
|
+
from ams.core.model import Model
|
102
|
+
from ams.core.var import Algeb
|
103
|
+
|
104
|
+
class PVModel(Model):
|
105
|
+
|
106
|
+
def __init__(self, system=None, config=None):
|
107
|
+
super().__init__(system, config)
|
108
|
+
self.group = 'StaticGen'
|
109
|
+
|
110
|
+
self.zone = ExtParam(model='Bus', src='zone', indexer=self.bus, export=False,
|
111
|
+
info='Retrieved zone idx', vtype=str, default=None,
|
112
|
+
)
|
113
|
+
self.p = Algeb(info='actual active power generation',
|
114
|
+
unit='p.u.',
|
115
|
+
tex_name='p',
|
116
|
+
name='p',
|
117
|
+
)
|
118
|
+
self.q = Algeb(info='actual reactive power generation',
|
119
|
+
unit='p.u.',
|
120
|
+
tex_name='q',
|
121
|
+
name='q',
|
122
|
+
)
|
123
|
+
|
124
|
+
.. note::
|
125
|
+
|
126
|
+
The external parameter ``zone`` is added here to enable the zonal reserve dispatch,
|
127
|
+
but it is not included in ANDES ``PV``.
|
128
|
+
|
129
|
+
Third, we manufacture these classes together as the ``PV`` model.
|
130
|
+
|
131
|
+
.. code-block:: python
|
132
|
+
|
133
|
+
from andes.models.static.pv import PVData # NOQA
|
134
|
+
|
135
|
+
class PV(PVData, GenParam, PVModel):
|
136
|
+
"""
|
137
|
+
PV generator model.
|
138
|
+
"""
|
139
|
+
|
140
|
+
def __init__(self, system, config):
|
141
|
+
PVData.__init__(self)
|
142
|
+
GenParam.__init__(self)
|
143
|
+
PVModel.__init__(self, system, config)
|
144
|
+
|
145
|
+
Lastly, we need to finalize the model by adding the ``PV`` model to the model list in
|
146
|
+
``$HOME/ams/ams/models/__init__.py``, where 'static' is the file name, and 'PV' is the
|
147
|
+
model name.
|
148
|
+
|
149
|
+
.. code-block:: python
|
150
|
+
|
151
|
+
ams_file_classes = list([
|
152
|
+
('info', ['Summary']),
|
153
|
+
('bus', ['Bus']),
|
154
|
+
('static', ['PQ', 'PV', 'Slack']),
|
155
|
+
... ...
|
156
|
+
])
|
157
|
+
|
158
|
+
.. note::
|
159
|
+
|
160
|
+
The device-level model development procedures is similar to ANDES.
|
161
|
+
The only difference is that a device-level model for dispatch is much simpler
|
162
|
+
than that for dynamic simulation.
|
163
|
+
In AMS, we only defines the data and small amount of variables.
|
164
|
+
In contrast, ANDES defines the data, variables, and equations for dynamic simulation.
|
165
|
+
Mode details for device-level model development can be found in ANDES documentation
|
166
|
+
`Development - Examples <https://docs.andes.app/en/latest/modeling/examples.html>`_.
|
167
|
+
|
168
|
+
Line model
|
169
|
+
^^^^^^^^^^^^^^
|
170
|
+
|
171
|
+
In this example, we define a ``Line`` model, where the data is extended from existing
|
172
|
+
ANDES ``LineData`` by including two extra parameters ``amin`` and ``amax``.
|
173
|
+
|
174
|
+
.. code-block:: python
|
175
|
+
|
176
|
+
from andes.models.line.line import LineData
|
177
|
+
from andes.core.param import NumParam
|
178
|
+
from andes.shared import deg2rad
|
179
|
+
|
180
|
+
from ams.core.model import Model
|
181
|
+
|
182
|
+
|
183
|
+
class Line(LineData, Model):
|
184
|
+
"""
|
185
|
+
AC transmission line model.
|
186
|
+
|
187
|
+
The model is also used for two-winding transformer. Transformers can set the
|
188
|
+
tap ratio in ``tap`` and/or phase shift angle ``phi``.
|
189
|
+
|
190
|
+
Notes
|
191
|
+
-----
|
192
|
+
There is a known issue that adding Algeb ``ud`` will cause Line.algebs run into
|
193
|
+
AttributeError: 'NoneType' object has no attribute 'n'. Not figured out why yet.
|
194
|
+
"""
|
195
|
+
|
196
|
+
def __init__(self, system=None, config=None) -> None:
|
197
|
+
LineData.__init__(self)
|
198
|
+
Model.__init__(self, system, config)
|
199
|
+
self.group = 'ACLine'
|
200
|
+
|
201
|
+
self.amin = NumParam(default=-360 * deg2rad,
|
202
|
+
info="minimum angle difference, from bus - to bus",
|
203
|
+
unit='rad',
|
204
|
+
tex_name=r'a_{min}',
|
205
|
+
)
|
206
|
+
self.amax = NumParam(default=360 * deg2rad,
|
207
|
+
info="maximum angle difference, from bus - to bus",
|
208
|
+
unit='rad',
|
209
|
+
tex_name=r'a_{max}',
|
210
|
+
)
|
@@ -0,0 +1,122 @@
|
|
1
|
+
Routine
|
2
|
+
===========
|
3
|
+
|
4
|
+
Routine refers to scheduling-level model, and it includes two sectinos, namely,
|
5
|
+
Data Section and Model Section.
|
6
|
+
|
7
|
+
Data Section
|
8
|
+
------------------
|
9
|
+
|
10
|
+
A simplified code snippet for RTED is shown below as an example.
|
11
|
+
|
12
|
+
.. code-block:: python
|
13
|
+
|
14
|
+
class RTED:
|
15
|
+
|
16
|
+
def __init__(self):
|
17
|
+
... ...
|
18
|
+
self.R10 = RParam(info='10-min ramp rate',
|
19
|
+
name='R10', tex_name=r'R_{10}',
|
20
|
+
model='StaticGen', src='R10',
|
21
|
+
unit='p.u./h',)
|
22
|
+
self.gs = ZonalSum(u=self.zg, zone='Zone',
|
23
|
+
name='gs', tex_name=r'S_{g}',
|
24
|
+
info='Sum Gen vars vector in shape of zone',
|
25
|
+
no_parse=True, sparse=True)
|
26
|
+
... ...
|
27
|
+
self.rbu = Constraint(name='rbu', is_eq=True,
|
28
|
+
info='RegUp reserve balance',
|
29
|
+
e_str = 'gs @ mul(ug, pru) - dud')
|
30
|
+
... ...
|
31
|
+
|
32
|
+
Routine Parameter
|
33
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
34
|
+
|
35
|
+
As discussed in previous section, actual data parameters are stored in the device-level models.
|
36
|
+
Thus, in routines, parameters are retrieved from target devices given the device
|
37
|
+
name and the parameter name.
|
38
|
+
In the example above, ``R10`` is a 10-min ramp rate parameter for the static generator.
|
39
|
+
The parameter is retrieved from the devices ``StaticGen`` with the parameter name ``R10``.
|
40
|
+
|
41
|
+
Service
|
42
|
+
^^^^^^^^^^^^
|
43
|
+
|
44
|
+
Services are developed to assit the formulations.
|
45
|
+
In the example above, ``ZonalSum`` is a service to sum the generator variables in a zone.
|
46
|
+
Later, in the constraint, ``gs`` is multiplied to the reserve variable ``pru``.
|
47
|
+
|
48
|
+
Model Section
|
49
|
+
-----------------
|
50
|
+
|
51
|
+
Descriptive Formulation
|
52
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
53
|
+
Scheduling routine is the descriptive model of the optimization problem.
|
54
|
+
|
55
|
+
Further, to facilitate the routine definition, AMS developed a class
|
56
|
+
:py:mod:`ams.core.param.RParam` to pass the model data to multiple routine modeling.
|
57
|
+
|
58
|
+
.. autoclass:: ams.core.param.RParam
|
59
|
+
:noindex:
|
60
|
+
|
61
|
+
Numerical Optimization
|
62
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
63
|
+
|
64
|
+
Optimization model is the optimization problem. ``Var``, ``Constraint``, and
|
65
|
+
``Objective`` are the basic building blocks of the optimization model. ``OModel``
|
66
|
+
is the container of the optimization model.
|
67
|
+
A summary table is shown below.
|
68
|
+
|
69
|
+
.. currentmodule:: ams.opt
|
70
|
+
.. autosummary::
|
71
|
+
:recursive:
|
72
|
+
:toctree: _generated
|
73
|
+
|
74
|
+
Var
|
75
|
+
Constraint
|
76
|
+
Objective
|
77
|
+
OModel
|
78
|
+
|
79
|
+
Interoperation with ANDES
|
80
|
+
-----------------------------------
|
81
|
+
|
82
|
+
The interoperation with dynamic simulator invovles both file conversion and data exchange.
|
83
|
+
In AMS, the built-in interface with ANDES is implemented in :py:mod:`ams.interface`.
|
84
|
+
|
85
|
+
|
86
|
+
File Format Converter
|
87
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
88
|
+
|
89
|
+
Power flow data is the bridge between scheduling study and dynamics study,
|
90
|
+
where it defines grid topology and power flow.
|
91
|
+
An AMS case can be converted to an ANDES case, with the option to supply additional dynamic
|
92
|
+
data.
|
93
|
+
|
94
|
+
.. autofunction:: ams.interface.to_andes
|
95
|
+
:noindex:
|
96
|
+
|
97
|
+
|
98
|
+
Data Exchange in Simulation
|
99
|
+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
100
|
+
|
101
|
+
To achieve scheduling-dynamics cosimulation, it requires bi-directional data exchange between
|
102
|
+
scheduling and dynamics study.
|
103
|
+
From the perspective of AMS, two functions, ``send`` and ``receive``, are developed.
|
104
|
+
The maping relationship for a specific routine is defined in the routine class as ``map1`` and
|
105
|
+
``map2``.
|
106
|
+
Additionally, a link table for the ANDES case is used for the controller connections.
|
107
|
+
|
108
|
+
Module :py:mod:`ams.interface.Dynamic`, contains the necessary functions and classes for
|
109
|
+
file conversion and data exchange.
|
110
|
+
|
111
|
+
.. autoclass:: ams.interface.Dynamic
|
112
|
+
:noindex:
|
113
|
+
:members: send, receive
|
114
|
+
|
115
|
+
When you use this interface, it automatically picks either the dynamic or static model based on the TDS initialization status.
|
116
|
+
If the TDS is running, it selects the dynamic model; otherwise, it goes for the static model.
|
117
|
+
For more details, check out the full API reference or take a look at the source code.
|
118
|
+
|
119
|
+
.. note::
|
120
|
+
Check ANDES documentation
|
121
|
+
`StaticGen <https://docs.andes.app/en/latest/groupdoc/StaticGen.html#staticgen>`_
|
122
|
+
for more details about substituting static generators with dynamic generators.
|
@@ -0,0 +1,51 @@
|
|
1
|
+
System
|
2
|
+
======
|
3
|
+
|
4
|
+
|
5
|
+
Overview
|
6
|
+
--------
|
7
|
+
System is the top-level class for organizing power system dispatch models
|
8
|
+
and routines. The full API reference of System is found at
|
9
|
+
:py:mod:`ams.system.System`.
|
10
|
+
|
11
|
+
Dynamic Imports
|
12
|
+
```````````````
|
13
|
+
System dynamically imports groups, models, and routines at creation. To add new
|
14
|
+
models, groups or routines, edit the corresponding file by adding entries
|
15
|
+
following examples.
|
16
|
+
|
17
|
+
.. autofunction:: ams.system.System.import_models
|
18
|
+
:noindex:
|
19
|
+
|
20
|
+
.. autofunction:: ams.system.System.import_groups
|
21
|
+
:noindex:
|
22
|
+
|
23
|
+
.. autofunction:: ams.system.System.import_routines
|
24
|
+
:noindex:
|
25
|
+
|
26
|
+
.. autofunction:: ams.system.System.import_types
|
27
|
+
:noindex:
|
28
|
+
|
29
|
+
|
30
|
+
Device-level Models
|
31
|
+
------------------------
|
32
|
+
AMS follows a similar device-level model organization of ANDES with a few differences.
|
33
|
+
|
34
|
+
|
35
|
+
Routine-level Models
|
36
|
+
------------------------
|
37
|
+
In AMS, routines are responsible for collecting data, defining optimization
|
38
|
+
problems, and solving them.
|
39
|
+
|
40
|
+
|
41
|
+
Optimization
|
42
|
+
--------------------------------------------
|
43
|
+
|
44
|
+
Within the ``Routine``, the descriptive formulation are translated into
|
45
|
+
`CVXPY <https://www.cvxpy.org/>`_ optimization problem with
|
46
|
+
``Vars``, ``Constraints``, and ``Objective``.
|
47
|
+
The full API reference of them can be found in :py:mod:`ams.opt.Var`,
|
48
|
+
:py:mod:`ams.opt.Constraint`, and :py:mod:`ams.opt.Objective`.
|
49
|
+
|
50
|
+
.. autoclass:: ams.opt.omodel.OModel
|
51
|
+
:noindex:
|