Skip to content

Repository files navigation

IrcoPy <->

Created by: NicoLuaJIT/NicoAdresse (Nico Erdmann) on 12.07.2026 (Sunday)

About <->

This is a hobby project intended to help me practice working with larger codebases and improve my Git workflow.

Take everything here with a grain of salt.

Current Version: v1.0.8.1

IrcoPy is a high-school physics calculator covering topics ranging from Electricity to Waves. It is designed to demonstrate fundamental principles across multiple fields of physics, including Mechanics, Energy, Gravity, Rotational Dynamics, and Waves.

Code Quality <->

Every class is wrapped inside the namespace of its respective domain.

Every calculation function returns a value, usually double (Python: float), since result is represented using that type.

How To Get Started <->

These instructions will get a copy of the project running on your local machine for development and testing purposes.

Prerequisites

Python

  • Python Interpreter (recommended version >= 3.9)
  • The pip package manager

C++

  • G++, Clang, or another C++ compiler (recommended version >= C++23)
  • CMake

Installation & Setup

  1. Clone the repository:
git clone https://github.com/NicoAdresse/IrcoPy.git
  1. Build the project:
Remove-Item build\ -Recurse
New-Item -Name "build" -ItemType Directory
cd build\
cmake ..
cmake --build .
.\app.exe

or run RUN.ps1.

Python Usage <->

Example:

# src/main.py

import ircopy as irc

def main() -> None:
    density: irc.Density = irc.Density()
    density.calculate_density(2.0, 5.0, True)
    
if __name__ == "__main__":
    main()

Structure <->

