Skip to content

Commit

Permalink
[fortran] Switch to smart clib cabinets
Browse files Browse the repository at this point in the history
  • Loading branch information
ischoegl committed Mar 7, 2023
1 parent ff9544f commit 7efc12d
Showing 1 changed file with 22 additions and 17 deletions.
39 changes: 22 additions & 17 deletions src/fortran/fct.cpp
Expand Up @@ -16,17 +16,17 @@
#include "cantera/thermo/ThermoFactory.h"
#include "cantera/base/NoExitLogger.h"
#include "cantera/base/stringUtils.h"
#include "cantera/extensions/Cabinet.h"
#include "clib/clib_utils.h"
#include "cantera/kinetics/InterfaceKinetics.h"

#include "cantera/clib/clib_defs.h"
#include "cantera/clib/ct.h"

using namespace Cantera;

typedef Cabinet<ThermoPhase> ThermoCabinet;
typedef Cabinet<Kinetics> KineticsCabinet;
typedef Cabinet<Transport> TransportCabinet;
typedef SharedCabinet<ThermoPhase> ThermoCabinet;
typedef SharedCabinet<Kinetics> KineticsCabinet;
typedef SharedCabinet<Transport> TransportCabinet;

typedef integer status_t;

Expand All @@ -51,6 +51,11 @@ ThermoPhase* _fth(const integer* n)
return &ThermoCabinet::item(*n);
}

shared_ptr<ThermoPhase> _fthermo(const integer* n)
{
return ThermoCabinet::at(*n);
}

Transport* _ftrans(const integer* n)
{
return &TransportCabinet::item(*n);
Expand Down Expand Up @@ -362,8 +367,8 @@ extern "C" {
integer th_newfromfile_(char* filename, char* phasename, ftnlen lenf, ftnlen lenp)
{
try {
ThermoPhase* th = newPhase(f2string(filename, lenf),
f2string(phasename, lenp));
auto th = newThermo(f2string(filename, lenf),
f2string(phasename, lenp));
return ThermoCabinet::add(th);
} catch (...) {
return handleAllExceptions(-1, ERR);
Expand Down Expand Up @@ -676,23 +681,23 @@ extern "C" {
const integer* neighbor4, ftnlen nlen, ftnlen plen)
{
try {
std::vector<ThermoPhase*> phases;
phases.push_back(_fth(reactingPhase));
vector<shared_ptr<ThermoPhase>> phases;
phases.push_back(_fthermo(reactingPhase));
if (*neighbor1 >= 0) {
phases.push_back(_fth(neighbor1));
phases.push_back(_fthermo(neighbor1));
if (*neighbor2 >= 0) {
phases.push_back(_fth(neighbor2));
phases.push_back(_fthermo(neighbor2));
if (*neighbor3 >= 0) {
phases.push_back(_fth(neighbor3));
phases.push_back(_fthermo(neighbor3));
if (*neighbor4 >= 0) {
phases.push_back(_fth(neighbor4));
phases.push_back(_fthermo(neighbor4));
}
}
}
}
auto kin = newKinetics(phases, f2string(filename, nlen),
f2string(phasename, plen));
return KineticsCabinet::add(kin.release());
return KineticsCabinet::add(kin);
} catch (...) {
return handleAllExceptions(999, ERR);
}
Expand Down Expand Up @@ -943,8 +948,8 @@ extern "C" {
{
try {
std::string mstr = f2string(model, lenmodel);
ThermoPhase* t = _fth(ith);
Transport* tr = newTransportMgr(mstr, t, *loglevel);
auto t = _fthermo(ith);
auto tr = newTransport(t, mstr);
return TransportCabinet::add(tr);
} catch (...) {
return handleAllExceptions(-1, ERR);
Expand All @@ -954,8 +959,8 @@ extern "C" {
integer trans_newdefault_(integer* ith, integer* loglevel, ftnlen lenmodel)
{
try {
ThermoPhase* t = _fth(ith);
Transport* tr = newDefaultTransportMgr(t, *loglevel);
auto t = _fthermo(ith);
auto tr = newTransport(t, "default");
return TransportCabinet::add(tr);
} catch (...) {
return handleAllExceptions(-1, ERR);
Expand Down

0 comments on commit 7efc12d

Please sign in to comment.