mutationpp / Mutationpp

The MUlticomponent Thermodynamic And Transport library for IONized gases in C++
GNU Lesser General Public License v3.0
103 stars 58 forks source link

Issue regarding compilation of a small code which call MUTATION++ and pointing to collision integrals #165

Closed wargnierq closed 3 years ago

wargnierq commented 3 years ago

Dear All,

I am having some troubles concerning the compilation of a small code (inspired from the examples in examples/c++) which is calling some functions, such as Q11ij for example.

I have a MacOS 11.2.3 my cmake version is 3.19.1

`name -a` Darwin Qs-MacBook-Pro.local 20.3.0 Darwin Kernel Version 20.3.0: Thu Jan 21 00:07:06 PST 2021; root:xnu-7195.81.3~1/RELEASE_X86_64 x86_64 **`env` output** `env` MPP_DIRECTORY=/Users/quentin/Desktop/canop/canop_final/canoP/external/mutationpp TERM_PROGRAM=Apple_Terminal SHELL=/bin/tcsh TERM=xterm-256color TMPDIR=/var/folders/_4/q139krkn05j_cryvps7wscq4000msw/T/ CONDA_SHLVL=1 EBYSUS=/Users/quentin/Desktop/ebysus/ebysus CONDA_PROMPT_MODIFIER=(base) TERM_PROGRAM_VERSION=440 TERM_SESSION_ID=E4490B22-13BC-48EE-9179-6EE3B8A50D9D USER=quentin BIFROSTPATH=/Users/quentin/Desktop/Bifrost/Bifrost CONDA_EXE=/Users/quentin/opt/anaconda3/bin/conda SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.yfnlZZuBRq/Listeners MPP_DATA_DIRECTORY=/Users/quentin/Desktop/canop/canop_final/canoP/external/mutationpp/data _CE_CONDA= PATH=/Users/quentin/Desktop/canop/canop_final/canoP/external/mutationpp/install/bin:/opt/local/bin:/opt/local/sbin:/Users/quentin/opt/anaconda3/bin:/Users/quentin/opt/anaconda3/condabin:/usr/local/opt/make/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/opt/X11/bin:/Library/Apple/usr/bin LaunchInstanceID=D68E8239-27DB-4F77-A227-57819BDA5418 CONDA_PREFIX=/Users/quentin/opt/anaconda3 __CFBundleIdentifier=com.apple.Terminal PWD=/Users/quentin IRIS_FDT_DIR=/Users/quentin/Desktop/IRIS/FDTIrisCurrent LANG=en_US.UTF-8 BIFROST=/Users/quentin/Desktop/Bifrost/Bifrost XPC_FLAGS=0x0 _CE_M= XPC_SERVICE_NAME=0 SHLVL=1 HOME=/Users/quentin CONDA_PYTHON_EXE=/Users/quentin/opt/anaconda3/bin/python LOGNAME=quentin CONDA_DEFAULT_ENV=base DISPLAY=/private/tmp/com.apple.launchd.tmkV0YVnza/org.macosforge.xquartz:0 SECURITYSESSIONID=186aa XUVTOP=/Users/quentin/Desktop/ebysus/chiantidatabase _=/usr/bin/env **Mutation++ origin** This should be the last version that is on the git, automatically compiled with canop code **Mutation++ build steps**
  1. First step

My CMakeList.txt looks like the following :

cmake_policy(SET CMP0048 NEW) cmake_minimum_required(VERSION 3.0)

project(omega11)

set(CMAKE_CXX_STANDARD 11) find_package(mutation++ REQUIRED) add_executable(omega11 main.cpp) target_link_libraries(omega11 PUBLIC mutation++::mutation++ )

Then I create a build folder, and I do the cmake .. which leads to : -- Configuring done -- Generating done -- Build files have been written to: /Users/quentin/Desktop/Project mutation++/Code He-H/build

  1. Second step

Then I simply do "make", and I have the following error :

[ 50%] Building CXX object CMakeFiles/omega11.dir/main.cpp.o /Users/quentin/Desktop/Project mutation++/Code He-H/main.cpp:142:30: error: no member named 'CollisionDB' in 'Mutation::Mixture' ArrayXd Q11_off = mp_mix.CollisionDB().Q11ij();


1 error generated.
make[2]: *** [CMakeFiles/omega11.dir/build.make:82: CMakeFiles/omega11.dir/main.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:95: CMakeFiles/omega11.dir/all] Error 2
make: *** [Makefile:103: all] Error 2

My mp_mix is defined simply as :

MixtureOptions opts("He-H");
opts.setStateModel("EquilTP");
Mixture mp_mix(opts);

And the header of my main.cpp is simply:

#include <iostream>
#include <fstream>
#include "mutation++.h"
#include <Eigen/Dense>

using namespace std;
using namespace Eigen;
using namespace Mutation;

I did the same as the examples we have in example/c++ folder

**Steps to reproduce**
<!-- Describe all the steps to reproduce your problem -->

Please find in attachment my CmakeList.txt file to compile. And below my main.cpp

You can copy both an try to compile

**Comments**
<!-- Additional comments that can be useful to solve the problem --> I guess the main question is why collisionDB().Q11ij() does not work ?

[CMakeLists.txt](https://github.com/mutationpp/Mutationpp/files/6545573/CMakeLists.txt)

The code that I have

`

int main(int argc, char* argv[]) {
    MixtureOptions opts("He-H");
    opts.setStateModel("EquilTP");
    Mixture mp_mix(opts);

    int nHeavy = mp_mix.nHeavy();
    int nSpecies = mp_mix.nSpecies(); 
    double T1 = 1000;
    double T2 = 400000;
    double dT = 100;

    // He
    ofstream HeHe;
    ofstream HeHep;    
    ofstream HeH;
    ofstream HeH2;
    ofstream HeHp;
    ofstream HeHepp;
    ofstream HeH2p;

    //Hep
    ofstream HepHep;
    ofstream HepH;
    ofstream HepH2;
    ofstream HepHp;
    ofstream HepHepp;
    ofstream HepH2p;

    //H
    ofstream HH;
    ofstream HH2;
    ofstream HHp;
    ofstream HHepp;
    ofstream HH2p;

    //H2
    ofstream H2H2;
    ofstream H2Hp;
    ofstream H2Hepp;
    ofstream H2H2p;

    //Hp
    ofstream HpHp;
    ofstream HpHepp;
    ofstream HpH2p;

    //Hepp
    ofstream HeppHepp;
    ofstream HeppH2p;

    //H2p
    ofstream H2pH2p;

    //electron - Heavy 
    ofstream elecHe;
    ofstream elecHep;
    ofstream elecH;
    ofstream elecH2;
    ofstream elecHp;
    ofstream elecHepp;
    ofstream elecH2p;

    //He cross section     
    HeHe.open ("He-He.txt");
    HeHep.open ("He-Hep.txt");
    HeH.open ("He-H.txt"); 
    HeH2.open ("He-H2.txt"); 
    HeHp.open ("He-Hp.txt");
    HeHepp.open ("He-Hepp.txt");
    HeH2p.open ("He-H2p.txt");

    //Hep cross section
    HepHep.open ("Hep-Hep.txt");
    HepH.open ("Hep-H.txt");
    HepH2.open ("Hep-H2.txt"); 
    HepHp.open ("Hep-Hp.txt");
    HepHepp.open ("Hep-Hepp.txt");
    HepH2p.open ("Hep-H2p.txt");   

    //H cross section 
    HH.open ("H-H.txt");
    HH2.open ("H-H2.txt");
    HHp.open ("H-Hp.txt");
    HHepp.open ("H-Hepp.txt");
    HH2p.open ("H-H2p.txt");

    //H2 cross section    
    H2H2.open ("H2-H2.txt"); 
    H2Hp.open ("H2-Hp.txt");
    H2Hepp.open ("H2-Hepp.txt");
    H2H2p.open ("H2-H2p.txt");

    //Hp cross section
    HpHp.open ("Hp-Hp.txt");
    HpHepp.open ("Hp-Hepp.txt");
    HpH2p.open ("Hp-H2p.txt");

    HeppHepp.open ("Hepp-Hepp.txt");
    HeppH2p.open ("Hepp-H2p.txt");

    H2pH2p.open ("H2p-H2p.txt");

    // Electron - heavy
    elecHe.open ("elec-He.txt");
    elecHep.open ("elec-Hep.txt");
    elecH.open ("elec-H.txt");
    elecH2.open ("elec-H2.txt");
    elecHp.open ("elec-Hp.txt");
    elecHepp.open ("elec-Hepp.txt");
    elecH2p.open ("elec-H2p.txt");  

   for (double T = T1; T <= T2; T += dT) {
    double P = 1000.0;
    double norm = 2.8e-17;
    double eV_conv = 8.621738e-5;
    mp_mix.setState(&P,&T,1);

    ArrayXd Q11_off = mp_mix.CollisionDB().Q11ij();
    ArrayXd Q11ei = mp_mix.collisionDB().Q11ei();
    ArrayXd Q11 = mp_mix.collisionDB().Q11ii();
    MatrixXd m = Eigen::MatrixXd::Zero(nHeavy, nHeavy);
    ArrayXd m_elec = Eigen::ArrayXd::Zero(nHeavy);

    int k = 0;
    int  n = nHeavy;
    for(int i = 0; i<nHeavy; ++i){
        for(int j = i; j<nHeavy; ++j){
            k = (n*(n-1)/2)-(n-i)*((n-i)-1)/2+j;
            m(i,j) =  Q11_off(k)*1e4/norm;

        }
    }

    for(int i = 0; i<nHeavy; ++i){
            m_elec(i) =  abs(Q11ei(i))*1e4/norm;
    }

        for (int i = 0; i<nHeavy;++i)
            std::cout<<mp_mix.speciesName(i+1)<<setw(15);
       std::cout<<std::endl;
       for(int i = 0; i<nHeavy; ++i){
         std::cout << m_elec(i) << setw(15);
       }
         std::cout<<std::endl;

      elecHe << T*eV_conv << "       "<< T<< "       "<< m_elec(0);
      elecHe << "\n";
      elecHep << T*eV_conv<< "       "<< T<< "       "<< m_elec(1);
      elecHep << "\n";
      elecH << T*eV_conv << "       "<< T<< "       "<< m_elec(2);
      elecH << "\n";
      elecH2 << T*eV_conv << "       "<< T<< "       "<< m_elec(3);
      elecH2 << "\n";
      elecHp << T*eV_conv << "       "<< T<< "       "<< m_elec(4);
      elecHp << "\n";
      elecHepp << T*eV_conv << "       "<< T<< "       "<< m_elec(5);
      elecHepp << "\n";
      elecH2p << T*eV_conv << "       "<< T<< "       "<< m_elec(6);
      elecH2p << "\n";

        for (int i = 0; i<nHeavy;++i)
            std::cout<<mp_mix.speciesName(i+1)<<setw(15);
       std::cout<<std::endl;
      for(int i = 0; i<nHeavy; ++i){
         for(int j = 0; j<nHeavy; ++j) {
             std::cout << m(i, j) << setw(15);
         }
          std::cout<<std::endl;
      }
     HeHe << T*eV_conv<< "       "<< T<< "       "<< m(0, 0);
     HeHe << "\n";
     HeHep << T*eV_conv<< "       "<< T<< "       "<< m(0, 1);
     HeHep << "\n";
     HeH << T*eV_conv<< "       "<< T<< "       "<< m(0, 2);
     HeH << "\n";
     HeH2 << T*eV_conv<< "       "<< T<< "       "<< m(0, 3);
     HeH2 << "\n"; 
     HeHp << T*eV_conv<< "       "<< T<< "       "<< m(0, 4);
     HeHp << "\n";
     HeHepp << T*eV_conv<< "       "<< T<< "       "<< m(0, 5);
     HeHepp << "\n";
     HeH2p << T*eV_conv<< "       "<< T<< "       "<< m(0, 6);
     HeH2p << "\n";

     HepHep << T*eV_conv<< "       "<< T<< "       "<< m(1, 1);
     HepHep << "\n";
     HepH << T*eV_conv<< "       "<< T<< "       "<< m(1, 2);
     HepH << "\n";
     HepH2 << T*eV_conv<< "       "<< T<< "       "<< m(1, 3);
     HepH2 << "\n";
     HepHp << T*eV_conv<< "       "<< T<< "       "<< m(1, 4);
     HepHp << "\n";
     HepHepp << T*eV_conv<< "       "<< T<< "       "<< m(1, 5);
     HepHepp << "\n";
     HepH2p << T*eV_conv<< "       "<< T<< "       "<< m(1, 6);
     HepH2p << "\n";

     HH << T*eV_conv<< "       "<< T<< "       "<< m(2, 2);
     HH << "\n";
     HH2 << T*eV_conv<< "       "<< T<< "       "<< m(2, 3);
     HH2 << "\n";
     HHp << T*eV_conv<< "       "<< T<< "       "<< m(2, 4);
     HHp << "\n";
     HHepp << T*eV_conv<< "       "<< T<< "       "<< m(2, 5);
     HHepp << "\n";
     HH2p << T*eV_conv<< "       "<< T<< "       "<< m(2, 6);
     HH2p << "\n";

     H2H2 << T*eV_conv<< "       "<< T<< "       "<< m(3, 3);
     H2H2 << "\n";
     H2Hp << T*eV_conv<< "       "<< T<< "       "<< m(3, 4);
     H2Hp << "\n";
     H2Hepp << T*eV_conv<< "       "<< T<< "       "<< m(3, 5);
     H2Hepp << "\n";
     H2H2p << T*eV_conv<< "       "<< T<< "       "<< m(3, 6);
     H2H2p << "\n";

     HpHp << T*eV_conv<< "       "<< T<< "       "<< m(4, 4);
     HpHp << "\n";
     HpHepp << T*eV_conv<< "       "<< T<< "       "<< m(4, 5);
     HpHepp << "\n"; 
     HpH2p << T*eV_conv<< "       "<< T<< "       "<< m(4, 6);
     HpH2p << "\n";

     HeppHepp << T*eV_conv<< "       "<< T<< "       "<< m(5, 5);
     HeppHepp << "\n";
     HeppH2p << T*eV_conv<< "       "<< T<< "       "<< m(5, 6);
     HeppH2p << "\n"; 

     H2pH2p << T*eV_conv<< "       "<< T<< "       "<< m(6, 6);
     H2pH2p << "\n";

}

}
`
jbscoggi commented 3 years ago

You used a capital C in CollisionDB() on the line of the error...

wargnierq commented 3 years ago

There is still an issue in the reference to the Q11:

(base) Qs-MacBook-Pro:build quentin$ make Scanning dependencies of target omega11 [ 50%] Building CXX object CMakeFiles/omega11.dir/main.cpp.o [100%] Linking CXX executable omega11 Undefined symbols for architecture x86_64: "Mutation::Transport::CollisionDB::group(std::1::basic_string<char, std::__1::char_traits, std::1::allocator > const&)", referenced from: Mutation::Transport::CollisionDB::Q11ij() in main.cpp.o Mutation::Transport::CollisionDB::Q11ei() in main.cpp.o Mutation::Transport::CollisionDB::Q11ii() in main.cpp.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: [CMakeFiles/omega11.dir/build.make:104: omega11] Error 1 make[1]: [CMakeFiles/Makefile2:95: CMakeFiles/omega11.dir/all] Error 2 make: *** [Makefile:103: all] Error 2

rdbisme commented 3 years ago

HellO @wargnierq, could you please be more specific on this question?

Mutation++ origin This should be the last version that is on the git, automatically compiled with canop code

Can you post a git status and git log output?

wargnierq commented 3 years ago

Hello Ruben,

The mutationpp is the last version that has been installed with canop through the branch features/mhd-kt-multicomp-update

Yours sincerely,

(base) Qs-MacBook-Pro:mutationpp quentin$ git log

commit 369e2b3732d749da31e143e2ee9d654b214875de (HEAD, origin/fix/transport) Author: Pierre Kestener pierre.kestener@cea.fr Date: Wed Mar 10 20:16:29 2021 +0100

fix Transport.h; add missing declaration

commit f0e518db70d7f5151ab6ed6fa1cefe79824d84f8 Author: Pierre Kestener pierre.kestener@cea.fr Date: Sun Mar 7 07:16:57 2021 +0100

restore transport function useful to mkd_kt model in CanoP

commit 6baa5616d4b2111485899c817a54ecb8102ed8ea (origin/master, origin/HEAD, master) Merge: 05f2c37 4b3b1bd Author: J.B. Scoggins jbscoggi@gmail.com Date: Thu Mar 4 11:06:46 2021 +0100

Merge pull request #147 from ChiaraAmato/master

This commit addresses issues #144, 10/14

commit 4b3b1bd87acd42abff98e4dcc06209fa0742a3b4 Author: J.B. Scoggins jbscoggi@gmail.com Date: Thu Mar 4 10:57:29 2021 +0100

Adding const qualifier to complete review changes

commit aa93903e2a6223b73b324a761e5a50fd139cd05c Author: J.B. Scoggins jbscoggi@gmail.com Date: Thu Mar 4 10:56:24 2021 +0100

Adding const qualifier to resolve review comments
rdbisme commented 3 years ago

Also, didn't we already fixed this problem before?

rdbisme commented 3 years ago

Ok, can you post or give me a link of your repository?

wargnierq commented 3 years ago

Hello Ruben, You will just need to do :

git clone git@gitlab.maisondelasimulation.fr:qwargnie/canoP.git cd canoP git checkout features/mhd-kt-multicomp-update

Mutation is just installed as an external module in that specific branch. If you have some issues to find the branch, I can organize a zoom or team viewer session depending on your availabilities,

Quentin

jbscoggi commented 3 years ago

Hey @wargnierq, can I close this issue? It seems to have gone stale...

rdbisme commented 3 years ago

Nope. I'll give it a look soon!, 😉

rdbisme commented 3 years ago
#include <mutation++.h>

#include <fstream>
#include <ostream>

using namespace std;
using namespace Eigen;
using namespace Mutation;

int main(int argc, char* argv[]) {
    MixtureOptions opts("He-H");
    opts.setStateModel("EquilTP");
    Mixture mp_mix(opts);

    int nHeavy = mp_mix.nHeavy();
    int nSpecies = mp_mix.nSpecies();
    double T1 = 1000;
    double T2 = 400000;
    double dT = 100;

    // He
    ofstream HeHe;
    ofstream HeHep;
    ofstream HeH;
    ofstream HeH2;
    ofstream HeHp;
    ofstream HeHepp;
    ofstream HeH2p;

    // Hep
    ofstream HepHep;
    ofstream HepH;
    ofstream HepH2;
    ofstream HepHp;
    ofstream HepHepp;
    ofstream HepH2p;

    // H
    ofstream HH;
    ofstream HH2;
    ofstream HHp;
    ofstream HHepp;
    ofstream HH2p;

    // H2
    ofstream H2H2;
    ofstream H2Hp;
    ofstream H2Hepp;
    ofstream H2H2p;

    // Hp
    ofstream HpHp;
    ofstream HpHepp;
    ofstream HpH2p;

    // Hepp
    ofstream HeppHepp;
    ofstream HeppH2p;

    // H2p
    ofstream H2pH2p;

    // electron - Heavy
    ofstream elecHe;
    ofstream elecHep;
    ofstream elecH;
    ofstream elecH2;
    ofstream elecHp;
    ofstream elecHepp;
    ofstream elecH2p;

    // He cross section
    HeHe.open("He-He.txt");
    HeHep.open("He-Hep.txt");
    HeH.open("He-H.txt");
    HeH2.open("He-H2.txt");
    HeHp.open("He-Hp.txt");
    HeHepp.open("He-Hepp.txt");
    HeH2p.open("He-H2p.txt");

    // Hep cross section
    HepHep.open("Hep-Hep.txt");
    HepH.open("Hep-H.txt");
    HepH2.open("Hep-H2.txt");
    HepHp.open("Hep-Hp.txt");
    HepHepp.open("Hep-Hepp.txt");
    HepH2p.open("Hep-H2p.txt");

    // H cross section
    HH.open("H-H.txt");
    HH2.open("H-H2.txt");
    HHp.open("H-Hp.txt");
    HHepp.open("H-Hepp.txt");
    HH2p.open("H-H2p.txt");

    // H2 cross section
    H2H2.open("H2-H2.txt");
    H2Hp.open("H2-Hp.txt");
    H2Hepp.open("H2-Hepp.txt");
    H2H2p.open("H2-H2p.txt");

    // Hp cross section
    HpHp.open("Hp-Hp.txt");
    HpHepp.open("Hp-Hepp.txt");
    HpH2p.open("Hp-H2p.txt");

    HeppHepp.open("Hepp-Hepp.txt");
    HeppH2p.open("Hepp-H2p.txt");

    H2pH2p.open("H2p-H2p.txt");

    // Electron - heavy
    elecHe.open("elec-He.txt");
    elecHep.open("elec-Hep.txt");
    elecH.open("elec-H.txt");
    elecH2.open("elec-H2.txt");
    elecHp.open("elec-Hp.txt");
    elecHepp.open("elec-Hepp.txt");
    elecH2p.open("elec-H2p.txt");

    for (double T = T1; T <= T2; T += dT) {
        double P = 1000.0;
        double norm = 2.8e-17;
        double eV_conv = 8.621738e-5;
        mp_mix.setState(&P, &T, 1);

        ArrayXd Q11_off = mp_mix.collisionDB().Q11ij();
        ArrayXd Q11ei = mp_mix.collisionDB().Q11ei();
        ArrayXd Q11 = mp_mix.collisionDB().Q11ii();
        MatrixXd m = Eigen::MatrixXd::Zero(nHeavy, nHeavy);
        ArrayXd m_elec = Eigen::ArrayXd::Zero(nHeavy);

        int k = 0;
        int n = nHeavy;
        for (int i = 0; i < nHeavy; ++i) {
            for (int j = i; j < nHeavy; ++j) {
                k = (n * (n - 1) / 2) - (n - i) * ((n - i) - 1) / 2 + j;
                m(i, j) = Q11_off(k) * 1e4 / norm;
            }
        }

        for (int i = 0; i < nHeavy; ++i) {
            m_elec(i) = abs(Q11ei(i)) * 1e4 / norm;
        }

        for (int i = 0; i < nHeavy; ++i)
            std::cout << mp_mix.speciesName(i + 1) << setw(15);
        std::cout << std::endl;
        for (int i = 0; i < nHeavy; ++i) {
            std::cout << m_elec(i) << setw(15);
        }
        std::cout << std::endl;

        elecHe << T * eV_conv << "       " << T << "       " << m_elec(0);
        elecHe << "\n";
        elecHep << T * eV_conv << "       " << T << "       " << m_elec(1);
        elecHep << "\n";
        elecH << T * eV_conv << "       " << T << "       " << m_elec(2);
        elecH << "\n";
        elecH2 << T * eV_conv << "       " << T << "       " << m_elec(3);
        elecH2 << "\n";
        elecHp << T * eV_conv << "       " << T << "       " << m_elec(4);
        elecHp << "\n";
        elecHepp << T * eV_conv << "       " << T << "       " << m_elec(5);
        elecHepp << "\n";
        elecH2p << T * eV_conv << "       " << T << "       " << m_elec(6);
        elecH2p << "\n";

        for (int i = 0; i < nHeavy; ++i)
            std::cout << mp_mix.speciesName(i + 1) << setw(15);
        std::cout << std::endl;
        for (int i = 0; i < nHeavy; ++i) {
            for (int j = 0; j < nHeavy; ++j) {
                std::cout << m(i, j) << setw(15);
            }
            std::cout << std::endl;
        }
        HeHe << T * eV_conv << "       " << T << "       " << m(0, 0);
        HeHe << "\n";
        HeHep << T * eV_conv << "       " << T << "       " << m(0, 1);
        HeHep << "\n";
        HeH << T * eV_conv << "       " << T << "       " << m(0, 2);
        HeH << "\n";
        HeH2 << T * eV_conv << "       " << T << "       " << m(0, 3);
        HeH2 << "\n";
        HeHp << T * eV_conv << "       " << T << "       " << m(0, 4);
        HeHp << "\n";
        HeHepp << T * eV_conv << "       " << T << "       " << m(0, 5);
        HeHepp << "\n";
        HeH2p << T * eV_conv << "       " << T << "       " << m(0, 6);
        HeH2p << "\n";

        HepHep << T * eV_conv << "       " << T << "       " << m(1, 1);
        HepHep << "\n";
        HepH << T * eV_conv << "       " << T << "       " << m(1, 2);
        HepH << "\n";
        HepH2 << T * eV_conv << "       " << T << "       " << m(1, 3);
        HepH2 << "\n";
        HepHp << T * eV_conv << "       " << T << "       " << m(1, 4);
        HepHp << "\n";
        HepHepp << T * eV_conv << "       " << T << "       " << m(1, 5);
        HepHepp << "\n";
        HepH2p << T * eV_conv << "       " << T << "       " << m(1, 6);
        HepH2p << "\n";

        HH << T * eV_conv << "       " << T << "       " << m(2, 2);
        HH << "\n";
        HH2 << T * eV_conv << "       " << T << "       " << m(2, 3);
        HH2 << "\n";
        HHp << T * eV_conv << "       " << T << "       " << m(2, 4);
        HHp << "\n";
        HHepp << T * eV_conv << "       " << T << "       " << m(2, 5);
        HHepp << "\n";
        HH2p << T * eV_conv << "       " << T << "       " << m(2, 6);
        HH2p << "\n";

        H2H2 << T * eV_conv << "       " << T << "       " << m(3, 3);
        H2H2 << "\n";
        H2Hp << T * eV_conv << "       " << T << "       " << m(3, 4);
        H2Hp << "\n";
        H2Hepp << T * eV_conv << "       " << T << "       " << m(3, 5);
        H2Hepp << "\n";
        H2H2p << T * eV_conv << "       " << T << "       " << m(3, 6);
        H2H2p << "\n";

        HpHp << T * eV_conv << "       " << T << "       " << m(4, 4);
        HpHp << "\n";
        HpHepp << T * eV_conv << "       " << T << "       " << m(4, 5);
        HpHepp << "\n";
        HpH2p << T * eV_conv << "       " << T << "       " << m(4, 6);
        HpH2p << "\n";

        HeppHepp << T * eV_conv << "       " << T << "       " << m(5, 5);
        HeppHepp << "\n";
        HeppH2p << T * eV_conv << "       " << T << "       " << m(5, 6);
        HeppH2p << "\n";

        H2pH2p << T * eV_conv << "       " << T << "       " << m(6, 6);
        H2pH2p << "\n";
    }
}

You had a typo on line 127. You wrote CollisionDB(), it is collisionDB().

ArrayXd Q11_off = mp_mix.collisionDB().Q11ij();

This compiles for me with the latest Mutation++, but I'm missing the file

M++ error: file not found.
file: /tmp/canoP/external/mutationpp/data/mixtures/He-H.xml

Also, please next time write your issue description with the correct formatting, because your main.cpp is unreadable. Putting a bit more effort to explain clearly the issue makes easier for people to help you.

jbscoggi commented 3 years ago

That's what I said on May 26!

rdbisme commented 3 years ago

Well, I forgot. 😂 Ans apparently there were linking problems... That I don't have. 🤷🏻‍♂️

jbscoggi commented 3 years ago

Haha yea, I just thought I remembered finding the same bug so had to say it! :) I didn't have the linking issues either...