IrcoPy/
├── bindings
│   ├── bind_main_module.cpp
│   ├── Electricity
│   │   ├── bind_capacitance.cpp
│   │   ├── bind_capacitor_energy.cpp
│   │   ├── bind_charge.cpp
│   │   ├── bind_coulombs_law.cpp
│   │   ├── bind_ohms_law.cpp
│   │   └── bind_power.cpp
│   ├── Energy
│   │   ├── bind_efficiency.cpp
│   │   ├── bind_heat_energy.cpp
│   │   ├── bind_kinetic_energy.cpp
│   │   └── bind_potential_energy.cpp
│   ├── Gravity
│   │   ├── bind_escape_velocity.cpp
│   │   ├── bind_gravitational_acceleration.cpp
│   │   ├── bind_gravitational_force.cpp
│   │   ├── bind_gravitational_potential_energy.cpp
│   │   ├── bind_kelpers_third_law.cpp
│   │   └── bind_orbital_velocity.cpp
│   ├── Mechanics
│   │   ├── bind_acceleration.cpp
│   │   ├── bind_average_velocity.cpp
│   │   ├── bind_density.cpp
│   │   ├── bind_force.cpp
│   │   ├── bind_hookes_law.cpp
│   │   ├── bind_momentum.cpp
│   │   ├── bind_power.cpp
│   │   ├── bind_pressure.cpp
│   │   ├── bind_torque.cpp
│   │   ├── bind_weight.cpp
│   │   └── bind_work.cpp
│   ├── Rotational_Dynamics
│   │   ├── bind_angular_acceleration.cpp
│   │   ├── bind_angular_velocity.cpp
│   │   └── bind_rotational_energy.cpp
│   └── Waves
│       ├── bind_frequency.cpp
│       ├── bind_period.cpp
│       └── bind_wave_speed.cpp
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── impl
│   ├── Electricity
│   │   ├── impl_capacitance.cpp
│   │   ├── impl_capacitor_energy.cpp
│   │   ├── impl_charge.cpp
│   │   ├── impl_coulombs_law.cpp
│   │   ├── impl_ohms_law.cpp
│   │   └── impl_power.cpp
│   ├── Energy
│   │   ├── impl_efficiency.cpp
│   │   ├── impl_heat_energy.cpp
│   │   ├── impl_kinetic_energy.cpp
│   │   └── impl_potential_energy.cpp
│   ├── Gravity
│   │   ├── impl_escape_velocity.cpp
│   │   ├── impl_gravitational_acceleration.cpp
│   │   ├── impl_gravitational_force.cpp
│   │   ├── impl_gravitational_potential_energy.cpp
│   │   ├── impl_keplers_third_law.cpp
│   │   └── impl_orbital_velocity.cpp
│   ├── Helper
│   │   └── helper_funcs.hpp
│   ├── Mechanics
│   │   ├── impl_acceleration.cpp
│   │   ├── impl_average_velocity.cpp
│   │   ├── impl_density.cpp
│   │   ├── impl_force.cpp
│   │   ├── impl_hookes_law.cpp
│   │   ├── impl_momentum.cpp
│   │   ├── impl_power.cpp
│   │   ├── impl_pressure.cpp
│   │   ├── impl_torque.cpp
│   │   ├── impl_weight.cpp
│   │   └── impl_work.cpp
│   ├── Rotational_Dynamics
│   │   ├── impl_angular_acceleration.cpp
│   │   ├── impl_angular_velocity.cpp
│   │   └── impl_rotational_energy.cpp
│   └── Waves
│       ├── impl_frequency.cpp
│       ├── impl_period.cpp
│       └── impl_wave_speed.cpp
├── include
│   ├── Electricity
│   │   ├── inc_capacitance.hpp
│   │   ├── inc_capacitor_energy.hpp
│   │   ├── inc_charge.hpp
│   │   ├── inc_coulombs_law.hpp
│   │   ├── inc_ohms_law.hpp
│   │   └── inc_power.hpp
│   ├── Energy
│   │   ├── inc_efficiency.hpp
│   │   ├── inc_heat_energy.hpp
│   │   ├── inc_kinetic_energy.hpp
│   │   └── inc_potential_energy.hpp
│   ├── Gravity
│   │   ├── inc_escape_velocity.hpp
│   │   ├── inc_gravitational_acceleration.hpp
│   │   ├── inc_gravitational_force.hpp
│   │   ├── inc_gravitational_potential_energy.hpp
│   │   ├── inc_kelpers_third_law.hpp
│   │   └── inc_orbital_velocity.hpp
│   ├── Mechanics
│   │   ├── inc_acceleration.hpp
│   │   ├── inc_average_velocity.hpp
│   │   ├── inc_density.hpp
│   │   ├── inc_force.hpp
│   │   ├── inc_hookes_law.hpp
│   │   ├── inc_momentum.hpp
│   │   ├── inc_power.hpp
│   │   ├── inc_pressure.hpp
│   │   ├── inc_torque.hpp
│   │   ├── inc_weight.hpp
│   │   └── inc_work.hpp
│   ├── Rotational_Dynamics
│   │   ├── inc_angular_acceleration.hpp
│   │   ├── inc_angular_velocity.hpp
│   │   └── inc_rotational_energy.hpp
│   └── Waves
│       ├── inc_frequency.hpp
│       ├── inc_period.hpp
│       └── inc_wave_speed.hpp
├── LICENSE
├── pyproject.toml
├── README.md
├── RUN.sh
├── src
│   └── main.cpp
├── tests
│   ├── Electricity
│   │   ├── test_capacitance.py
│   │   ├── test_capacitor_energy.py
│   │   ├── test_charge.py
│   │   ├── test_coulombs_law.py
│   │   ├── test_electricity_main.py
│   │   ├── test_ohms_law.py
│   │   └── test_power.py
│   ├── Energy
│   │   ├── test_efficiency.py
│   │   ├── test_energy_main.py
│   │   ├── test_heat_energy.py
│   │   ├── test_kinetic_energy.py
│   │   └── test_potential_energy.py
│   ├── Gravity
│   │   ├── test_escape_velocity.py
│   │   ├── test_gravitational_acceleration.py
│   │   ├── test_gravitational_force.py
│   │   ├── test_gravitational_potential_energy.py
│   │   ├── test_gravity_main.py
│   │   ├── test_kelpers_third_law.py
│   │   └── test_orbital_velocity.py
│   ├── Mechanics
│   │   ├── test_acceleration.py
│   │   ├── test_average_velocity.py
│   │   ├── test_density.py
│   │   ├── test_force.py
│   │   ├── test_hookes_law.py
│   │   ├── test_mechanics_main.py
│   │   ├── test_momentum.py
│   │   ├── test_power.py
│   │   ├── test_pressure.py
│   │   ├── test_torque.py
│   │   ├── test_weight.py
│   │   └── test_work.py
│   ├── Rotational_Dynamics
│   │   ├── test_angular_acceleration.py
│   │   ├── test_angular_velocity.py
│   │   ├── test_rotational_dynamics_main.py
│   │   └── test_rotational_energy.py
│   ├── RUN_TESTS.sh
│   └── Waves
│       ├── test_frequency.py
│       ├── test_period.py
│       ├── test_waves_main.py
│       └── test_wave_speed.py
├── TODO.md
└── UPDATE_PIP.sh

License <->

MIT License -> Check LICENSE.

About

Hobby Project, mainly used to practice my git and maintaining codebases. Is not meant to be interactive, only static.

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages