From f93d4d3b22b89d2bc857d6274aee9dcab551aac2 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Wed, 9 Apr 2025 14:34:22 -0400 Subject: [PATCH 01/21] Added chemistry jacobians function that computes jacobians for mass equations --- SU2_CFD/include/fluid/CMutationTCLib.hpp | 6 ++++++ SU2_CFD/src/fluid/CMutationTCLib.cpp | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/SU2_CFD/include/fluid/CMutationTCLib.hpp b/SU2_CFD/include/fluid/CMutationTCLib.hpp index c1b603a8ba25..4dd31c4e34a9 100644 --- a/SU2_CFD/include/fluid/CMutationTCLib.hpp +++ b/SU2_CFD/include/fluid/CMutationTCLib.hpp @@ -100,6 +100,12 @@ class CMutationTCLib : public CNEMOGas { const su2double* cvve, const su2double* dTdU, const su2double* dTvedU, su2double **val_jacobian) final; + /*! + * \brief Compute chemical source term jacobian. + */ + void ChemistryJacobian(unsigned short iReaction, const su2double *V, const su2double* eve, const su2double* cvve, const su2double* dTdU, + const su2double* dTvedU, su2double **val_jacobian) final; + /*! * \brief Compute vibrational energy source term. */ diff --git a/SU2_CFD/src/fluid/CMutationTCLib.cpp b/SU2_CFD/src/fluid/CMutationTCLib.cpp index 450df9efcb7c..b9ee64d70446 100644 --- a/SU2_CFD/src/fluid/CMutationTCLib.cpp +++ b/SU2_CFD/src/fluid/CMutationTCLib.cpp @@ -197,9 +197,32 @@ vector& CMutationTCLib::ComputeNetProductionRates(bool implicit, cons mix->netProductionRates(ws.data()); + if(implicit) ChemistryJacobian(0, V, eve, cvve, dTdU, dTvedU, val_jacobian); + return ws; } +void CMutationTCLib::ChemistryJacobian(unsigned short iReaction, const su2double *V, const su2double* eve, const su2double *cvve, + const su2double* dTdU, const su2double* dTvedU, su2double **val_jacobian){ + + std::vector JacRho(nSpecies*nSpecies, 0.0); + std::vector JacT(nSpecies, 0.0); + std::vector JacTv(nSpecies, 0.0); + mix->jacobianRho(JacRho.data()); + mix->jacobianT(JacT.data(),JacTv.data()); + + for(iSpecies = 0; iSpecies < nSpecies; iSpecies++){ + for(jSpecies = 0; jSpecies < nSpecies; jSpecies++) + val_jacobian[iSpecies][jSpecies] = JacRho[iSpecies*nSpecies+jSpecies]; + + val_jacobian[iSpecies][nSpecies+nDim] = JacT[iSpecies]; + val_jacobian[iSpecies][nSpecies+nDim+1] = JacTv[iSpecies]; + } + + + + +} su2double CMutationTCLib::ComputeEveSourceTerm(){ mix->energyTransferSource(omega_vec.data()); From d8ec042dafac19f169d39bf85784796d26d17f85 Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Thu, 10 Apr 2025 13:15:47 -0600 Subject: [PATCH 02/21] Update subproject url from M++ to CHANL --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 2c655cb36da3..de2f85bde795 100644 --- a/.gitmodules +++ b/.gitmodules @@ -14,7 +14,7 @@ url = https://github.com/mesonbuild/meson [submodule "subprojects/Mutationpp"] path = subprojects/Mutationpp - url = https://github.com/mutationpp/Mutationpp.git + url = https://github.com/hypersonic-lab/Mutationpp.git [submodule "subprojects/CoolProp"] path = subprojects/CoolProp url = https://github.com/CoolProp/CoolProp.git From 426c9d278eb1b7c7e131802c273788694b6e1ad0 Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Thu, 10 Apr 2025 13:18:22 -0600 Subject: [PATCH 03/21] Add CHANL M++ to subprojects --- .gitmodules | 4 ++-- subprojects/Mutationpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index de2f85bde795..ef3f562563aa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,8 +13,8 @@ path = externals/meson url = https://github.com/mesonbuild/meson [submodule "subprojects/Mutationpp"] - path = subprojects/Mutationpp - url = https://github.com/hypersonic-lab/Mutationpp.git + path = subprojects/Mutationpp + url = https://github.com/hypersonic-lab/Mutationpp.git [submodule "subprojects/CoolProp"] path = subprojects/CoolProp url = https://github.com/CoolProp/CoolProp.git diff --git a/subprojects/Mutationpp b/subprojects/Mutationpp index 5ff579f43781..405b6d4da25a 160000 --- a/subprojects/Mutationpp +++ b/subprojects/Mutationpp @@ -1 +1 @@ -Subproject commit 5ff579f43781cae07411e5ab46291c9971536be6 +Subproject commit 405b6d4da25a1540b968bacdebf7422d7b58eb86 From 9d948d4652e4a78d8e693c291b3843146be42f76 Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Thu, 10 Apr 2025 13:22:38 -0600 Subject: [PATCH 04/21] Switch M++ branch to implicit --- .gitmodules | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitmodules b/.gitmodules index ef3f562563aa..b0ae0b9a6800 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,6 +15,7 @@ [submodule "subprojects/Mutationpp"] path = subprojects/Mutationpp url = https://github.com/hypersonic-lab/Mutationpp.git + branch = remotes/origin/feature_jacobians [submodule "subprojects/CoolProp"] path = subprojects/CoolProp url = https://github.com/CoolProp/CoolProp.git From 550a044293a64c3cbee9dde1dddb61c0e62ebd9f Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Thu, 10 Apr 2025 13:24:08 -0600 Subject: [PATCH 05/21] Update SHA for implicit CHANL M++ --- meson_scripts/init.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/meson_scripts/init.py b/meson_scripts/init.py index 4ed6f053dc96..ac02bc13efdf 100755 --- a/meson_scripts/init.py +++ b/meson_scripts/init.py @@ -65,8 +65,8 @@ def init_submodules( github_repo_meson = "https://github.com/mesonbuild/meson" sha_version_ninja = "52649de2c56b63f42bc59513d51286531c595b44" github_repo_ninja = "https://github.com/ninja-build/ninja" - sha_version_mpp = "5ff579f43781cae07411e5ab46291c9971536be6" - github_repo_mpp = "https://github.com/mutationpp/Mutationpp" + sha_version_mpp = "405b6d4da25a1540b968bacdebf7422d7b58eb86" + github_repo_mpp = "https://github.com/hypersonic-lab/Mutationpp" sha_version_coolprop = "bafdea1f39ee873a6bb9833e3a21fe41f90b85e8" github_repo_coolprop = "https://github.com/CoolProp/CoolProp" sha_version_mel = "46205ab019e5224559091375a6d71aabae6bc5b9" @@ -192,11 +192,15 @@ def submodule_status(path, sha_commit): check=True, cwd=sys.path[0], ).stdout.decode("utf-8") + print("NEXT") + print(status) + print(path) # The first character of the output indicates the status of the submodule # '+' : The submodule does not match the SHA-1 currently in the index of the repository # '-' : The submodule is not initialized # ' ' : Correct version of submodule is initialized status_indicator = status[0][0] + print(status) if status_indicator == "+": # Write a warning that the sha tags do not match sys.stderr.write( @@ -234,6 +238,9 @@ def submodule_status(path, sha_commit): print("CoolProp updated") # Check that the SHA tag stored in this file matches the one stored in the git index cur_sha_commit = status[1:].split(" ")[0] + print("CURRENT", cur_sha_commit) + print(path, sha_commit) + print() if cur_sha_commit != sha_commit: print( "SHA-1 tag stored in index does not match SHA tag stored in this script." From e35fcacbf59532bd2853bdd49b7705063cfd27bd Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Thu, 10 Apr 2025 13:30:11 -0600 Subject: [PATCH 06/21] References CHANL/implicit M++ branch, removes print statements --- meson_scripts/init.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/meson_scripts/init.py b/meson_scripts/init.py index ac02bc13efdf..28d79bc25127 100755 --- a/meson_scripts/init.py +++ b/meson_scripts/init.py @@ -192,15 +192,11 @@ def submodule_status(path, sha_commit): check=True, cwd=sys.path[0], ).stdout.decode("utf-8") - print("NEXT") - print(status) - print(path) # The first character of the output indicates the status of the submodule # '+' : The submodule does not match the SHA-1 currently in the index of the repository # '-' : The submodule is not initialized # ' ' : Correct version of submodule is initialized status_indicator = status[0][0] - print(status) if status_indicator == "+": # Write a warning that the sha tags do not match sys.stderr.write( @@ -238,9 +234,6 @@ def submodule_status(path, sha_commit): print("CoolProp updated") # Check that the SHA tag stored in this file matches the one stored in the git index cur_sha_commit = status[1:].split(" ")[0] - print("CURRENT", cur_sha_commit) - print(path, sha_commit) - print() if cur_sha_commit != sha_commit: print( "SHA-1 tag stored in index does not match SHA tag stored in this script." From fb183e0ece86be550b9143c3b997e08dd04160b3 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Wed, 7 May 2025 02:05:31 -0400 Subject: [PATCH 07/21] Added chemistry and vibrational energy jacobians for Mutation++ fluid model --- SU2_CFD/include/fluid/CMutationTCLib.hpp | 12 ++++-- SU2_CFD/src/fluid/CMutationTCLib.cpp | 49 +++++++++++++++++++----- 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/SU2_CFD/include/fluid/CMutationTCLib.hpp b/SU2_CFD/include/fluid/CMutationTCLib.hpp index 4dd31c4e34a9..c9efbf6d5a54 100644 --- a/SU2_CFD/include/fluid/CMutationTCLib.hpp +++ b/SU2_CFD/include/fluid/CMutationTCLib.hpp @@ -101,16 +101,22 @@ class CMutationTCLib : public CNEMOGas { su2double **val_jacobian) final; /*! - * \brief Compute chemical source term jacobian. + * \brief Compute chemical source term jacobian elements. */ - void ChemistryJacobian(unsigned short iReaction, const su2double *V, const su2double* eve, const su2double* cvve, const su2double* dTdU, - const su2double* dTvedU, su2double **val_jacobian) final; + void ChemistryJacobian(unsigned short iReaction, const su2double *V, const su2double* eve, const su2double* cvve, + const su2double* dTdU, const su2double* dTvedU, su2double **val_jacobian) final; /*! * \brief Compute vibrational energy source term. */ su2double ComputeEveSourceTerm() final; + /*! + * \brief Compute vibrational energy source term jacobian elements. + */ + void GetEveSourceTermJacobian(const su2double *V, const su2double *eve, const su2double *cvve, + const su2double *dTdU, const su2double* dTvedU, su2double **val_jacobian) final; + /*! * \brief Compute species enthalpies. */ diff --git a/SU2_CFD/src/fluid/CMutationTCLib.cpp b/SU2_CFD/src/fluid/CMutationTCLib.cpp index b9ee64d70446..208c750a6da9 100644 --- a/SU2_CFD/src/fluid/CMutationTCLib.cpp +++ b/SU2_CFD/src/fluid/CMutationTCLib.cpp @@ -205,24 +205,30 @@ vector& CMutationTCLib::ComputeNetProductionRates(bool implicit, cons void CMutationTCLib::ChemistryJacobian(unsigned short iReaction, const su2double *V, const su2double* eve, const su2double *cvve, const su2double* dTdU, const su2double* dTvedU, su2double **val_jacobian){ + unsigned short iVar, jVar, iSpecies; + unsigned short nEve = nSpecies+nDim+1; + unsigned short nVar = nSpecies+nDim+2; + std::vector JacRho(nSpecies*nSpecies, 0.0); std::vector JacT(nSpecies, 0.0); std::vector JacTv(nSpecies, 0.0); mix->jacobianRho(JacRho.data()); - mix->jacobianT(JacT.data(),JacTv.data()); + mix->jacobianT(JacT.data()); + mix->jacobianTv(JacTv.data()); - for(iSpecies = 0; iSpecies < nSpecies; iSpecies++){ - for(jSpecies = 0; jSpecies < nSpecies; jSpecies++) + for(iSpecies = 0; iSpecies < nSpecies; iSpecies++) + for(jSpecies = 0; jSpecies < nSpecies; jSpecies++) val_jacobian[iSpecies][jSpecies] = JacRho[iSpecies*nSpecies+jSpecies]; - - val_jacobian[iSpecies][nSpecies+nDim] = JacT[iSpecies]; - val_jacobian[iSpecies][nSpecies+nDim+1] = JacTv[iSpecies]; - } - - - + + for(iSpecies = 0; iSpecies < nSpecies; iSpecies++){ + for(iVar = 0; iVar < nSpecies; iVar++){ + val_jacobian[iSpecies][iVar] += JacT[iSpecies]*dTdU[iVar]; + val_jacobian[iSpecies][iVar] += JacTv[iSpecies]*dTvedU[iVar]; + } + } } + su2double CMutationTCLib::ComputeEveSourceTerm(){ mix->energyTransferSource(omega_vec.data()); @@ -232,6 +238,29 @@ su2double CMutationTCLib::ComputeEveSourceTerm(){ return omega; } +void CMutationTCLib::GetEveSourceTermJacobian(const su2double *V, const su2double *eve, const su2double *cvve, const su2double *dTdU, + const su2double* dTvedU, su2double **val_jacobian){ + + unsigned short iVar, jVar, iSpecies; + unsigned short nEve = nSpecies+nDim+1; + unsigned short nVar = nSpecies+nDim+2; + + vector omegaJRho, omegaJTTv; + omegaJRho.resize(nSpecies); omegaJTTv.resize(nEnergyEq); + + mix->energyTransferJacobiansRho(omegaJRho.data()); + mix->energyTransferJacobiansTTv(omegaJTTv.data()); + + for(iSpecies = 0; iSpecies < nSpecies; iSpecies++) + val_jacobian[nEve][iSpecies] = omegaJRho[iSpecies]; + + for(iVar = 0; iVar < nVar; iVar++){ + val_jacobian[nEve][iVar] += omegaJTTv[0]*dTdU[iVar]; + val_jacobian[nEve][iVar] += omegaJTTv[1]*dTvedU[iVar]; + } + +} + vector& CMutationTCLib::ComputeSpeciesEnthalpy(su2double val_T, su2double val_Tve, su2double *val_eves){ mix->getEnthalpiesMass(hs.data()); From 3221fa885b375c6ae39c084fa9c91a3ffeb71710 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Fri, 6 Jun 2025 02:47:59 -0700 Subject: [PATCH 08/21] Refactored the chemistry and vibrational energy source term jacobians to mimimize memory usage. --- Common/src/CConfig.cpp | 4 ++-- SU2_CFD/include/fluid/CMutationTCLib.hpp | 7 ++++++- SU2_CFD/src/fluid/CMutationTCLib.cpp | 12 +++++------- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index cdb5e0a63a92..e3d64b09166f 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -7097,8 +7097,8 @@ void CConfig::SetOutput(SU2_COMPONENT val_software, unsigned short val_izone) { break; case EULER_IMPLICIT: cout << "Euler implicit method for the flow equations." << endl; - if (Kind_FluidModel == MUTATIONPP) - SU2_MPI::Error("Implicit time scheme is not yet implemented with Mutation++. Use EULER_EXPLICIT.", CURRENT_FUNCTION); +// if (Kind_FluidModel == MUTATIONPP) +// SU2_MPI::Error("Implicit time scheme is not yet implemented with Mutation++. Use EULER_EXPLICIT.", CURRENT_FUNCTION); switch (Kind_Linear_Solver) { case BCGSTAB: case FGMRES: diff --git a/SU2_CFD/include/fluid/CMutationTCLib.hpp b/SU2_CFD/include/fluid/CMutationTCLib.hpp index c9efbf6d5a54..3fe8cb5d9c19 100644 --- a/SU2_CFD/include/fluid/CMutationTCLib.hpp +++ b/SU2_CFD/include/fluid/CMutationTCLib.hpp @@ -49,7 +49,12 @@ class CMutationTCLib : public CNEMOGas { vector Cv_ks, /*!< \brief Species specific heats at constant volume. */ es, /*!< \brief Species energies. */ - omega_vec; /*!< \brief Dummy vector for vibrational energy source term. */ + omega_vec, /*!< \brief Dummy vector for vibrational energy source term. */ + JacRho, /*!< \brief Dummy vector for partial density dependent chemistry jacobians. */ + JacT, /*!< \brief Dummy vector for translational temperature dependent chemistry jacobians. */ + JacTv, /*!< \brief Dummy vector for vibrational temperature dependent chemistry jacobians. */ + omegaJRho, /*!< \brief Dummy vector for partial density dependent vibrational source term jacobians. */ + omegaJTTv; /*!< \brief Dummy vector for temperature (both tr and ve) dependent vibrational source term jacobians. */ su2double Tref; /*!< \brief Reference temperature. */ diff --git a/SU2_CFD/src/fluid/CMutationTCLib.cpp b/SU2_CFD/src/fluid/CMutationTCLib.cpp index 208c750a6da9..4a5d413ec5dd 100644 --- a/SU2_CFD/src/fluid/CMutationTCLib.cpp +++ b/SU2_CFD/src/fluid/CMutationTCLib.cpp @@ -40,7 +40,11 @@ CMutationTCLib::CMutationTCLib(const CConfig* config, unsigned short val_nDim): es.resize(nEnergyEq*nSpecies,0.0); omega_vec.resize(1,0.0); CatRecombTable.resize(nSpecies,2) = 0; - + JacRho.resize(nSpecies*nSpecies,0.0); + JacT.resize(nSpecies,0.0); + JacTv.resize(nSpecies,0.0); + omegaJRho.resize(nSpecies,0.0); + omegaJTTv.resize(nEnergyEq,0.0); /*--- Set up inputs to define type of mixture in the Mutation++ library ---*/ @@ -209,9 +213,6 @@ void CMutationTCLib::ChemistryJacobian(unsigned short iReaction, const su2double unsigned short nEve = nSpecies+nDim+1; unsigned short nVar = nSpecies+nDim+2; - std::vector JacRho(nSpecies*nSpecies, 0.0); - std::vector JacT(nSpecies, 0.0); - std::vector JacTv(nSpecies, 0.0); mix->jacobianRho(JacRho.data()); mix->jacobianT(JacT.data()); mix->jacobianTv(JacTv.data()); @@ -245,9 +246,6 @@ void CMutationTCLib::GetEveSourceTermJacobian(const su2double *V, const su2doubl unsigned short nEve = nSpecies+nDim+1; unsigned short nVar = nSpecies+nDim+2; - vector omegaJRho, omegaJTTv; - omegaJRho.resize(nSpecies); omegaJTTv.resize(nEnergyEq); - mix->energyTransferJacobiansRho(omegaJRho.data()); mix->energyTransferJacobiansTTv(omegaJTTv.data()); From 0df59d67c43407eca3eecad7eacc652062cdf22f Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Wed, 11 Jun 2025 14:59:09 -0700 Subject: [PATCH 09/21] Update Mpp commit --- .gitmodules | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index b0ae0b9a6800..da22e60e2be4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,10 +12,6 @@ [submodule "externals/meson"] path = externals/meson url = https://github.com/mesonbuild/meson -[submodule "subprojects/Mutationpp"] - path = subprojects/Mutationpp - url = https://github.com/hypersonic-lab/Mutationpp.git - branch = remotes/origin/feature_jacobians [submodule "subprojects/CoolProp"] path = subprojects/CoolProp url = https://github.com/CoolProp/CoolProp.git From b4b45e524cb1e6c95ca900d5955ff97f67ce8848 Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Wed, 11 Jun 2025 14:59:30 -0700 Subject: [PATCH 10/21] Removed Mutationpp submodule --- subprojects/Mutationpp | 1 - 1 file changed, 1 deletion(-) delete mode 160000 subprojects/Mutationpp diff --git a/subprojects/Mutationpp b/subprojects/Mutationpp deleted file mode 160000 index 405b6d4da25a..000000000000 --- a/subprojects/Mutationpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 405b6d4da25a1540b968bacdebf7422d7b58eb86 From 923c35a35a66e391f6b8fd2f98435ffccca2731c Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Wed, 11 Jun 2025 15:01:11 -0700 Subject: [PATCH 11/21] Update Mutationpp repo for Implicit --- .gitmodules | 3 +++ subprojects/Mutationpp | 1 + 2 files changed, 4 insertions(+) create mode 160000 subprojects/Mutationpp diff --git a/.gitmodules b/.gitmodules index da22e60e2be4..eba8f24d4b6c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -24,3 +24,6 @@ [submodule "subprojects/MLPCpp"] path = subprojects/MLPCpp url = https://github.com/EvertBunschoten/MLPCpp.git +[submodule "subprojects/Mutationpp"] + path = subprojects/Mutationpp + url = git@github.com:hypersonic-lab/Mutationpp.git diff --git a/subprojects/Mutationpp b/subprojects/Mutationpp new file mode 160000 index 000000000000..c3c0c51cab2f --- /dev/null +++ b/subprojects/Mutationpp @@ -0,0 +1 @@ +Subproject commit c3c0c51cab2fc42f6c24e7d2d37135a131fd5a16 From f8f53a2149a986d500df1fe3ec6946094dcbdbb8 Mon Sep 17 00:00:00 2001 From: Aaron Larsen <66142437+aaronmlarsen@users.noreply.github.com> Date: Wed, 11 Jun 2025 16:19:58 -0700 Subject: [PATCH 12/21] Update .gitmodules M++ branch --- .gitmodules | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitmodules b/.gitmodules index eba8f24d4b6c..e2bcb9d92e0b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -27,3 +27,4 @@ [submodule "subprojects/Mutationpp"] path = subprojects/Mutationpp url = git@github.com:hypersonic-lab/Mutationpp.git + branch = remotes/origin/feature_jacobians From c910bd7d8ca7200f0e190afb49e13a94a38f8d40 Mon Sep 17 00:00:00 2001 From: Aaron Larsen <66142437+aaronmlarsen@users.noreply.github.com> Date: Wed, 11 Jun 2025 16:20:38 -0700 Subject: [PATCH 13/21] Update .gitmodules --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index e2bcb9d92e0b..7fc652f9d7db 100644 --- a/.gitmodules +++ b/.gitmodules @@ -27,4 +27,4 @@ [submodule "subprojects/Mutationpp"] path = subprojects/Mutationpp url = git@github.com:hypersonic-lab/Mutationpp.git - branch = remotes/origin/feature_jacobians + branch = feature_jacobians From 637c479854178488fc09df9168ac4a1ec909ab77 Mon Sep 17 00:00:00 2001 From: Aaron Larsen <66142437+aaronmlarsen@users.noreply.github.com> Date: Wed, 11 Jun 2025 16:21:45 -0700 Subject: [PATCH 14/21] Update M++ SHA version --- meson_scripts/init.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meson_scripts/init.py b/meson_scripts/init.py index 28d79bc25127..578c8349b589 100755 --- a/meson_scripts/init.py +++ b/meson_scripts/init.py @@ -65,7 +65,7 @@ def init_submodules( github_repo_meson = "https://github.com/mesonbuild/meson" sha_version_ninja = "52649de2c56b63f42bc59513d51286531c595b44" github_repo_ninja = "https://github.com/ninja-build/ninja" - sha_version_mpp = "405b6d4da25a1540b968bacdebf7422d7b58eb86" + sha_version_mpp = "c3c0c51cab2fc42f6c24e7d2d37135a131fd5a16" github_repo_mpp = "https://github.com/hypersonic-lab/Mutationpp" sha_version_coolprop = "bafdea1f39ee873a6bb9833e3a21fe41f90b85e8" github_repo_coolprop = "https://github.com/CoolProp/CoolProp" From 7ac7fdebb825528296df3b7f6c3509543407c809 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Wed, 25 Jun 2025 20:24:55 -0700 Subject: [PATCH 15/21] Added case label for viscous Jacobians to enable execution with 11-species Air using MPP fluid model in implicit mode. --- SU2_CFD/src/numerics/NEMO/CNEMONumerics.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/SU2_CFD/src/numerics/NEMO/CNEMONumerics.cpp b/SU2_CFD/src/numerics/NEMO/CNEMONumerics.cpp index 14fae045bdad..990b1d3c7034 100644 --- a/SU2_CFD/src/numerics/NEMO/CNEMONumerics.cpp +++ b/SU2_CFD/src/numerics/NEMO/CNEMONumerics.cpp @@ -351,6 +351,9 @@ void CNEMONumerics::GetViscousProjJacs(const su2double *val_Mean_PrimVar, case 12: return COMPUTE_VISCOUS_JACS(12, 7); + case 15: + return COMPUTE_VISCOUS_JACS(15,11); + default: return COMPUTE_VISCOUS_JACS(DynamicSize,DynamicSize); From 755c503a258081dc3535fc7751d59f099caf4618 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Wed, 30 Jul 2025 02:29:27 -0700 Subject: [PATCH 16/21] Modified a line in CConfig.cpp to assign argon.xml from Mutation++ mixtures as monoatomic --- Common/src/CConfig.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index e3d64b09166f..9afcd27671d9 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -5474,7 +5474,8 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i /*--- Specifying a deforming surface requires a mesh deformation solver. ---*/ if (GetSurface_Movement(DEFORMING)) Deform_Mesh = true; - monoatomic = GetGasModel() == "ARGON"; +// monoatomic = GetGasModel() == "ARGON"; //--original + monoatomic = StringToUpperCase(GetGasModel()) == "ARGON"; //--modified by RSCD /*--- Set number of Turbulence Variables. ---*/ switch (TurbModelFamily(Kind_Turb_Model)) { From 2d0a05afa3f3d7c758b8230041f169a84118c286 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Thu, 14 Aug 2025 06:05:34 -0700 Subject: [PATCH 17/21] Found a bug and resolved it. --- SU2_CFD/src/fluid/CMutationTCLib.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SU2_CFD/src/fluid/CMutationTCLib.cpp b/SU2_CFD/src/fluid/CMutationTCLib.cpp index 4a5d413ec5dd..e772a1175590 100644 --- a/SU2_CFD/src/fluid/CMutationTCLib.cpp +++ b/SU2_CFD/src/fluid/CMutationTCLib.cpp @@ -161,7 +161,7 @@ vector& CMutationTCLib::GetSpeciesCvTraRot(){ mix->getCvsMass(Cv_ks.data()); for(iSpecies = 0; iSpecies < nSpecies; iSpecies++) Cvtrs[iSpecies] = Cv_ks[iSpecies]; - + return Cvtrs; } @@ -222,7 +222,7 @@ void CMutationTCLib::ChemistryJacobian(unsigned short iReaction, const su2double val_jacobian[iSpecies][jSpecies] = JacRho[iSpecies*nSpecies+jSpecies]; for(iSpecies = 0; iSpecies < nSpecies; iSpecies++){ - for(iVar = 0; iVar < nSpecies; iVar++){ + for(iVar = 0; iVar < nVar; iVar++){ val_jacobian[iSpecies][iVar] += JacT[iSpecies]*dTdU[iVar]; val_jacobian[iSpecies][iVar] += JacTv[iSpecies]*dTvedU[iVar]; } @@ -271,6 +271,7 @@ vector& CMutationTCLib::GetDiffusionCoeff(){ mix->averageDiffusionCoeffs(DiffusionCoeff.data()); return DiffusionCoeff; + } su2double CMutationTCLib::GetViscosity(){ From d094f17d0fbb74edf494e1cf745103e53a6bed24 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Mon, 18 Aug 2025 23:42:31 -0700 Subject: [PATCH 18/21] Removed my comment in CConfig.cpp --- Common/src/CConfig.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 9afcd27671d9..d4f26fbd44c8 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -5474,8 +5474,7 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i /*--- Specifying a deforming surface requires a mesh deformation solver. ---*/ if (GetSurface_Movement(DEFORMING)) Deform_Mesh = true; -// monoatomic = GetGasModel() == "ARGON"; //--original - monoatomic = StringToUpperCase(GetGasModel()) == "ARGON"; //--modified by RSCD + monoatomic = StringToUpperCase(GetGasModel()) == "ARGON"; /*--- Set number of Turbulence Variables. ---*/ switch (TurbModelFamily(Kind_Turb_Model)) { From f3dd125857111df264b710a72e46a3d673d84081 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Tue, 19 Aug 2025 00:16:38 -0700 Subject: [PATCH 19/21] pre-commit: fix trailing whitespace / EOF newline --- .gitmodules | 2 +- Common/src/CConfig.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 7fc652f9d7db..6535b0095013 100644 --- a/.gitmodules +++ b/.gitmodules @@ -26,5 +26,5 @@ url = https://github.com/EvertBunschoten/MLPCpp.git [submodule "subprojects/Mutationpp"] path = subprojects/Mutationpp - url = git@github.com:hypersonic-lab/Mutationpp.git + url = https://github.com/hypersonic-lab/Mutationpp.git branch = feature_jacobians diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index d4f26fbd44c8..1e85b6ebe8dc 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -4024,7 +4024,7 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i if (Kind_FluidModel == MUTATIONPP && (Kind_TransCoeffModel == TRANSCOEFFMODEL::GUPTAYOS)) { cout << "Gupta-Yos viscosity model chosen for M++, which is not a thermal conductivity model. Chapman-Enskog default model will be used for Thermal Conductivity." << endl; } - + if (Kind_Species_Model == SPECIES_MODEL::FLAMELET) { if (Kind_FluidModel != FLUID_FLAMELET) { From 1a05839707e2a6118d2244fa95a187373d4c4e9b Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Tue, 19 Aug 2025 00:36:45 -0700 Subject: [PATCH 20/21] Resolve PR conflict: restore .gitmodules from base branch --- .gitmodules | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitmodules b/.gitmodules index 6535b0095013..54f834208f58 100644 --- a/.gitmodules +++ b/.gitmodules @@ -12,6 +12,9 @@ [submodule "externals/meson"] path = externals/meson url = https://github.com/mesonbuild/meson +[submodule "subprojects/Mutationpp"] + path = subprojects/Mutationpp + url = https://github.com/hypersonic-lab/Mutationpp.git [submodule "subprojects/CoolProp"] path = subprojects/CoolProp url = https://github.com/CoolProp/CoolProp.git @@ -24,7 +27,6 @@ [submodule "subprojects/MLPCpp"] path = subprojects/MLPCpp url = https://github.com/EvertBunschoten/MLPCpp.git -[submodule "subprojects/Mutationpp"] - path = subprojects/Mutationpp - url = https://github.com/hypersonic-lab/Mutationpp.git - branch = feature_jacobians +[submodule "externals/FADO"] + path = externals/FADO + url = https://github.com/pcarruscag/FADO.git From f9beb7d8ac8b6202c852f824db0d72d6e7b78707 Mon Sep 17 00:00:00 2001 From: Raghava Davuluri Date: Tue, 19 Aug 2025 01:14:38 -0700 Subject: [PATCH 21/21] Small fix --- Common/src/CConfig.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 1e85b6ebe8dc..1ab11812ce1b 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -7097,8 +7097,6 @@ void CConfig::SetOutput(SU2_COMPONENT val_software, unsigned short val_izone) { break; case EULER_IMPLICIT: cout << "Euler implicit method for the flow equations." << endl; -// if (Kind_FluidModel == MUTATIONPP) -// SU2_MPI::Error("Implicit time scheme is not yet implemented with Mutation++. Use EULER_EXPLICIT.", CURRENT_FUNCTION); switch (Kind_Linear_Solver) { case BCGSTAB: case FGMRES: