Git Product home page Git Product logo

frame3dd's People

Contributors

unrealsolver avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

frame3dd's Issues

Refactor input arrays/vars to C structs

Structs are easier to work with, and this will allow us to map them to JSON and back later.

Subtasks:

Frame data:

  • Nodes list
  • DoF
  • Edges list

Load case data:

  • Point loads
  • Uniform loads
  • Trapezoidal loads
  • Internal concentrated loads
  • Temperature loads
  • Prescribed displacements
  • Dynamic load cases

Simulation options:

  • Simulation options

Root struct:

  • Root struct

Use structs for output data

There are should be a single data type with all relevant data represented as a struct. This will allow easier JSON serialization.

Static data:

  • As an option, include input data
  • Node displacements (global)
  • Frame element end forces (local)
  • Frame element transerverse displacements (local) see 'if' files
  • Reactions (global)
  • RMS REE

Modal:

  • Peak frame element internal forces (local)
  • Modal Analysis masses
  • Nodal masses (diagonal of the mass matrix / global)
  • Natural frequencies & mass normalized mode shapes
  • Modes (frequencies)

Related to:

Nodes/Edges lists should have uids

Might not be immediately required, because original code assumes that array index == uid. And arrays intentionally have blank spaces, like [null, null, node(2), null, node(4), ...].

:spiral_notepad: JSON io support

3dd and csv i/o formats aren't user friendly enough, JSON have much better user experience. That's why adding JSON i/o is one of the major goals.

  • Read input data from JSON
  • Write simulation results to JSON

LoadcaseData should have size field

Nodes and Edges follow pattern of having size and data properties in the struct. It's better to refactor LoadcaseData to work the same way. And also because nL variable should not be required.

Use GH Artifcats for building Doxygen

Currently, gh-pages branch is used as an intermediate storage for the files, which is not required and just adds garbage files to the git history.

Tasks:

  • Remove gh-pages branch completely when the fix is deployed

Integration-friendly IO

There should be a convenient way to integrate with Frame3DD into other pieces of software. Existing approach with run_kernel isn't good enough, because tight coupling to files io, argc/argv, does not return any values. In order to make possible implementation of JSON-io, we should consider this:

  • Return Result with ExitCode
  • Handle Frame, LoadCases and Options structs as input
  • Csv, txt, matlab and other IO should be a compile-time option
  • #16
  • #17

CLI refactoring

Acceptance criteria:

  • Code (re)written in Rust language
  • Code covered with tests
  • main.c should not be removed and should work as before

Requirements:

  • New CLI must be similar to other modern CLI programs
  • NO backward/forward required
  • NO colors
  • Ability to pick desired output format(s)
  • Sane defaults
  • Tests

Where to start:

  • main.c

:rocket: Release build

  • Make a release on some condition (tag?)
  • Package .deb
  • Package linux .tar.gz build
  • Build documentation

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.