Skip to content

Commit

Permalink
Merge pull request #447 from ut-issl/feature/add-path-definition-for-…
Browse files Browse the repository at this point in the history
…ini-files

Add path definition from exe file to use in ini files
  • Loading branch information
200km committed Jul 14, 2023
2 parents 0905f8d + 7725d70 commit e33a42d
Show file tree
Hide file tree
Showing 10 changed files with 70 additions and 38 deletions.
13 changes: 13 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,19 @@ if(NOT DEFINED C2A_NAME)
set(C2A_NAME "c2a_oss")
endif()

## Directory path for ini files
if(NOT DEFINED INI_FILE_DIR_FROM_EXE)
set(INI_FILE_DIR_FROM_EXE ../../data/sample/initialize_files)
endif()

if(NOT DEFINED EXT_LIB_DIR_FROM_EXE)
set(EXT_LIB_DIR_FROM_EXE ../../${EXT_LIB_DIR})
endif()

if(NOT DEFINED CORE_DIR_FROM_EXE)
set(CORE_DIR_FROM_EXE ../../../s2e-core)
endif()

## options to use C2A
if(USE_C2A)
option(BUILD_64BIT OFF) # force to build with 32bit
Expand Down
5 changes: 5 additions & 0 deletions common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_EXTENSIONS FALSE)
target_include_directories(${PROJECT_NAME} PUBLIC ${S2E_DIR}/src)
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

# Directory path setting
target_compile_definitions(${PROJECT_NAME} PRIVATE "INI_FILE_DIR_FROM_EXE=\"${INI_FILE_DIR_FROM_EXE}\"")
target_compile_definitions(${PROJECT_NAME} PRIVATE "EXT_LIB_DIR_FROM_EXE=\"${EXT_LIB_DIR_FROM_EXE}\"")
target_compile_definitions(${PROJECT_NAME} PRIVATE "CORE_DIR_FROM_EXE=\"${CORE_DIR_FROM_EXE}\"")

# Compile option
if(MSVC)
target_compile_options(${PROJECT_NAME} PUBLIC "/MP") # multi process build
Expand Down
2 changes: 1 addition & 1 deletion data/sample/initialize_files/sample_disturbance.ini
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
calculation = DISABLE
logging = ENABLE
degree = 4
coefficients_file_path = ../../../ExtLibraries/GeoPotential/egm96_to360.ascii
coefficients_file_path = EXT_LIB_DIR_FROM_EXE/GeoPotential/egm96_to360.ascii


[MAGNETIC_DISTURBANCE]
Expand Down
2 changes: 1 addition & 1 deletion data/sample/initialize_files/sample_gnss.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[GNSS_SATELLIES]
directory_path = ../../../ExtLibraries/sp3/
directory_path = EXT_LIB_DIR_FROM_EXE/sp3/
calculation = DISABLE

true_position_file_sort = IGS
Expand Down
4 changes: 2 additions & 2 deletions data/sample/initialize_files/sample_ground_station.ini
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ height_m = 3.4
elevation_limit_angle_deg = 5.0

[COMPONENT_FILES]
ground_station_antenna_file = ../../data/sample/initialize_files/components/ground_station_antenna.ini
ground_station_calculator_file = ../../data/sample/initialize_files/components/ground_station_calculator.ini
ground_station_antenna_file = INI_FILE_DIR_FROM_EXE/components/ground_station_antenna.ini
ground_station_calculator_file = INI_FILE_DIR_FROM_EXE/components/ground_station_calculator.ini
4 changes: 2 additions & 2 deletions data/sample/initialize_files/sample_local_environment.ini
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[MAGNETIC_FIELD_ENVIRONMENT]
calculation = ENABLE
logging = ENABLE
coefficient_file = ../../../s2e-core/src/library/external/igrf/igrf13.coef
coefficient_file = CORE_DIR_FROM_EXE/src/library/external/igrf/igrf13.coef
magnetic_field_random_walk_standard_deviation_nT = 10.0
magnetic_field_random_walk_limit_nT = 400.0
magnetic_field_white_noise_standard_deviation_nT = 50.0
Expand All @@ -21,7 +21,7 @@ logging = ENABLE
// NRLMSISE00: NRLMSISE00 model
// HARRIS_PRIESTER: Harris-Priester model
model = STANDARD
nrlmsise00_table_file = ../../../ExtLibraries/nrlmsise00/table/SpaceWeather-v1.2.txt
nrlmsise00_table_file = EXT_LIB_DIR_FROM_EXE/nrlmsise00/table/SpaceWeather-v1.2.txt
// Whether using user-defined f10.7 and ap value
// Ref of f10.7: https://www.swpc.noaa.gov/phenomena/f107-cm-radio-emissions
// Ref of ap: http://wdc.kugi.kyoto-u.ac.jp/kp/kpexp-j.html
Expand Down
30 changes: 15 additions & 15 deletions data/sample/initialize_files/sample_satellite.ini
Original file line number Diff line number Diff line change
Expand Up @@ -126,22 +126,22 @@ error_tolerance = 0.0001
calculation = DISABLE
debug = DISABLE
solar_calc_setting = DISABLE
thermal_file_directory = ../../data/sample/initialize_files/thermal_csv_files/
thermal_file_directory = INI_FILE_DIR_FROM_EXE/thermal_csv_files/

[SETTING_FILES]
local_environment_file = ../../data/sample/initialize_files/sample_local_environment.ini
disturbance_file = ../../data/sample/initialize_files/sample_disturbance.ini
structure_file = ../../data/sample/initialize_files/sample_structure.ini
local_environment_file = INI_FILE_DIR_FROM_EXE/sample_local_environment.ini
disturbance_file = INI_FILE_DIR_FROM_EXE/sample_disturbance.ini
structure_file = INI_FILE_DIR_FROM_EXE/sample_structure.ini

[COMPONENT_FILES]
gyro_file = ../../data/sample/initialize_files/components/gyro_sensor.ini
magnetometer_file = ../../data/sample/initialize_files/components/magnetometer.ini
stt_file = ../../data/sample/initialize_files/components/star_sensor.ini
ss_file = ../../data/sample/initialize_files/components/sun_sensor.ini
gnss_file = ../../data/sample/initialize_files/components/gnss_receiver.ini
magetorquer_file = ../../data/sample/initialize_files/components/magnetorquer.ini
rw_file = ../../data/sample/initialize_files/components/reaction_wheel.ini
thruster_file = ../../data/sample/initialize_files/components/thruster.ini
force_generator_file = ../../data/sample/initialize_files/components/force_generator.ini
torque_generator_file = ../../data/sample/initialize_files/components/torque_generator.ini
antenna_file = ../../data/sample/initialize_files/components/spacecraft_antenna.ini
gyro_file = INI_FILE_DIR_FROM_EXE/components/gyro_sensor.ini
magnetometer_file = INI_FILE_DIR_FROM_EXE/components/magnetometer.ini
stt_file = INI_FILE_DIR_FROM_EXE/components/star_sensor.ini
ss_file = INI_FILE_DIR_FROM_EXE/components/sun_sensor.ini
gnss_file = INI_FILE_DIR_FROM_EXE/components/gnss_receiver.ini
magetorquer_file = INI_FILE_DIR_FROM_EXE/components/magnetorquer.ini
rw_file = INI_FILE_DIR_FROM_EXE/components/reaction_wheel.ini
thruster_file = INI_FILE_DIR_FROM_EXE/components/thruster.ini
force_generator_file = INI_FILE_DIR_FROM_EXE/components/force_generator.ini
torque_generator_file = INI_FILE_DIR_FROM_EXE/components/torque_generator.ini
antenna_file = INI_FILE_DIR_FROM_EXE/components/spacecraft_antenna.ini
18 changes: 9 additions & 9 deletions data/sample/initialize_files/sample_simulation_base.ini
Original file line number Diff line number Diff line change
Expand Up @@ -105,15 +105,15 @@ selected_body_name(10) = PLUTO

[CSPICE_KERNELS]
// CSPICE Kernel files definition
tls = ../../../ExtLibraries/cspice/generic_kernels/lsk/naif0010.tls
tpc1 = ../../../ExtLibraries/cspice/generic_kernels/pck/de-403-masses.tpc
tpc2 = ../../../ExtLibraries/cspice/generic_kernels/pck/gm_de431.tpc
tpc3 = ../../../ExtLibraries/cspice/generic_kernels/pck/pck00010.tpc
bsp = ../../../ExtLibraries/cspice/generic_kernels/spk/planets/de430.bsp
tls = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/lsk/naif0010.tls
tpc1 = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/pck/de-403-masses.tpc
tpc2 = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/pck/gm_de431.tpc
tpc3 = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/pck/pck00010.tpc
bsp = EXT_LIB_DIR_FROM_EXE/cspice/generic_kernels/spk/planets/de430.bsp


