/** * @file ctsurf.cpp */ // clib header information #define CANTERA_USE_INTERNAL #include "ctsurf.h" // Cantera includes #include "cantera/thermo/SurfPhase.h" #include "cantera/kinetics/InterfaceKinetics.h" #include "kinetics/ImplicitSurfChem.h" #include "Cabinet.h" using namespace std; using namespace Cantera; inline SurfPhase& _surfphase(int n) { return dynamic_cast(Cabinet::item(n)); } inline InterfaceKinetics& _surfkin(int n) { return dynamic_cast(Cabinet::item(n)); } extern "C" { int surf_setsitedensity(int i, double s0) { try { _surfphase(i).setSiteDensity(s0); return 0; } catch (...) { return handleAllExceptions(-1, ERR); } } double surf_sitedensity(int i) { try { return _surfphase(i).siteDensity(); } catch (...) { return handleAllExceptions(DERR, DERR); } } int surf_setcoverages(int i, double* c) { try { _surfphase(i).setCoverages(c); return 0; } catch (...) { return handleAllExceptions(-1, ERR); } } int surf_setcoveragesbyname(int i, char* c) { try { _surfphase(i).setCoveragesByName(string(c)); return 0; } catch (...) { return handleAllExceptions(-1, ERR); } } int surf_getcoverages(int i, double* c) { try { _surfphase(i).getCoverages(c); return 0; } catch (...) { return handleAllExceptions(-1, ERR); } } int surf_setconcentrations(int i, double* c) { try { _surfphase(i).setConcentrations(c); return 0; } catch (...) { return handleAllExceptions(-1, ERR); } } int surf_getconcentrations(int i, double* c) { try { _surfphase(i).getConcentrations(c); return 0; } catch (...) { return handleAllExceptions(-1, ERR); } } }