Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adapt Spray module for use with Manifold EOS #553

Open
3 tasks
baperry2 opened this issue Dec 20, 2024 · 0 comments
Open
3 tasks

Adapt Spray module for use with Manifold EOS #553

baperry2 opened this issue Dec 20, 2024 · 0 comments

Comments

@baperry2
Copy link
Contributor

baperry2 commented Dec 20, 2024

Right now these are incompatible. Major steps to implementation:

  • Propagate eosparm through all EOS calls (as was done in LMeX here: Eosparm support in PeleLMeX PeleLMeX#414)
  • Modify GasPhaseVals struct: For manifold model, need to map from transported "species" (actually the manifold parameters) to gas phase composition in terms of actual species
  • Apply source terms to correct quantities. For species, this is just a matter of using the existing mapping system to map from the liquid components to mixture fraction, etc. For enthalpy, still needs to be determined. An initial approach would be to ignore the enthalpy lost from phase change.

Places where EOS calls are currently made within the EOS module as a strating point for modifications:

$cd PelePhysics/Source/Spray
$rgrep -i eos
./SpraySetup.cpp:260:  pele::physics::eos::speciesNames<pele::physics::PhysicsType::eos_type>(
./SpraySetup.cpp:285:  auto eos = pele::physics::PhysicsType::eos();
./SpraySetup.cpp:286:  eos.T2Hi(m_sprayData->ref_T, fuelEnth.data());
./Drag.H:148:    pele::physics::EosType,
./Drag.H:151:  auto eos = pele::physics::PhysicsType::eos();
./Drag.H:220:    eos.T2Cpi(T_skin, cp_n.data());
./Drag.H:221:    eos.T2Hi(T_part, h_part.data());
./SprayParticles.cpp:51:    pele::physics::EosType,
./SprayParticles.cpp:74:    pele::physics::EosType,
./SprayParticles.cpp:157:    pele::physics::EosType,
./SprayParticles.cpp:329:          auto eos = pele::physics::PhysicsType::eos();
./SprayParticles.cpp:334:          eos.molecular_weight(gpv.mw.data());
./SprayParticles.H:201:      pele::physics::EosType,
./SprayParticles.H:218:      pele::physics::EosType,
./SprayParticles.H:235:      pele::physics::EosType,
./BreakupSplash/WallFilm.H:38:    pele::physics::EosType,
./BreakupSplash/WallFilm.H:41:  auto eos = pele::physics::PhysicsType::eos();
./BreakupSplash/WallFilm.H:90:  eos.T2Cpi(T_skin, cp_n.data());
./BreakupSplash/WallFilm.H:91:  eos.T2Hi(T_film, h_film.data());
./SprayInterpolation.H:112:  auto eos = pele::physics::PhysicsType::eos();
./SprayInterpolation.H:149:      eos.EY2T(intEng, mass_frac.data(), T_i);

Initial thoughts on each (some are minor, some are major):

./SpraySetup.cpp:260:  pele::physics::eos::speciesNames<pele::physics::PhysicsType::eos_type>(

    Mapping for species names between spray and gas phase. Should be straightforward.
    A pointer to eosparm (probably both host and device) will have to be added to the spray particle container
    POTENTIAL ISSUE: although spray source can dump into ZMIX, for equilibrium calcs we will need the actual
                     gas phase concentration of fuel. Probably need to modify GasPhaseVals struct

./SpraySetup.cpp:285:  auto eos = pele::physics::PhysicsType::eos();
./SpraySetup.cpp:286:  eos.T2Hi(m_sprayData->ref_T, fuelEnth.data());

    Used for finding reference gas phase enthalpy, which gets rolled into the latent heat of vaporization
    Can probably be bypassed initially for manifold spray ignoring latent heat

./Drag.H:148:    pele::physics::EosType,

    Just interfaces for passing transparm - nothing important here

./Drag.H:151:  auto eos = pele::physics::PhysicsType::eos();
./Drag.H:220:    eos.T2Cpi(T_skin, cp_n.data());
./Drag.H:221:    eos.T2Hi(T_part, h_part.data());

    ?? Could be difficult - need to harmonize between gas species and manifold quantities

./SprayParticles.cpp:51:    pele::physics::EosType,
./SprayParticles.cpp:74:    pele::physics::EosType,
./SprayParticles.cpp:157:    pele::physics::EosType,

    Just interfaces for passing transparm - nothing important here

./SprayParticles.cpp:329:          auto eos = pele::physics::PhysicsType::eos();
./SprayParticles.cpp:334:          eos.molecular_weight(gpv.mw.data());

    ?? gas phase molecular weight in GPV - is this needed for all gas species and why?

./SprayParticles.H:201:      pele::physics::EosType,
./SprayParticles.H:218:      pele::physics::EosType,
./SprayParticles.H:235:      pele::physics::EosType,

    Just interfaces for passing transparm - nothing important here

./BreakupSplash/WallFilm.H:38:    pele::physics::EosType,

    Just interfaces for passing transparm - nothing important here

./BreakupSplash/WallFilm.H:41:  auto eos = pele::physics::PhysicsType::eos();
./BreakupSplash/WallFilm.H:90:  eos.T2Cpi(T_skin, cp_n.data());
./BreakupSplash/WallFilm.H:91:  eos.T2Hi(T_film, h_film.data());

./SprayInterpolation.H:112:  auto eos = pele::physics::PhysicsType::eos();
./SprayInterpolation.H:149:      eos.EY2T(intEng, mass_frac.data(), T_i);

    Only used for PeleC
    But - interpolating gas phase vals will need to change - we need actual species
    ** This is really the main challenges**

CC: @SreejithNREL @shashankNREL @justint1997

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant