Commit 3a92d58b authored by Lluis Jofre Cruanyes's avatar Lluis Jofre Cruanyes
Browse files

CoolProp model for transport coefficients started

parent 4203212f
Loading
Loading
Loading
Loading
Loading
+48 −8
Original line number Diff line number Diff line
@@ -20,9 +20,9 @@ CP_INC = -I$(CP_DIR) \
# COMPILER
CXX          = mpicxx.openmpi
# CPU FLAGS
CXXFLAGS     = -Ofast -Wall -std=c++17 -Wno-unknown-pragmas -Wno-unused-variable -I$(PROJECT_PATH) $(CP_INC) -DFMT_HEADER_ONLY -DCOOLPROP_LIB -include $(PROJECT_PATH)/externals/boost_fix.h
CXXFLAGS     = -Ofast -Wall -std=c++17 -Wno-unknown-pragmas -Wno-unused-variable -I$(PROJECT_PATH) $(CP_INC) -DFMT_HEADER_ONLY -DCOOLPROP_LIB -DMINIZ_NO_ZLIB_APIS -include $(PROJECT_PATH)/externals/boost_fix.h
## CPU-GPU FLAGS
#CXXFLAGS     = -fast -acc -gpu=cc75,mem:separate:pinnedalloc -Minfo=accel -O3 -Wall -std=c++17 -I$(PROJECT_PATH) $(CP_INC) -DFMT_HEADER_ONLY -DCOOLPROP_LIB -include $(PROJECT_PATH)/externals/boost_fix.h
#CXXFLAGS     = -fast -acc -gpu=cc75,mem:separate:pinnedalloc -Minfo=accel -O3 -Wall -std=c++17 -I$(PROJECT_PATH) $(CP_INC) -DFMT_HEADER_ONLY -DCOOLPROP_LIB -DMINIZ_NO_ZLIB_APIS -include $(PROJECT_PATH)/externals/boost_fix.h
# CUDA_AWARE MPI FLAG
CXXFLAGS += -D_GPU_AWARE_MPI_DEACTIVATED_=1
# UBUNTU - LINUX
@@ -65,6 +65,8 @@ else ifeq ($(EXTRACTED_TRANSPORT_COEFFICIENTS_MODEL), LOW_PRESSURE_GAS)
        TRANSPORT_COEFFICIENTS_MODEL = LowPressureGasTransportCoefficients
else ifeq ($(EXTRACTED_TRANSPORT_COEFFICIENTS_MODEL), HIGH_PRESSURE)
        TRANSPORT_COEFFICIENTS_MODEL = HighPressureTransportCoefficients
else ifeq ($(EXTRACTED_TRANSPORT_COEFFICIENTS_MODEL), COOLPROP)
        TRANSPORT_COEFFICIENTS_MODEL = CoolPropTransportCoefficients	
endif
EXTRACTED_RIEMANN_SOLVER_SCHEME := $(shell grep "riemann_solver_scheme" $(CONFIG_FILE) | sed -n "s/.*'\([^']*\)'.*/\1/p")
RIEMANN_SOLVER_SCHEME = dummy
@@ -114,19 +116,57 @@ preprocess:

# ! BUILD THE COOLPROP STATIC LIBRARY AUTOMATICALLY ! #
$(CP_LIB_FILE): $(CP_SOURCES)
	@echo "Building CoolProp static library..."
	# Generate dummy versioning files if they don't exist
	@echo "----------------------------------------------------------"
	@echo "Building CoolProp static library (Manual Build)..."
	@echo "----------------------------------------------------------"
	# 1. Core Versioning & Global Types (The central "injection" point)
	@echo 'std::string gitrevision = "manual_build";' > $(CP_DIR)/src/gitrevision.h
	@echo 'char version [] = "6.6.0";' > $(CP_DIR)/src/cpversion.h
	# Now compile
	$(CXX) $(CXXFLAGS) -fPIC -c $(CP_INC) $(CP_DIR)/src/*.cpp
	@echo 'typedef unsigned long uLong;' >> $(CP_DIR)/src/cpversion.h
	@echo 'typedef unsigned long mz_ulong;' >> $(CP_DIR)/src/cpversion.h
	@echo '#define Z_BUF_ERROR (-5)' >> $(CP_DIR)/src/cpversion.h
	@echo 'extern "C" int uncompress(unsigned char *pDest, uLong *pDest_len, const unsigned char *pSource, uLong source_len);' >> $(CP_DIR)/src/cpversion.h
	@echo 'extern "C" int compress(unsigned char *pDest, uLong *pDest_len, const unsigned char *pSource, uLong source_len);' >> $(CP_DIR)/src/cpversion.h
	# 2. Helmholtz Backend Mocks
	@echo 'std::string mixture_departure_functions_JSON = "[]";' > $(CP_DIR)/src/Backends/Helmholtz/mixture_departure_functions_JSON.h
	@echo 'std::string mixture_binary_pairs_JSON = "[]";' > $(CP_DIR)/src/Backends/Helmholtz/mixture_binary_pairs_JSON.h
	@echo 'std::string predefined_mixtures_JSON = "[]";' > $(CP_DIR)/src/Backends/Helmholtz/predefined_mixtures_JSON.h
	@echo 'std::string all_fluids_JSON = "[]";' > $(CP_DIR)/src/Backends/Helmholtz/Fluids/all_fluids_JSON.h
	# 3. Incbin Mocking (Now depends on cpversion.h for types)
	@printf '#ifndef INCBIN_H\n#define INCBIN_H\n#include "cpversion.h"\n' > $(CP_DIR)/src/Backends/Helmholtz/Fluids/incbin.h
	@printf '#define INCBIN(name, file) \\\n    const unsigned char g ## name ## Data[] = {0}; \\\n    const unsigned int g ## name ## Size = 0;\n' >> $(CP_DIR)/src/Backends/Helmholtz/Fluids/incbin.h
	@printf '#define INCBIN_PTR(name) (g ## name ## Data)\n' >> $(CP_DIR)/src/Backends/Helmholtz/Fluids/incbin.h
	@printf '#define INCBIN_SIZE(name) (g ## name ## Size)\n' >> $(CP_DIR)/src/Backends/Helmholtz/Fluids/incbin.h
	@printf '#endif\n' >> $(CP_DIR)/src/Backends/Helmholtz/Fluids/incbin.h
	# 4. Other Backend Mocks
	@echo 'std::string all_incompressibles_JSON = "[]";' > $(CP_DIR)/src/Backends/Incompressible/all_incompressibles_JSON.h
	@echo 'std::string all_cubics_JSON = "[]";' > $(CP_DIR)/src/Backends/Cubics/all_cubics_JSON.h
	@echo 'std::string cubic_fluids_schema_JSON = "{}";' > $(CP_DIR)/src/Backends/Cubics/cubic_fluids_schema_JSON.h
	# 5. Miniz Implementation Mock (Provides actual symbols for the linker)
	@echo '#include "cpversion.h"' > $(CP_DIR)/src/miniz_mock.cpp
	@echo 'extern "C" int uncompress(unsigned char *pDest, uLong *pDest_len, const unsigned char *pSource, uLong source_len){ return 0; }' >> $(CP_DIR)/src/miniz_mock.cpp
	@echo 'extern "C" int compress(unsigned char *pDest, uLong *pDest_len, const unsigned char *pSource, uLong source_len){ return 0; }' >> $(CP_DIR)/src/miniz_mock.cpp
	# 6. Compilation
	$(CXX) $(CXXFLAGS) -c $(CP_INC) -I$(CP_DIR)/src \
		$(CP_DIR)/src/miniz_mock.cpp \
		$(wildcard $(CP_DIR)/src/*.cpp) \
		$(wildcard $(CP_DIR)/src/Backends/Helmholtz/*.cpp) \
		$(wildcard $(CP_DIR)/src/Backends/Helmholtz/Fluids/*.cpp) \
		$(wildcard $(CP_DIR)/src/Backends/Tabular/*.cpp) \
		$(wildcard $(CP_DIR)/src/Backends/PCSAFT/*.cpp) \
		$(wildcard $(CP_DIR)/src/Backends/Incompressible/*.cpp) \
		$(wildcard $(CP_DIR)/src/Backends/Cubics/*.cpp) \
		$(wildcard $(CP_DIR)/src/Backends/REFPROP/*.cpp)
	# 7. Archiving
	@echo "Packing objects into $(CP_LIB_FILE)..."
	ar rcs $(CP_LIB_FILE) *.o
	rm -f *.o
	@echo "----------------------------------------------------------"
	@echo "CoolProp library built successfully."
	@echo "----------------------------------------------------------"

build: $(OBJS) $(CP_LIB_FILE)
	$(CXX) $(CXXFLAGS) -o $(EXECUTABLE) $(MAIN) $(OBJS) $(INC_LIB) $(INC_DIR) $(CP_LIB_FILE) $(LDFLAGS)

	$(CXX) $(CXXFLAGS) -o $(EXECUTABLE) $(MAIN) $(OBJS) $(INC_DIR) $(CP_LIB_FILE) $(LDFLAGS)

# ! OPENACC STUFF TO AVOID PROBLEMS WITH POINTERS ... CAN BE REMOVED ONCE OPENACC ACCEPTS POINTERS WITH DERIVED CLASSES ! #
postprocess:
+1 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ fluid_flow_properties:
   # Transport coefficients models: CONSTANT (provide mu, kappa),
   # LOW_PRESSURE_GAS (provide reference dynamic viscosity, reference thermal conductivity, reference temperature, Sutherland's dynamic viscosity constant, Sutherland's thermal conductivity constant),
   # HIGH_PRESSURE (provide molecular weight, critical temperature, critical molar volume, acentric factor, dipole moment, association factor, NASA 7-coefficient polynomial)
   # COOLPROP (substance_name)
   transport_coefficients_model: 'CONSTANT'		  		# Transport coefficients model
   mu: 0.0                          					# Dynamic viscosity [Pa·s]
   kappa: 0.0                          					# Thermal conductivity [W/(m·K)]
+1 −0
Original line number Diff line number Diff line
std::string all_cubics_JSON = "[]";
+1 −0
Original line number Diff line number Diff line
std::string cubic_fluids_schema_JSON = "{}";
+1 −0
Original line number Diff line number Diff line
std::string all_fluids_JSON = "[]";
Loading