[HIPPARCOS_CATALOGUE]
catalogue_file_path = ../../../ExtLibraries/HipparcosCatalogue/hip_main.csv
catalogue_file_path = EXT_LIB_DIR_FROM_EXE/HipparcosCatalogue/hip_main.csv
max_magnitude = 3.0 // Max magnitude to read from Hip catalog
calculation = DISABLE
logging = DISABLE
Expand All @@ -134,7 +134,7 @@ save_initialize_files = ENABLE
// If you want to add a ground station, create the corresponding ground_station.ini, and specify it as ground_station_file(1), ground_station_file(2), ect.
number_of_simulated_spacecraft = 1
number_of_simulated_ground_station = 1
spacecraft_file(0) = ../../data/sample/initialize_files/sample_satellite.ini
ground_station_file(0) = ../../data/sample/initialize_files/sample_ground_station.ini
gnss_file = ../../data/sample/initialize_files/sample_gnss.ini
spacecraft_file(0) = INI_FILE_DIR_FROM_EXE/sample_satellite.ini
ground_station_file(0) = INI_FILE_DIR_FROM_EXE/sample_ground_station.ini
gnss_file = INI_FILE_DIR_FROM_EXE/sample_gnss.ini
log_file_save_directory = ../../data/sample/logs/
27 changes: 20 additions & 7 deletions src/library/initialize/initialize_file_access.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <algorithm>
#include <cstring>
#include <limits>
#include <regex>

#include "../utilities/macros.hpp"

Expand Down Expand Up @@ -120,14 +121,26 @@ void IniAccess::ReadChar(const char* section_name, const char* key_name, const i
}

std::string IniAccess::ReadString(const char* section_name, const char* key_name) {
std::string value;
#ifdef WIN32
char temp[kMaxCharLength];
ReadChar(section_name, key_name, kMaxCharLength, temp);
return std::string(temp);
value = std::string(temp);
#else
std::string value = ini_reader_.GetString(section_name, key_name, "NULL");
return value;
value = ini_reader_.GetString(section_name, key_name, "NULL");
#endif
// Special characters
// INI_FILE_DIR
std::string ini_path = INI_FILE_DIR_FROM_EXE;
value = std::regex_replace(value, std::regex("INI_FILE_DIR_FROM_EXE"), ini_path);
// EXT_LIB_DIR
std::string ext_lib_path = EXT_LIB_DIR_FROM_EXE;
value = std::regex_replace(value, std::regex("EXT_LIB_DIR_FROM_EXE"), ext_lib_path);
// CORE_DIR
std::string s2e_core_path = CORE_DIR_FROM_EXE;
value = std::regex_replace(value, std::regex("CORE_DIR_FROM_EXE"), s2e_core_path);

return value;
}

bool IniAccess::ReadEnable(const char* section_name, const char* key_name) {
Expand All @@ -139,16 +152,16 @@ bool IniAccess::ReadEnable(const char* section_name, const char* key_name) {

std::vector<std::string> IniAccess::ReadStrVector(const char* section_name, const char* key_name) {
std::vector<std::string> data;
char temp[kMaxCharLength];
std::string temp;
unsigned int i = 0;
while (true) {
std::stringstream c_name;
c_name << key_name << "(" << i << ")";
ReadChar(section_name, c_name.str().c_str(), kMaxCharLength, temp);
temp = ReadString(section_name, c_name.str().c_str());
#ifdef WIN32
if (temp[0] == NULL) {
if (temp.c_str()[0] == NULL) {
#else
if (!strcmp(temp, "NULL")) {
if (!strcmp(temp.c_str(), "NULL")) {
#endif
break;
} else {
Expand Down
3 changes: 2 additions & 1 deletion src/s2e.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ int main(int argc, char *argv[])
start = system_clock::now();

std::string data_path = "../../data/";
std::string ini_file = "../../data/sample/initialize_files/sample_simulation_base.ini";
std::string ini_path = INI_FILE_DIR_FROM_EXE;
std::string ini_file = ini_path + "/sample_simulation_base.ini";

// Parsing arguments: SatAttSim <data_path> [ini_file]
if (argc == 0) {
Expand Down

0 comments on commit e33a42d

Please sign in to comment.