got things compiling with mingw
This commit is contained in:
parent
72e9047881
commit
18e05450b4
|
@ -3,10 +3,20 @@ cmake_minimum_required(VERSION 3.25)
|
||||||
project(FastNuclearSim VERSION 1.0)
|
project(FastNuclearSim VERSION 1.0)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 26)
|
set(CMAKE_CXX_STANDARD 26)
|
||||||
set(CMAKE_CXX_FLAGS "-g -O3 -I/usr/include/freetype2")
|
|
||||||
|
if(WIN32)
|
||||||
|
set(CMAKE_CXX_FLAGS "-g -O3")
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_FLAGS "-g -O3 -I/usr/include/freetype2")
|
||||||
|
endif()
|
||||||
|
|
||||||
file(GLOB_RECURSE SOURCES src/*.cpp)
|
file(GLOB_RECURSE SOURCES src/*.cpp)
|
||||||
|
|
||||||
add_executable(FastNuclearSim ${SOURCES})
|
add_executable(FastNuclearSim ${SOURCES})
|
||||||
target_link_libraries(FastNuclearSim PUBLIC stdc++ m GLEW glfw GL freetype assimp jsoncpp)
|
|
||||||
|
if(WIN32)
|
||||||
|
target_link_libraries(FastNuclearSim PUBLIC stdc++ m brotlidec assimp-5 glew32 opengl32 glfw3 freetype jsoncpp zlibstatic)
|
||||||
|
else()
|
||||||
|
target_link_libraries(FastNuclearSim PUBLIC stdc++ m GLEW glfw GL freetype assimp jsoncpp)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -42,14 +42,14 @@ void evaporator::update(double dt)
|
||||||
|
|
||||||
double P = 10000; // Pa
|
double P = 10000; // Pa
|
||||||
double K = conversions::temperature::c_to_k(heat); // K
|
double K = conversions::temperature::c_to_k(heat); // K
|
||||||
double R = sim::constants::R; // J/K/mol
|
double R = util::constants::R; // J/K/mol
|
||||||
|
|
||||||
double n_g = air / constants::M_air; // mol
|
double n_g = air / util::constants::M_air; // mol
|
||||||
double V_g = (volume - level) * 0.001; // m^3
|
double V_g = (volume - level) * 0.001; // m^3
|
||||||
|
|
||||||
double n = (P * V_g) / (R * K); // mol
|
double n = (P * V_g) / (R * K); // mol
|
||||||
|
|
||||||
air = n * constants::M_air;
|
air = n * util::constants::M_air;
|
||||||
update_base(dt);
|
update_base(dt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,19 +98,19 @@ double fluid_holder::calc_pressure(double heat, double volume, double mol)
|
||||||
{
|
{
|
||||||
double V = volume * 0.001;
|
double V = volume * 0.001;
|
||||||
|
|
||||||
return V == 0 ? 0 : (mol * heat * constants::R) / V;
|
return V == 0 ? 0 : (mol * heat * util::constants::R) / V;
|
||||||
}
|
}
|
||||||
|
|
||||||
double fluid_holder::calc_pressure_mol(double heat, double volume, double pressure)
|
double fluid_holder::calc_pressure_mol(double heat, double volume, double pressure)
|
||||||
{
|
{
|
||||||
double V = volume * 0.001;
|
double V = volume * 0.001;
|
||||||
|
|
||||||
return (pressure * V) / (constants::R * heat);
|
return (pressure * V) / (util::constants::R * heat);
|
||||||
}
|
}
|
||||||
|
|
||||||
double fluid_holder::get_pressure() const
|
double fluid_holder::get_pressure() const
|
||||||
{
|
{
|
||||||
return calc_pressure(conversions::temperature::c_to_k(heat), get_gas_volume(), fluid.g_to_mol(steam) + air / constants::M_air);
|
return calc_pressure(conversions::temperature::c_to_k(heat), get_gas_volume(), fluid.g_to_mol(steam) + air / util::constants::M_air);
|
||||||
}
|
}
|
||||||
|
|
||||||
double fluid_holder::get_gas_density() const
|
double fluid_holder::get_gas_density() const
|
||||||
|
@ -143,10 +143,10 @@ void fluid_holder::update_base(double secs)
|
||||||
{
|
{
|
||||||
double K = conversions::temperature::c_to_k(heat); // K
|
double K = conversions::temperature::c_to_k(heat); // K
|
||||||
double P = fluid.vapor_pressure.calc_p(K); // Pa
|
double P = fluid.vapor_pressure.calc_p(K); // Pa
|
||||||
double R = sim::constants::R; // J/K/mol
|
double R = util::constants::R; // J/K/mol
|
||||||
|
|
||||||
double J_m = fluid.jPg * fluid.gPmol; // J/mol
|
double J_m = fluid.jPg * fluid.gPmol; // J/mol
|
||||||
double n_g = fluid.g_to_mol(steam) + air / constants::M_air; // mol
|
double n_g = fluid.g_to_mol(steam) + air / util::constants::M_air; // mol
|
||||||
double V_g = (volume - level) * 0.001; // m^3
|
double V_g = (volume - level) * 0.001; // m^3
|
||||||
|
|
||||||
double n = (P * V_g) / (R * K) - n_g; // mol
|
double n = (P * V_g) / (R * K) - n_g; // mol
|
||||||
|
|
|
@ -54,7 +54,7 @@ void valve::update(double dt)
|
||||||
|
|
||||||
mol = fluid_holder::calc_pressure_mol(src->get_heat_k(), src->get_gas_volume(), pressure1 - remove);
|
mol = fluid_holder::calc_pressure_mol(src->get_heat_k(), src->get_gas_volume(), pressure1 - remove);
|
||||||
|
|
||||||
mass_a = src->get_air() - mol / constants::M_air;
|
mass_a = src->get_air() - mol / util::constants::M_air;
|
||||||
mass_s = src->get_steam() - src->fluid.mol_to_g(mol);
|
mass_s = src->get_steam() - src->fluid.mol_to_g(mol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ void valve::update(double dt)
|
||||||
|
|
||||||
mol = fluid_holder::calc_pressure_mol(dst->get_heat_k(), dst->get_gas_volume(), pressure2 - remove);
|
mol = fluid_holder::calc_pressure_mol(dst->get_heat_k(), dst->get_gas_volume(), pressure2 - remove);
|
||||||
|
|
||||||
mass_a = dst->get_air() - mol / constants::M_air;
|
mass_a = dst->get_air() - mol / util::constants::M_air;
|
||||||
mass_s = dst->get_steam() - dst->fluid.mol_to_g(mol);
|
mass_s = dst->get_steam() - dst->fluid.mol_to_g(mol);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
16
src/main.cpp
16
src/main.cpp
|
@ -1,6 +1,4 @@
|
||||||
|
|
||||||
#include <sys/time.h>
|
|
||||||
|
|
||||||
#include <random>
|
#include <random>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
|
@ -18,33 +16,29 @@
|
||||||
#include "graphics/window.hpp"
|
#include "graphics/window.hpp"
|
||||||
#include "graphics/camera.hpp"
|
#include "graphics/camera.hpp"
|
||||||
|
|
||||||
|
#include "util/time.hpp"
|
||||||
#include "system.hpp"
|
#include "system.hpp"
|
||||||
#include "tests.hpp"
|
#include "tests.hpp"
|
||||||
|
|
||||||
using namespace sim;
|
using namespace sim;
|
||||||
|
|
||||||
unsigned long get_now()
|
|
||||||
{
|
|
||||||
struct timeval tv;
|
|
||||||
gettimeofday(&tv, nullptr);
|
|
||||||
return (unsigned long)tv.tv_sec * 1000000 + tv.tv_usec;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
|
feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
|
||||||
|
#endif
|
||||||
|
|
||||||
// tests::run();
|
// tests::run();
|
||||||
// return 0;
|
// return 0;
|
||||||
|
|
||||||
graphics::window::create();
|
graphics::window::create();
|
||||||
|
|
||||||
long clock = get_now();
|
long clock = util::time::get_now();
|
||||||
double at = 0;
|
double at = 0;
|
||||||
|
|
||||||
while(!graphics::window::should_close())
|
while(!graphics::window::should_close())
|
||||||
{
|
{
|
||||||
long now = get_now();
|
long now = util::time::get_now();
|
||||||
long passed = now - clock;
|
long passed = now - clock;
|
||||||
double dt = (double)passed / 1e6;
|
double dt = (double)passed / 1e6;
|
||||||
clock += passed;
|
clock += passed;
|
||||||
|
|
|
@ -149,7 +149,7 @@ void reactor::toggle_selected()
|
||||||
void reactor::update_tile(double secs, int i, int x, int y)
|
void reactor::update_tile(double secs, int i, int x, int y)
|
||||||
{
|
{
|
||||||
int nb_lookup[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
|
int nb_lookup[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
|
||||||
std::shuffle(nb_lookup, &nb_lookup[3], sim::random::gen);
|
std::shuffle(nb_lookup, &nb_lookup[3], util::random::gen);
|
||||||
|
|
||||||
for(int j = 0; j < 4; j++)
|
for(int j = 0; j < 4; j++)
|
||||||
{
|
{
|
||||||
|
@ -165,7 +165,7 @@ void reactor::update_tile(double secs, int i, int x, int y)
|
||||||
|
|
||||||
void reactor::update_interactions(int* rods_lookup, double secs)
|
void reactor::update_interactions(int* rods_lookup, double secs)
|
||||||
{
|
{
|
||||||
std::shuffle(rods_lookup, &rods_lookup[size - 1], sim::random::gen);
|
std::shuffle(rods_lookup, &rods_lookup[size - 1], util::random::gen);
|
||||||
|
|
||||||
for(int id = 0; id < size; id++)
|
for(int id = 0; id < size; id++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
namespace sim::constants
|
namespace sim::util::constants
|
||||||
{
|
{
|
||||||
constexpr double R = 8.31446261815324; // molar gas constant, J/mol/K
|
constexpr double R = 8.31446261815324; // molar gas constant, J/mol/K
|
||||||
constexpr double R_air = 0.2870500676; // specific gas constant of dry air, J/g/K
|
constexpr double R_air = 0.2870500676; // specific gas constant of dry air, J/g/K
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
#include "random.hpp"
|
#include "random.hpp"
|
||||||
|
|
||||||
using namespace sim;
|
using namespace sim::util;
|
||||||
|
|
||||||
std::mt19937 random::gen;
|
std::mt19937 random::gen;
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <random>
|
#include <random>
|
||||||
|
|
||||||
namespace sim::random
|
namespace sim::util::random
|
||||||
{
|
{
|
||||||
|
|
||||||
extern std::mt19937 gen;
|
extern std::mt19937 gen;
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#else
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "time.hpp"
|
||||||
|
|
||||||
|
using namespace sim::util;
|
||||||
|
|
||||||
|
|
||||||
|
unsigned long time::get_now()
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
FILETIME ft;
|
||||||
|
ULARGE_INTEGER ul;
|
||||||
|
GetSystemTimeAsFileTime(&ft);
|
||||||
|
ul.LowPart = ft.dwLowDateTime;
|
||||||
|
ul.HighPart = ft.dwHighDateTime;
|
||||||
|
return (unsigned long)(ul.QuadPart / 10 - 11644473600000000ULL);
|
||||||
|
#else
|
||||||
|
struct timeval tv;
|
||||||
|
gettimeofday(&tv, nullptr);
|
||||||
|
return (unsigned long)tv.tv_sec * 1000000 + tv.tv_usec;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void time::sleep(unsigned long usec)
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
Sleep(usec / 1000);
|
||||||
|
#else
|
||||||
|
usleep(usec);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace sim::util::time
|
||||||
|
{
|
||||||
|
|
||||||
|
unsigned long get_now();
|
||||||
|
void sleep(unsigned long usec);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue