Skip to content
Snippets Groups Projects
Commit ef32b0a3 authored by BaM's avatar BaM
Browse files

Merge branch 'ROOT2ROOT_cmake' into 'ROOT2ROOT_rebased'

Root2 root cmake

See merge request !50
parents 5f4639f4 5fb6da47
No related branches found
No related tags found
No related merge requests found
Showing
with 305 additions and 94 deletions
......@@ -173,3 +173,6 @@ xcuserdata/
# sftp configuration file
sftp-config.json
lib
bld
build
CMAKE_MINIMUM_REQUIRED(VERSION 3.0 FATAL_ERROR)
#Set the project name
PROJECT(Class)
# Set the cmake module find path
SET ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_LIST_DIR}/cmake)
# check for and enable c++11 support
INCLUDE(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
IF(COMPILER_SUPPORTS_CXX11)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
ELSE()
MESSAGE(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
ENDIF()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
# Find ROOT
LIST(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
FIND_PACKAGE(ROOT REQUIRED COMPONENTS TMVA)
MESSAGE("-- ROOT Root: ${ROOTSYS}")
MESSAGE("-- ROOT Include directory: ${ROOT_INCLUDE_DIR}")
MESSAGE("-- ROOT Library directories: ${ROOT_LIBRARY_DIRS}")
MESSAGE("-- ROOT Libraries: ${ROOT_LIBRARIES}")
MESSAGE("-- ROOT Root Use File : ${ROOT_USE_FILE}")
INCLUDE(${ROOT_USE_FILE})
INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${ROOT_INCLUDE_DIRS})
ADD_DEFINITIONS(${ROOT_CXX_FLAGS})
#Set CLASS variable
SET(CYCLASS_INCLUDE_DIRS $ROOT_INCLUDE_DIRS )
SET(LIBS ${LIBS} ${ROOT_LIBRARIES})
# Set install folder (durty to be change?)
SET(CMAKE_INSTALL_LIBDIR ${CMAKE_CURRENT_LIST_DIR}/lib)
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/lib)
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/lib)
MESSAGE( STATUS "CMAKE_INSTALL_LIBDIR :" ${CMAKE_INSTALL_LIBDIR})
MESSAGE( STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY :" ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
MESSAGE( STATUS "CMAKE_ARCHIVE_OUTPUT_DIRECTORY :" ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
# Go look into Source folder
ADD_SUBDIRECTORY(source)
MESSAGE( STATUS "IN INCLUDE ")
ADD_SUBDIRECTORY(include)
INCLUDE_DIRECTORIES( ${CLASS_HEADERS_DIR} )
MESSAGE( STATUS "IN EXTERNAL ")
ADD_SUBDIRECTORY(external)
MESSAGE( STATUS "IN SRC ")
ADD_SUBDIRECTORY(src)
MESSAGE( STATUS "IN MODEL ")
#ADD_SUBDIRECTORY(Model)
MESSAGE( STATUS "CLASS_SRC_FILE=" ${CLASS_SRC_FILE})
#ADD_LIBRARY(CLASSpkg_root STATIC ${CLASS_SRC_FILE} )
#ADD_SUBDIRECTORY(Model/Equivalence)
ADD_SUBDIRECTORY(Model/Irradiation)
ADD_SUBDIRECTORY(Model/XS)
MESSAGE( STATUS "CLASS_EQMODEL_SRC_FILE : " ${CLASS_EQMODEL_SRC_FILE})
MESSAGE( STATUS "CLASS_XSMODEL_SRC_FILE : " ${CLASS_XSMODEL_SRC_FILE})
MESSAGE( STATUS "CLASS_IRMODEL_SRC_FILE : " ${CLASS_IRMODEL_SRC_FILE})
INCLUDE_DIRECTORIES( ${CLASS_EQMODEL_HEADER_DIR} ${CLASS_IRMODEL_HEADER_DIR} ${CLASS_XSMODEL_HEADER_DIR} ${CLASS_HEADERS_DIR} )
MESSAGE( STATUS "CMAKE_LIBRARY_OUTPUT_DIRECTORY : " ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
ADD_LIBRARY(CLASSpkg SHARED ${CLASS_SRC_FILE} ${CLASS_EQMODEL_SRC_FILE} ${CLASS_XSMODEL_SRC_FILE} ${CLASS_IRMODEL_SRC_FILE})
target_link_libraries(CLASSpkg CLASSpkg_root)
LIST( APPEND CLASS_IRMODEL_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/IM_Matrix.cxx")
LIST( APPEND CLASS_IRMODEL_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/IM_RK4.cxx")
SET( CLASS_IRMODEL_SRC_FILE ${CLASS_IRMODEL_SRC_FILE} PARENT_SCOPE)
SET( CLASS_IRMODEL_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
#INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CLASS_HEADERS_DIR} )
#ADD_LIBRARY(CLASS_IRMODEL_LIBRARY STATIC ${CLASS_IRMODEL_SRC_FILE})
#TARGET_LINK_LIBRARIES(CLASS_IRMODEL_LIBRARY IR_MODEL)
......@@ -62,11 +62,9 @@ EvolutionData IM_Matrix::GenerateEvolutionData(IsotopicVector isotopicvector, Ev
map<ZAI, double > isotopicquantity = isotopicvector.GetIsotopicQuantity();
TMatrixT<double> N_0Matrix = TMatrixT<double>( fReverseMatrixIndex.size(),1) ;
for(int i = 0; i < (int)fReverseMatrixIndex.size(); i++)
N_0Matrix[i] = 0;
N_0Matrix[i][0] = 0;
map<ZAI, double >::iterator it ;
for(int i = 0; i < (int)fReverseMatrixIndex.size(); i++)
N_0Matrix[i] = 0;
for(it = isotopicquantity.begin(); it != isotopicquantity.end(); it++)
{
......@@ -113,7 +111,7 @@ EvolutionData IM_Matrix::GenerateEvolutionData(IsotopicVector isotopicvector, Ev
TMatrixT<double> FissionEnergy = TMatrixT<double>(fReverseMatrixIndex.size(),1);
for(int i = 0; i < (int)fReverseMatrixIndex.size(); i++)
FissionEnergy[i] = 0;
FissionEnergy[i][0] = 0;
{
map< ZAI, int >::iterator it;
......
......@@ -57,6 +57,8 @@ IM_RK4::IM_RK4(CLASSLogger* log):IrradiationModel(log), DynamicalSystem()
EvolutionData IM_RK4::GenerateEvolutionData(IsotopicVector isotopicvector, EvolutionData XSSet, double Power, double cycletime)
{
DBGL
if(fFastDecay.size() == 0)
{
NuclearDataInitialization();
......@@ -74,11 +76,9 @@ EvolutionData IM_RK4::GenerateEvolutionData(IsotopicVector isotopicvector, Evolu
map<ZAI, double > isotopicquantity = isotopicvector.GetIsotopicQuantity();
TMatrixT<double> N_0Matrix = TMatrixT<double>( fReverseMatrixIndex.size(),1) ;
for(int i = 0; i < (int)fReverseMatrixIndex.size(); i++)
N_0Matrix[i] = 0;
N_0Matrix[i][0] = 0;
map<ZAI, double >::iterator it ;
for(int i = 0; i < (int)fReverseMatrixIndex.size(); i++)
N_0Matrix[i] = 0;
for(it = isotopicquantity.begin(); it != isotopicquantity.end(); it++)
{
......@@ -127,7 +127,7 @@ EvolutionData IM_RK4::GenerateEvolutionData(IsotopicVector isotopicvector, Evolu
TMatrixT<double> FissionEnergy = TMatrixT<double>(fReverseMatrixIndex.size(),1);
for(int i = 0; i < (int)fReverseMatrixIndex.size(); i++)
FissionEnergy[i] = 0;
FissionEnergy[i][0] = 0;
{
map< ZAI, int >::iterator it;
......@@ -191,7 +191,7 @@ EvolutionData IM_RK4::GenerateEvolutionData(IsotopicVector isotopicvector, Evolu
SetTheNucleiVectorToZero();
SetTheMatrix(BatemanMatrix);
SetTheNucleiVector(NEvolutionMatrix);
SetTheNucleiVector(NEvolutionMatrix);
RungeKutta(fTheNucleiVector, timevector[i]+TStepMax/InsideStep*k, timevector[i]+TStepMax/InsideStep*(k+1), fNVar);
......@@ -265,7 +265,15 @@ EvolutionData IM_RK4::GenerateEvolutionData(IsotopicVector isotopicvector, Evolu
CaptureXSMatrix.clear();
n2nXSMatrix.clear();
DBGL
return GeneratedDB;
//IsotopicVector IV_ = isotopicvector/isotopicvector.GetSumOfAll();
//double nucs_ = isotopicvector.GetSumOfAll();
//EvolutionData EV_ = GeneratedDB/nucs_;
//fKnownEvolution.insert(pair<IsotopicVector, EvolutionData> ( IV_, EV_));
//cout << fKnownEvolution.size() << std::endl;
return GeneratedDB;
}
......
LIST( APPEND CLASS_XSMODEL_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/XSM_CLOSEST.cxx")
LIST( APPEND CLASS_XSMODEL_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/XSM_MLP.cxx")
SET( CLASS_XSMODEL_SRC_FILE ${CLASS_XSMODEL_SRC_FILE} PARENT_SCOPE)
SET( CLASS_XSMODEL_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
#INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CLASS_HEADERS_DIR} )
#ADD_LIBRARY(CLASS_XSMODEL_LIBRARY STATIC ${CLASS_XSMODEL_SRC_FILE})
#TARGET_LINK_LIBRARIES(CLASS_XSMODEL_LIBRARY XS_MODEL)
#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
SET( CLASS_EXTERN_HEADER_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
......@@ -84,7 +84,7 @@ class CLASSBackEnd : public CLASSFacility
bool GetStorageType () const; //!< Return the storageType : True if it is a Storage
IsotopicVector GetIV ( int i ) const;
#ifndef __CINT__
#ifndef __ROOTCLING__
DecayDataBank* GetDecayDataBank (); //!< Return the pointer to the decay DataBank
CLASSBackEnd* GetOutBackEndFacility () const; //!< Return the pointer to the OUtBackEndFacility
virtual std::map<cSecond,int> GetTheBackEndTimePath(); //!< Get the full path
......@@ -102,7 +102,7 @@ class CLASSBackEnd : public CLASSFacility
void SetIVArrayArrivalTime ( std::vector< cSecond > const& IVArrayArrivalTime); //!< Set Arrival Time in Back end
#ifndef __CINT__
#ifndef __ROOTCLING__
void SetDecayDataBank ( DecayDataBank* decayDB ); //!< Set the Decay DataBank
virtual void SetOutBackEndFacility ( CLASSBackEnd* befacility ); //!< Set an out Facility
#endif
......@@ -133,14 +133,14 @@ class CLASSBackEnd : public CLASSFacility
std::vector<IsotopicVector> fIVArray; ///< Vector containning all the fuel stored.
std::vector<cSecond> fIVArrayArrivalTime; ///< Vector containning the arrival time of each fuel in [s]
#ifndef __CINT__
#ifndef __ROOTCLING__
CLASSBackEnd* fOutBackEndFacility; //!< Facility getting the fuel at the end of the cycle
#endif
private :
bool fIsStorageType; //!< True if there is no out CLASSBackEnd facility (like a Storage...)
#ifndef __CINT__
#ifndef __ROOTCLING__
DecayDataBank* fDecayDataBase; //!< Pointer to the DecayDataBank
#endif
......@@ -159,7 +159,7 @@ inline IsotopicVector CLASSBackEnd::GetIV ( int i ) const
else { return IsotopicVector(); }
}
#ifndef __CINT__
#ifndef __ROOTCLING__
inline DecayDataBank* CLASSBackEnd::GetDecayDataBank () { return fDecayDataBase; }
inline CLASSBackEnd* CLASSBackEnd::GetOutBackEndFacility () const { return fOutBackEndFacility; }
#endif
......@@ -168,7 +168,7 @@ inline void CLASSBackEnd::SetIsStorageType ( bool val ) { fIsStorageType = val;
inline void CLASSBackEnd::SetIVArrayArrivalTime ( std::vector< cSecond > const& IVArrayArrivalTime){ fIVArrayArrivalTime = IVArrayArrivalTime; }
inline void CLASSBackEnd::SetIVArray ( std::vector< IsotopicVector > const& ivarray ){ fIVArray = ivarray; }
#ifndef __CINT__
#ifndef __ROOTCLING__
inline void CLASSBackEnd::SetDecayDataBank ( DecayDataBank* decayDB )
{ fDecayDataBase = decayDB; }
inline void CLASSBackEnd::SetOutBackEndFacility ( CLASSBackEnd* befacility )
......
......@@ -135,8 +135,9 @@ public :
cSecond GetCycleTime() const { return fCycleTime; } //!< Return the cycle time of the Facility
cSecond GetCreationTime() const { return fCreationTime; } //!< Return the creation time of the Facility
cSecond GetLifeTime() const { return fLifeTime; } //!< Return the life time of the Facility
#ifndef __ROOTCLING__
Scenario* GetParc() { return fParc; } //!< return the pointer to the Park
#endif
IsotopicVector GetCumulativeIVIn() { return fCumulativeIVIn;} //!< return the cumulative sum of all incoming IV
IsotopicVector GetCumulativeIVOut() { return fCumulativeIVOut;} //!< return the cumulative sum of all outcoming IV
......@@ -148,8 +149,10 @@ public :
*/
//@{
void SetId(int id) { fId = id; } //!< Set The Facility Parc'Id
#ifndef __ROOTCLING__
void SetParc(Scenario* parc) { fParc = parc; } //!< Set the Pointer to the Parc
void SetFacilityType(int type) { fFacilityType = type; } //!< Set the facility type :
#endif
void SetFacilityType(int type) { fFacilityType = type; } //!< Set the facility type :
/// \li 2 reactor Studown
/// \li 4 start/End of reactor cycle,
/// \li 8 end of Cooling,
......@@ -204,9 +207,9 @@ private :
/// \li 8 Pool,
/// \li 16 FabricationPlant.
#ifndef __ROOTCLING__
Scenario* fParc; //!< Pointer to the main Scenario
#endif
cSecond fCreationTime; ///< CLASS Universal Time of Creation [s]
cSecond fLifeTime; ///< Time of life Of the Reactor (operating's duration) [s]
......
......@@ -21,7 +21,7 @@
using namespace std;
#ifndef __CINT__
#ifndef __ROOTCLING__
#define ERROR if(fLog)if(fLog->GetMaxOutPutLVL() >= 0) fLog->E() << "!!!ERROR!!! " << "[" << __FILE__ << ":" << __FUNCTION__ << "] "
#define WARNING if(fLog)if(fLog->GetMaxOutPutLVL() >= 1) fLog->W() << "!!WARNING!! " << "[" << __FILE__ << ":" << __FUNCTION__ << "] "
......
......@@ -79,7 +79,7 @@ public :
//@{
#ifndef __CINT__
#ifndef __ROOTCLING__
void SetLog(CLASSLogger* log) { fLog = log;} //!< Set the CLASSLogger
CLASSLogger* GetLog() { return fLog; } //!< Return the Pointer to the Log
#endif
......@@ -88,7 +88,7 @@ public :
using TNamed::SetName;
using TNamed::GetName;
protected :
#ifndef __CINT__
#ifndef __ROOTCLING__
CLASSLogger* fLog; //!< Pointer to the Log
#endif
......
#INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
EXECUTE_PROCESS(COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/../Model/Equivalence ${CMAKE_CURRENT_SOURCE_DIR})
EXECUTE_PROCESS(COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/../Model/Irradiation ${CMAKE_CURRENT_SOURCE_DIR})
EXECUTE_PROCESS(COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/../Model/XS ${CMAKE_CURRENT_SOURCE_DIR})
EXECUTE_PROCESS(COMMAND ln -s ${CMAKE_CURRENT_SOURCE_DIR}/../external ${CMAKE_CURRENT_SOURCE_DIR})
SET( CLASS_HEADERS_DIR ${CMAKE_CURRENT_SOURCE_DIR} PARENT_SCOPE)
INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/Equivalence:${CMAKE_CURRENT_SOURCE_DIR}/Irradiation:${CMAKE_CURRENT_SOURCE_DIR}/XS)
......@@ -23,7 +23,7 @@
using namespace std;
class EquivalenceModel;
#ifndef __CINT__
#ifndef __ROOTCLING__
typedef void (EquivalenceModel::*EQM_MthPtr)( const string & );
#endif
......@@ -273,7 +273,7 @@ class EquivalenceModel : public CLASSObject
#ifndef __CINT__
#ifndef __ROOTCLING__
map<string, EQM_MthPtr> fKeyword;
#endif
......
......@@ -137,6 +137,7 @@ public :
void SetReactorType(string reactortype) { fReactorType = reactortype; } ///< Set the reactor type (e.g PWR, FBR-Na,...)
void SetFuelType(string fueltype) { fFuelType = fueltype; } ///< Set the fuel type (e.g MOX,UOX,...)
void SetPower(double power) { fPower = power; } ///< Set the power of the EvolutionData [W]
#ifndef __ROOTCLING__
void SetFlux(TGraph* flux ) { fFlux = flux; } ///< Set the neutron flux of the EvolutionData [cm^{-2}.s^{-1}]
void SetKeff(TGraph* keff ) { fKeff = keff; } ///< Set the keff evolution for the EvolutionData
......@@ -148,7 +149,7 @@ public :
void SetCaptureXS(map<ZAI, TGraph*> maptoinsert) { fCaptureXS = maptoinsert;} ///< Set capture cross section map
void Setn2nXS(map<ZAI, TGraph*> maptoinsert) { fn2nXS = maptoinsert;} ///< Set (n,2n) cross section map
#endif
void Print(string filename); //!< Print EvolutionData in a .dat format in a file of Name filename
//@}
......@@ -163,7 +164,7 @@ public :
*/
//@{
#ifndef __CINT__
#ifndef __ROOTCLING__
map<ZAI ,TGraph* > GetInventoryEvolution() const { return fInventoryEvolution; } //!< return the EvolutionData map
map<ZAI ,TGraph* > GetFissionXS() const { return fFissionXS; } //!< return the fission cross section map
map<ZAI ,TGraph* > GetCaptureXS() const { return fCaptureXS; } //!< return the capture cross section map
......@@ -228,7 +229,7 @@ protected :
string fDB_file; ///!< path to the DataBase file
#ifndef __CINT__
#ifndef __ROOTCLING__
map<ZAI ,TGraph* > fInventoryEvolution; //!< evolution map
map<ZAI ,TGraph* > fFissionXS; //!< fission cross section map
map<ZAI ,TGraph* > fCaptureXS; //!< capture cross section map
......
......@@ -99,23 +99,23 @@ public :
\name Set Method
*/
//@{
#ifndef __ROOTCLING__
void SetDecayDataBank(DecayDataBank* decayDB) {fDecayDataBase = decayDB;} //! Set the Decay DataBank
void SetSubstitutionMaterialFromIV(string keyword, IsotopicVector SubstitutionIV) //!< If the construction fails : it creates a substitution material according to the IV defined by the user
{fSubstitutionMaterialFromIV[keyword] = true; fSubstitutionIV[keyword]= SubstitutionIV;}
#endif
void SetFiFo(bool bval = true) { if(bval) fStorageManagement=kpFiFo; else fStorageManagement=kpLiFo ;} //!< Set the chronological priority (true for chronological, false instead).Equivalent to SetStorageManagement(kpFiFo) or SetStorageManagement(kpLiFo)
void SetStorageManagement(StorageManagement SM){fStorageManagement = SM ;} //!< The storage management : either kpFiFo, kpLiFo , kpMix or kpRand
void SetSubstitutionMaterialFromIV(string keyword, IsotopicVector SubstitutionIV) //!< If the construction fails : it creates a substitution material according to the IV defined by the user
{fSubstitutionMaterialFromIV[keyword] = true; fSubstitutionIV[keyword]= SubstitutionIV;}
void SetSubstitutionFuel(EvolutionData fuel); //!< To use a substitution fuel if the fabrication fail (not enough material in stock)
void SetSeparationManagement(bool bval = true) { fIsSeparationManagement = bval;} //!< Set the separation managmeent for the fabrication plant
#ifndef __ROOTCLING__
void AddReactor(int reactorid, double creationtime)
{ fReactorNextStep.insert( pair<int,cSecond> (reactorid, (cSecond)creationtime-GetCycleTime() ) ); } //!< Add a new reactor to be filled with the fresh fuel build by the FabricationPlant
#ifndef __CINT__
void SetReUsableStorage(Storage* store) { fReUsable = store; fIsReusable = true;} //!< Set the Storage where all the separated matetial not used in the fabrication process will be sent. (if not present it goes to WASTE)
#endif
......@@ -123,7 +123,7 @@ public :
//@}
#ifndef __CINT__
#ifndef __ROOTCLING__
void AddStorage(string keyword, Storage* Stock, double MassFractionMin = 0, double MassFractionMax = 1., int Priority = 0) ; //!< Fill the storage vector for a list
void AddInfiniteStorage(string keyword, double MassFractionMin = 0, double MassFractionMax = 1., int Priority = 0); //!< Creates an infinite stock of this material according to the list defined in the EqM
......@@ -142,7 +142,7 @@ public :
*/
//@{
#ifndef __CINT__
#ifndef __ROOTCLING__
map < string , vector <Storage*> > GetAllStorage() {return fStorage;} //!< Return the map containing all the storage vectors (useful in CLASS Reactor to check list consistency)
vector<Storage*> GetStorage(string keyword) { return fStorage[keyword]; } //!< Return the Pointer to Storage associated to a StreamList
......@@ -151,7 +151,6 @@ public :
StorageManagement GetStorageManagement(){return fStorageManagement;} ///< The storage management : either kpFiFo, kpLiFo , kpMix or kpRand
#endif
IsotopicVector GetDecay(IsotopicVector isotopicvector, cSecond t); //!< Get IsotopicVector Decay at time t
map<int, IsotopicVector > GetReactorFuturIncome() const
......@@ -160,6 +159,7 @@ public :
map < string, double> GetStreamListFPMassFractionMax(){return fStreamListFPMassFractionMax;} //!< Get the map of allowed max fractions
map < string, double> GetStreamListFPMassFractionMin(){return fStreamListFPMassFractionMin;} //!< Get the map of allowed min fractions
#endif
//@}
......@@ -173,6 +173,7 @@ public :
IsotopicVector GetSeparationEfficiencyAt(cSecond time);
#ifndef __ROOTCLING__
void Evolution(cSecond t); //!< Perform the FabricationPlant evolution
void DumpStock(map <string , vector<double> > LambdaArray); //!< Update the Stock status after building process
void TakeReactorFuel(int ReactorId) ; //!< Remove the fuel of reactor ReactorId from stock
......@@ -181,9 +182,7 @@ public :
IsotopicVector BuildFuelFromEqModel(map <string , vector<double> > LambdaArray); //!<Build the fresh fuel for the reactor according the results of the EquivalenceModel (@see EquivalenceModel)
void BuildArray(int ReactorId, cSecond ReactorLoadingTime); //!< virtualy extract fissile nuclei from Storage according EquivalenceModel fStreamList and make it virtually decay FabricationTime
#ifndef __CINT__
void BuildFuelForReactor(int ReactorId, cSecond t); //!< Build a fuel for the reactor ReactorId
#endif
void SortArray(); //!< Sort IsotopicVector array according priority preferences (given by key in YourFabPlant->SetStorageManagement(key);)
......@@ -192,6 +191,7 @@ public :
void SortMix(vector<IsotopicVector> &IVArray, vector<cSecond> &TimeArray, vector< pair<int,int> > &AdressArray);
void SortRandom(vector<IsotopicVector> &IVArray, vector<cSecond> &TimeArray, vector< pair<int,int> > &AdressArray);
#endif
//@}
......@@ -208,7 +208,7 @@ protected:
map<int, cSecond > fReactorNextStep; ///< Next time step to build a new fuel
#ifndef __CINT__
#ifndef __ROOTCLING__
map< int,EvolutionData > fReactorFuturDB; ///< List of the futur EvolutionData use in the reactor
#endif
map< int,IsotopicVector > fReactorFuturIV; ///< List of the futur fuel IsotopicVector used in the reactor
......@@ -218,6 +218,7 @@ protected:
bool fSubstitutionFuel; //!< True if a substitution fuel as been set
#ifndef __ROOTCLING__
void FabricationPlantEvolution(cSecond t); //!< Deal the FabricationPlant evolution
void ResetArrays(); //!< Empty Arrays
......@@ -228,7 +229,6 @@ protected:
map < string , bool> fStreamListFPIsBuffer; ///< Map that contains lists of stream according to the EqModel saying if fuel buffer
#ifndef __CINT__
map < string , vector <Storage*> > fStorage; //!< Pointer to the Storages defined for each list
map < string , vector <IsotopicVector> > fStreamArray; //!< The vector of isotopicVector of each material and each stock
......
......@@ -46,7 +46,7 @@ public :
//@{
Pool(); ///< Normal Constructor.
#ifndef __ROOTCLING__
//{
/// Special Constructor.
/*!
......@@ -69,7 +69,7 @@ public :
Pool(CLASSLogger* log, CLASSBackEnd* backend,
cSecond coolingtime = 5*cYear); //!<
//}
#endif
~Pool(); ///< Normal Destructor.
//@}
......@@ -83,12 +83,12 @@ public :
\name Set Method
*/
//@{
#ifndef __ROOTCLING__
void SetOutBackEndFacility(CLASSBackEnd* befacility)
{ fOutBackEndFacility = befacility;
SetIsStorageType(false);
fPutToWaste = false; } //!< Set the pointer to facility at the back end of the pool
#endif
void SetPutToWaste(bool val) { fPutToWaste = val; } //!< Set true if IV goes to waste after cooling false instead
void SetIVArray(vector<IsotopicVector> ivarray); //! not use there (does nothing)
......
......@@ -61,6 +61,7 @@ class Reactor : public CLASSFacility
Reactor(CLASSLogger* log);
//}
#ifndef __ROOTCLING__
//{
/// Special Constructor for reprocessed fuel using cycletime and Burn-Up.
/*!
......@@ -172,7 +173,7 @@ class Reactor : public CLASSFacility
cSecond creationtime, cSecond lifetime,
cSecond cycletime, double HMMass, double BurnUp);
//}
#endif
~Reactor(); ///< Normal Destructor
//@}
......@@ -190,25 +191,31 @@ class Reactor : public CLASSFacility
IsotopicVector GetIVReactor() const { return GetInsideIV(); } //!< Return the IV contain in the Reactor
IsotopicVector GetIVBeginCycle() const { return fIVBeginCycle; } //!< Return the Starting Cycle IV
//!< (Note : IVBegin != IVIn, only if using ReactorScheduler)
IsotopicVector GetIVOutCycle() const { return fIVOutCycle; } //!< Return the Out Cycle IV
IsotopicVector GetIVOutCycle() const { return fIVOutCycle; } //!< Return the Out Cycle IV
IsotopicVector GetIVInCycle() const { return fIVInCycle; } //!< Return the In Cycle IV
//!< (Note : IVIn != IVBegin, only if using ReactorScheduler)
cSecond GetNextCycleTime(cSecond time);
bool IsFuelFixed() const { return fFixedFuel; } //!< True if using fixed fuel, False otherwise
bool IsFuelFixed() const { return fFixedFuel; } //!< True if using fixed fuel, False otherwise
double GetHeavyMetalMass() const { return fHeavyMetalMass; } //!< Return the HeavyMetal Mass in the Core at the begining of the cycle
double GetBurnUp() const { return fBurnUp; } //!< Return the Burn Up of the Fuel at the end of the cycle
double GetCapacityFactor() const { return fCapacityFactor; } //!< Return the capacity factor of the reactor
double GetPower() const { return fPower; } //!< Return the cycle time of the Reactor
#ifndef __CINT__
double GetBurnUp() const { return fBurnUp; } //!< Return the Burn Up of the Fuel at the end of the cycle
double GetCapacityFactor() const { return fCapacityFactor; } //!< Return the capacity factor of the reactor
double GetPower() const { return fPower; } //!< Return the cycle time of the Reactor
#ifndef __ROOTCLING__
map<cSecond, double> GetPowerEvolution(){return fPowerEvolution;} //!<Get Reactor Power Evolution
map<cSecond, double> GetHMMassEvolution(){return fHMMassEvolution;} //!<Get Reactor HMMassEvolution
map<cSecond, double> GetSchedulePowerEvolution(){return fSchedulePowerEvolution;} //!<Get Reactor theoritical Power evolution following Scheduler
map<cSecond, double> GetScheduleHMMassEvolution(){return fScheduleHMMassEvolution;} //!<Get Reactor theoritical HMMass Evolution following Scheduler
EvolutionData GetEvolutionDB() const { return fEvolutionDB; } //!< Return the Evolution database of the fuel
EvolutionData GetEvolutionDB() const { return fEvolutionDB; } //!< Return the Evolution database of the fuel
CLASSBackEnd* GetOutBackEndFacility() const { return fOutBackEndFacility; } //!< Return the pointer to Associeted BackEnd Facility
FabricationPlant* GetFabricationPlant() const { return fFabricationPlant; } //!< Return the pointer to the FabricationPlant
FabricationPlant* GetFabricationPlant() const { return fFabricationPlant; } //!< Return the pointer to the FabricationPlant
ReactorScheduler* GetScheduler() const { return fReactorScheduler; } ///< return the ReactorScheduler
ReactorScheduler* GetScheduler() const { return fReactorScheduler; } ///< return the ReactorScheduler
#endif
//@}
......@@ -222,27 +229,28 @@ class Reactor : public CLASSFacility
\name Set Method
*/
//@{
#ifndef __ROOTCLING__
void SetReactorScheduler(ReactorScheduler* reactorscheduler) { fReactorScheduler = reactorscheduler; } //!< Set the ReactorScheduler
void SetHMMass(double Mass) {fHeavyMetalMass = Mass;} //!< Set the heavy metal mass in the core at the begining of the cycle
void SetCycleTime(double cycletime); //!< Set the cycle time (Power fixed)
void SetPower(double Power); //!< Set the power (burnup cte)
void SetBurnUp(double BU); //!< Set the burnUp reach at end of cycle (Power cte)
#endif
void SetHMMass(double Mass) {fHeavyMetalMass = Mass;} //!< Set the heavy metal mass in the core at the begining of the cycle
void SetCycleTime(double cycletime); //!< Set the cycle time (Power fixed)
void SetPower(double Power); //!< Set the power (burnup cte)
void SetBurnUp(double BU); //!< Set the burnUp reach at end of cycle (Power cte)
void SetIVReactor(IsotopicVector isotopicvector) { fInsideIV = isotopicvector; } //!< Set the IV inside the Reactor core
void SetIVBeginCycle(IsotopicVector isotopicvector) { fIVBeginCycle = isotopicvector;} //!< Set the IV at the beginging of the Reactor cycle
void SetIVOutCycle(IsotopicVector isotopicvector){ fIVOutCycle = isotopicvector;} //!< Set the IV Going out at the end of the cycle
void SetIVInCycle(IsotopicVector isotopicvector) { fIVInCycle = isotopicvector;} //!< Set the IV coming In at the beginning of the cycle
void SetIVReactor(IsotopicVector isotopicvector) { fInsideIV = isotopicvector; } //!< Set the IV inside the Reactor core
void SetIVBeginCycle(IsotopicVector isotopicvector) { fIVBeginCycle = isotopicvector;} //!< Set the IV at the beginging of the Reactor cycle
void SetIVOutCycle(IsotopicVector isotopicvector){ fIVOutCycle = isotopicvector;} //!< Set the IV Going out at the end of the cycle
void SetIVInCycle(IsotopicVector isotopicvector) { fIVInCycle = isotopicvector;} //!< Set the IV coming In at the beginning of the cycle
#ifndef __CINT__
#ifndef __ROOTCLING__
void SetOutBackEndFacility(CLASSBackEnd* pool) { fOutBackEndFacility = pool; } //!< Return the pointer to OutBackEnd Facility
void SetStorage(Storage* storage) { fStorage = storage; fIsStorage = true;} //!< Set the pointer to the Storage
void SetFabricationPlant(FabricationPlant* FP) { fFabricationPlant = FP;} //!< Set the Pointer to the FabricationPlant
void SetEvolutionDB(EvolutionData evolutionDB); //!< Set the pointer to the DB evolution of the Reactor
void SetOutBackEndFacility(CLASSBackEnd* pool) { fOutBackEndFacility = pool; } //!< Return the pointer to OutBackEnd Facility
void SetStorage(Storage* storage) { fStorage = storage; fIsStorage = true;} //!< Set the pointer to the Storage
void SetFabricationPlant(FabricationPlant* FP) { fFabricationPlant = FP;} //!< Set the Pointer to the FabricationPlant
void SetEvolutionDB(EvolutionData evolutionDB); //!< Set the pointer to the DB evolution of the Reactor
#endif
using CLASSFacility::SetName;
......@@ -264,21 +272,33 @@ class Reactor : public CLASSFacility
void Dump(); //!< Write modification (IV In/Out, filling the TF...)
void SetNewFuel(EvolutionData ivdb); //!< Change the Evolutive DB of the Reactor
void CheckListConsistency(PhysicsModels* fueltypeDB, FabricationPlant* fabricationplant); //!< Check if FP/EqM lists are identical
#ifndef __CINT__
#ifndef __ROOTCLING__
void AddScheduleEntry(cSecond time, ReactorModel* Model, double BurnUp, double Power, double HMMass) //!< Add A new schedule entry
{ if(Model->GetPhysicsModels() && !fFabricationPlant )
{ERROR<<"You must add a FabicationPlant to Reactor " <<GetName()
<<"\n"<< "Use YourReactor->AddFabricationPlant(YourFP);"<<endl;exit(0);}
fReactorScheduler->AddEntry( time, Model, BurnUp, Power*fCapacityFactor, HMMass);
} //!< Change the Model and/or BurnUp and/or Power and/or HMMass from time time
fSchedulePowerEvolution.insert( pair<cSecond, double>(time, Power*fCapacityFactor));
fScheduleHMMassEvolution.insert( pair<cSecond, double>(time, HMMass));
}
//!< Change the Model and/or BurnUp and/or Power and/or HMMass from time time
void AddScheduleEntry(cSecond time, EvolutionData* Model, double BurnUp, double Power, double HMMass)
{ fReactorScheduler->AddEntry( time, new ReactorModel(Model), BurnUp, Power*fCapacityFactor, HMMass); } //!< Change the Model and/or BurnUp and/or Power and/or HMMass from time time
{
fReactorScheduler->AddEntry( time, new ReactorModel(Model), BurnUp, Power*fCapacityFactor, HMMass);
fSchedulePowerEvolution.insert( pair<cSecond, double>(time, Power*fCapacityFactor));
fScheduleHMMassEvolution.insert( pair<cSecond, double>(time, HMMass));
}
//!< Change the Model and/or BurnUp and/or Power and/or HMMass from time time
void AddScheduleEntry(cSecond time, PhysicsModels* Model, double BurnUp, double Power, double HMMass)
{ if(!fFabricationPlant)
{ERROR<<"You must add a FabicationPlant to Reactor " <<GetName()
<<"\n"<< "Use YourReactor->AddFabricationPlant(YourFP);"<<endl;exit(0);}
fReactorScheduler->AddEntry( time, new ReactorModel(Model), BurnUp, Power*fCapacityFactor, HMMass);
fSchedulePowerEvolution.insert( pair<cSecond, double>(time, Power*fCapacityFactor));
fScheduleHMMassEvolution.insert( pair<cSecond, double>(time, HMMass));
} //!< Change the Model and/or BurnUp and/or Power and/or HMMass from time time
#endif
......@@ -288,39 +308,44 @@ class Reactor : public CLASSFacility
protected :
bool fFixedFuel; //!< true if the fuel is fixed (not reprocessed)
bool fIsStorage; //!< true if a storage has been define (to approximate the reprocessing using fixed fuel)
bool fFixedFuel; //!< true if the fuel is fixed (not reprocessed)
bool fIsStorage; //!< true if a storage has been define (to approximate the reprocessing using fixed fuel)
//********* Internal Parameter *********//
double fPower; ///< Power (in Watt)
double fElectricPower; ///< ElectrocPower (in Watt)
double fEfficiencyFactor; ///< ElectrocPower (in Watt)
double fCapacityFactor; ///< Capacity factor [0-1]
double fPower; ///< Power (in Watt)
double fElectricPower; ///< ElectrocPower (in Watt)
double fEfficiencyFactor; ///< ElectrocPower (in Watt)
double fCapacityFactor; ///< Capacity factor [0-1]
IsotopicVector fIVBeginCycle; ///< Fuel IV at the beginning of a cycle
IsotopicVector fIVInCycle; ///< IVBegin add at the beginning of the cycle
IsotopicVector fIVOutCycle; ///< IV wich get out at the end of a cycle
IsotopicVector fIVBeginCycle; ///< Fuel IV at the beginning of a cycle
IsotopicVector fIVInCycle; ///< IVBegin add at the beginning of the cycle
IsotopicVector fIVOutCycle; ///< IV wich get out at the end of a cycle
#ifndef __CINT__
EvolutionData fEvolutionDB; //!< Pointer to the actual evolution DataBase
CLASSBackEnd* fOutBackEndFacility; //!< Pointer to the BackEnd Facility which collect the spend fuel
FabricationPlant* fFabricationPlant; //!< Pointer to the FabricationPlant
#ifndef __ROOTCLING__
EvolutionData fEvolutionDB; //!< Pointer to the actual evolution DataBase
Storage* fStorage; //!< Pointer to the Stock (only for reprocessing fuel in fixed base...)
CLASSBackEnd* fOutBackEndFacility; //!< Pointer to the BackEnd Facility which collect the spend fuel
ReactorScheduler* fReactorScheduler; //!< Pointer to the ReactorScheduler
ReactorScheduler* fReactorScheduler; //!< Pointer to the ReactorScheduler
FabricationPlant* fFabricationPlant; //!< Pointer to the FabricationPlant
Storage* fStorage; //!< Pointer to the Stock (only for reprocessing fuel in fixed base...)
#endif
//********* Unfixed Fuel Parameter *********//
double fHeavyMetalMass; ///< In tons
double fBurnUp; ///< In GWd/tHM
double fHeavyMetalMass; ///< In tons
double fBurnUp; ///< In GWd/tHM
map < cSecond, double > fPowerEvolution; ///<Evolution Of Reactor Power
map < cSecond, double > fHMMassEvolution; ///<Evolution Of Reactor HM Mass
map < cSecond, double > fSchedulePowerEvolution; //!<Evolution Of theoritical Reactor Power following Scheduler
map < cSecond, double > fScheduleHMMassEvolution; //!<Evolution Of theoritical Reactor HMMass following Scheduler
ClassDef(Reactor,3);
ClassDef(Reactor,4);
};
......
......@@ -22,7 +22,7 @@ using namespace std;
class IsotopicVector;
class XSModel;
#ifndef __CINT__
#ifndef __ROOTCLING__
typedef void (XSModel::*XSM_MthPtr)( const string & ) ;
#endif
......@@ -115,7 +115,7 @@ class XSModel : public CLASSObject
map< ZAI, pair<double,double> > fZAILimits; //!< Fresh fuel range : map<ZAI<min edge ,max edge >>
#ifndef __CINT__
#ifndef __ROOTCLING__
map<string, XSM_MthPtr> fKeyword;
#endif
......
MESSAGE( STATUS "ROOTCINT... ")
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/CLASSObjectDict ${CLASS_HEADERS_DIR}/CLASSObject.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/CLASSFacilityDict ${CLASS_HEADERS_DIR}/CLASSFacility.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/CLASSBackEndDict ${CLASS_HEADERS_DIR}/CLASSBackEnd.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/StorageDict ${CLASS_HEADERS_DIR}/Storage.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/ReactorDict ${CLASS_HEADERS_DIR}/Reactor.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/FabricationPlantDict ${CLASS_HEADERS_DIR}/FabricationPlant.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/PoolDict ${CLASS_HEADERS_DIR}/Pool.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/SeparationPlantDict ${CLASS_HEADERS_DIR}/SeparationPlant.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/IsotopicVectorDict ${CLASS_HEADERS_DIR}/IsotopicVector.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/ZAIDict ${CLASS_HEADERS_DIR}/ZAI.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/EvolutionDataDict ${CLASS_HEADERS_DIR}/EvolutionData.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/DecayDataBankDict ${CLASS_HEADERS_DIR}/DecayDataBank.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/ScenarioDict ${CLASS_HEADERS_DIR}/Scenario.hxx )
ROOT_GENERATE_DICTIONARY( ${CMAKE_CURRENT_SOURCE_DIR}/ReactorSchedulerDict ${CLASS_HEADERS_DIR}/ReactorScheduler.hxx )
add_library(CLASSpkg_root STATIC CLASSBackEnd.cxx CLASSBackEndDict.cxx CLASSObject.cxx CLASSObjectDict.cxx CLASSFacility.cxx CLASSFacilityDict.cxx Storage.cxx StorageDict.cxx Reactor.cxx ReactorDict.cxx FabricationPlant.cxx FabricationPlantDict.cxx Pool.cxx PoolDict.cxx SeparationPlant.cxx SeparationPlantDict.cxx IsotopicVector.cxx IsotopicVectorDict.cxx ZAI.cxx ZAIDict.cxx EvolutionData.cxx EvolutionDataDict.cxx DecayDataBank.cxx DecayDataBankDict.cxx Scenario.cxx ScenarioDict.cxx ReactorScheduler.cxx ReactorSchedulerDict.cxx)
target_link_libraries(CLASSpkg_root ${ROOT_LIBRARIES})
MESSAGE( STATUS "... OK!")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CLASSLogger.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ZAI.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/IsotopicVector.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ZAIMass.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ZAIHeat.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ZAITox.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CLASSNucleiFiliation.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CLASSObject.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CLASSFacility.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/FabricationPlant.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Reactor.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CLASSBackEnd.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/SeparationPlant.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Storage.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Pool.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/DecayDataBank.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/DynamicalSystem.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/IrradiationModel.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/EquivalenceModel.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/XSModel.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/PhysicsModels.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/EvolutionData.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/ReactorScheduler.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/Scenario.cxx")
LIST( APPEND CLASS_SRC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/CLASSReader.cxx")
SET( CLASS_SRC_FILE ${CLASS_SRC_FILE} PARENT_SCOPE)
MESSAGE( STATUS "CLASS_SRC_FILE=" ${CLASS_SRC_FILE})
#INCLUDE_DIRECTORIES( ${CLASS_HEADERS_DIR} )
#ADD_LIBRARY(CLASS_LIBRARY STATIC ${CLASS_SRC_FILE} )
#TARGET_LINK_LIBRARIES(CLASS_LIBRARY SRC)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment