Giter VIP home page Giter VIP logo

libage's Introduction

libage

Age-Series Simulation Library

A Kotlin-based set of simulator functions. Depends on apache math libraries

Contents

This repository roughly contains:

  • MNA-based Electrical Solver (org.libage.sim.electrical.mna)
  • Falstad netlist loader for MNA Solver (org.libage.parsers.falstad)
  • Thermal system solver (org.libage.sim.thermal)
  • Data structures (org.libage.data)
    • MultiMap, Disjoint Set, and Component Graph
  • Function tables (org.libage.math)
  • Spatial functions for connection graphs (org.libage.space)

Planned Features

  • Generic Circuit API
  • Advanced pluggable circuit solvers (eg, non-smooth dynamic systems solvers)

License

Source code is MIT licensed unless otherwise noted.

libage's People

Contributors

caeleron avatar empireu avatar grissess avatar jrddunbr avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

empireu

libage's Issues

Find suitable package repository

GitHub packages is useless because public repositories require an authenticaton token.

Instead, we're going to use a different repository.

  • Find a repository we want to use
  • Configure repository to build release and send to public (can be correlated with GitHub releases page but perhaps not?)

Calling `Circuit.toDot()` causes class cast exception

[09:19:47] [Server thread/ERROR] [ne.mi.ev.EventBus/EVENTBUS]: Exception caught during firing event: class org.ageseries.libage.sim.electrical.mna.component.Pin cannot be cast to class org.ageseries.libage.sim.electrical.mna.Node (org.ageseries.libage.sim.electrical.mna.component.Pin and org.ageseries.libage.sim.electrical.mna.Node are in module libage.main.SNAPSHOT of loader 'MC-BOOTSTRAP' @25bbf683)
	Index: 1
	Listeners:
		0: NORMAL
		1: ASM: org.eln2.mc.common.CommonEvents@3a3b7a8a onChat(Lnet/minecraftforge/event/ServerChatEvent;)V
java.lang.ClassCastException: class org.ageseries.libage.sim.electrical.mna.component.Pin cannot be cast to class org.ageseries.libage.sim.electrical.mna.Node (org.ageseries.libage.sim.electrical.mna.component.Pin and org.ageseries.libage.sim.electrical.mna.Node are in module libage.main.SNAPSHOT of loader 'MC-BOOTSTRAP' @25bbf683)
	at MC-BOOTSTRAP/libage.main.SNAPSHOT/org.ageseries.libage.sim.electrical.mna.Circuit.toDot(Circuit.kt:666)
	at TRANSFORMER/[email protected]/org.eln2.mc.common.CommonEvents.onChat(CommonEvents.kt:31)

is where the issue is located.

Advanced pluggable circuit solvers

This partially builds on #10 but is the actual pluggable solvers.

I know that @Caeleron was working on a pretty cool solver that used LRC circuit components and was more stable than a basic MNA solver.

We could also make a non-smooth dynamic systems solver.

This issue is more to suggest building such a solver, and a new issue should be linked and created if we actually have concrete ideas for a solver we want to implement.

Repository needs new name

I've been told multiple times that we should rename it from libelectric since it does a whole lot more than electrical simulations, and I tend to agree.

I've suggested names like libsim and I've also heard things like simlib and libeln suggested.. but there's no consensus yet.

Once this is done, we can unblock uploading this to Maven (try not to name conflict with anything up there).

Generic Circuit API

A generic circuit API has been partially implemented but is not particularly useful at the moment.

Thoughts were that we could design an API that could be used for abstracting away different simulators and be simply the information required to express the state of a circuit to a simulator and then get the missing information from the simulator (eg, branch currents, node/pin voltages, etc.)

It would also be cool to have an HTTP/2 based API, but that can be handled in another issue.

Thermal system solver

We need a (new) thermal system solver since I deleted the non-functional one.

Ideally, it would be a volumetric solver and not just a "same size block, move energy on tick" type solver like Electrical Age 1 had.

This would take into account the thermal conductivity of the materials and also take into account the surface area of the faces in the calculation (likely resulting in a measurement of watts per square meter across surfaces).

We have a file (Materials.kt) in the project that already contains thermal conductivity of copper and other common materials that would participate in the thermal simulation, but we can certainly add more.

Add mode to diode methods

Allow the mode of the diode to be fetched from the Diode class via a method.

It should probably use an enum to specify this state as forwarding or not forwarding.

enum class DiodeState {
    FORWARDING, BLOCKING
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.