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

Add the latest change from the master #7

Open
wants to merge 116 commits into
base: WignerJulia
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
357e774
fixed bug
Dec 23, 2021
ebf5b23
Update python-app.yml
mesonepigreco Jan 4, 2022
6c3b191
Fixed an error if no symmetrization was done
mesonepigreco Jan 13, 2022
96b7a6b
Added the possibility to restart a calculation with the cluster program
mesonepigreco Feb 9, 2022
ab84150
Update python-app.yml
mesonepigreco Feb 9, 2022
d17c572
Fixed a wrong assertion
mesonepigreco Feb 12, 2022
823e5bb
Merge branch 'Fast_LANCZOS' of github.com:mesonepigreco/python-sscha …
mesonepigreco Feb 12, 2022
608d1ad
Added the possibility to load the status from a file object
mesonepigreco Feb 13, 2022
92847b6
Added the possibility to save only the abc file, to avoid consuming a…
mesonepigreco Feb 13, 2022
6afbf7e
bugfix
mesonepigreco Jun 2, 2022
74933a9
Removed the default save_dir
mesonepigreco Jun 2, 2022
12fce40
Fixed a useless supercell generation in the initialization
mesonepigreco Aug 30, 2022
bb76ea0
Update python-app.yml
mesonepigreco Aug 30, 2022
fa66f0d
Added the julia runtine to try to speedup the calculation
mesonepigreco Sep 7, 2022
bf3e7ce
Added the analyzer on the abc file
mesonepigreco Sep 7, 2022
40d5780
Added the function to pass into the sparse matrix
mesonepigreco Sep 7, 2022
28fab9a
Fixed an error
mesonepigreco Sep 8, 2022
6b706df
Finished (but not tested the julia version)
mesonepigreco Sep 8, 2022
b913f31
Now the julia thing works!!!
mesonepigreco Sep 8, 2022
815777b
I do not remember
mesonepigreco Sep 8, 2022
087cbc7
Merge branch 'Fast_LANCZOS' of github.com:mesonepigreco/python-sscha …
mesonepigreco Sep 8, 2022
5daa85a
Added a julia test
mesonepigreco Sep 8, 2022
d26bb89
fast
mesonepigreco Sep 8, 2022
709abcb
Merge branch 'julia_exec' of github.com:mesonepigreco/python-sscha in…
mesonepigreco Sep 8, 2022
cfc8ab8
Now it works and we can try a bit bigger system.
mesonepigreco Sep 8, 2022
b211218
Removed the force thread
mesonepigreco Sep 9, 2022
d3ff185
Avoid multithreading, it sucks
mesonepigreco Sep 9, 2022
46e641d
Reset the trheading
mesonepigreco Sep 9, 2022
fcd51cb
Added some thread safety
mesonepigreco Sep 9, 2022
046a7f3
Now the julia version works in parallel with the GoParallel function
mesonepigreco Sep 9, 2022
085caac
Other small fix
mesonepigreco Sep 9, 2022
a91feb7
Added a script for converting the output into a .abc file
mesonepigreco Sep 12, 2022
d9f2612
Updated the setup.py
mesonepigreco Sep 12, 2022
d1f2636
Added the analyzer on the abc file
mesonepigreco Sep 7, 2022
c91be7e
Added some info for the symmetries
mesonepigreco Sep 14, 2022
79682c6
Fixed something
mesonepigreco Sep 14, 2022
014beea
Fix
mesonepigreco Sep 14, 2022
1a05042
Merge branch 'julia_exec' of github.com:mesonepigreco/tdscha into jul…
mesonepigreco Sep 14, 2022
c8e6321
Fix
mesonepigreco Sep 15, 2022
a3bede7
Fix
mesonepigreco Sep 15, 2022
0dd461d
Debug
mesonepigreco Oct 11, 2022
954937c
Merge branch 'julia_exec' of github.com:mesonepigreco/tdscha into jul…
mesonepigreco Oct 11, 2022
8aabf8b
Added a new script to plot the results directly
mesonepigreco Oct 25, 2022
cd11914
Added the possibility to call the unpolarized raman
mesonepigreco Nov 17, 2022
016bcad
Fix a bug when loading the dynamical matrix
mesonepigreco Jan 20, 2023
2218918
Merge pull request #3 from mesonepigreco/julia_exec
mesonepigreco May 21, 2023
a0707c7
Merge branch 'Fast_LANCZOS' of github.com:mesonepigreco/python-sscha …
mesonepigreco May 21, 2023
0b1646f
Added the function to compute the Bose occupation
mesonepigreco May 23, 2023
74c9f32
Merge branch 'Fast_LANCZOS' of github.com:mesonepigreco/python-sscha …
mesonepigreco Jun 18, 2023
cdaa322
Added a new tdscha-convergence-analysis.py script
mesonepigreco Jun 18, 2023
1d89791
Added a new subversion
mesonepigreco Jun 18, 2023
b455c53
Reorder the iteration number
mesonepigreco Jun 18, 2023
ec35552
Merge branch 'Fast_LANCZOS' of github.com:mesonepigreco/python-sscha …
mesonepigreco Jun 18, 2023
344af7f
Now it seems julia is working with the auto recognition
mesonepigreco Jul 25, 2023
02daec9
Added the possibility to pass by objects to the StaticHessian to perf…
mesonepigreco Nov 1, 2023
3949895
Update python-app.yml
mesonepigreco Nov 1, 2023
de691de
Some bugfixes on the hessian module and the automatic detection of julia
mesonepigreco Nov 2, 2023
1dffb57
Merge branch 'Fast_LANCZOS' of github.com:mesonepigreco/tdscha into F…
mesonepigreco Nov 2, 2023
5317824
Update python-app.yml
mesonepigreco Nov 2, 2023
d6e2725
Fixing a bad mistake in the last commit
mesonepigreco Nov 2, 2023
3817071
Merge branch 'Fast_LANCZOS' of github.com:mesonepigreco/tdscha into F…
mesonepigreco Nov 2, 2023
4942569
Update and rename README.md to README.rst
mesonepigreco Nov 18, 2023
faca2c2
Fix a bug when generating the directory inside the run in the paralle…
mesonepigreco Jun 11, 2024
4463232
Update python-app.yml
mesonepigreco Jun 11, 2024
479119b
Added the garbage collection.
mesonepigreco Jun 28, 2024
8e16a3e
fixed bug
mesonepigreco Dec 18, 2024
6a1e76d
Update python-app.yml
mesonepigreco Jan 4, 2022
f563607
Fixed an error if no symmetrization was done
mesonepigreco Jan 13, 2022
148cdb3
Added the possibility to restart a calculation with the cluster program
mesonepigreco Feb 9, 2022
585ff09
Update python-app.yml
mesonepigreco Feb 9, 2022
26adec4
Added the possibility to load the status from a file object
mesonepigreco Feb 13, 2022
66fd2b5
Added the possibility to save only the abc file, to avoid consuming a…
mesonepigreco Feb 13, 2022
73635f7
I do not remember
mesonepigreco Sep 8, 2022
7824471
bugfix
mesonepigreco Jun 2, 2022
380fe1c
Removed the default save_dir
mesonepigreco Jun 2, 2022
d890f82
Fixed a useless supercell generation in the initialization
mesonepigreco Aug 30, 2022
1373d1d
Update python-app.yml
mesonepigreco Aug 30, 2022
6b73dc5
Added the analyzer on the abc file
mesonepigreco Sep 7, 2022
a477db3
Added the julia runtine to try to speedup the calculation
mesonepigreco Sep 7, 2022
4d79136
Added the function to pass into the sparse matrix
mesonepigreco Sep 7, 2022
d7dea5c
Fixed an error
mesonepigreco Sep 8, 2022
3fd52f2
Finished (but not tested the julia version)
mesonepigreco Sep 8, 2022
71cb8c3
Now the julia thing works!!!
mesonepigreco Sep 8, 2022
7f60917
fast
mesonepigreco Sep 8, 2022
41c873f
Now it works and we can try a bit bigger system.
mesonepigreco Sep 8, 2022
95dfffd
Removed the force thread
mesonepigreco Sep 9, 2022
858bcf1
Avoid multithreading, it sucks
mesonepigreco Sep 9, 2022
bca1efb
Now the julia version works in parallel with the GoParallel function
mesonepigreco Sep 9, 2022
eb9fea6
Added a script for converting the output into a .abc file
mesonepigreco Sep 12, 2022
fa87fa6
Updated the setup.py
mesonepigreco Sep 12, 2022
cc2ddd7
Added some info for the symmetries
mesonepigreco Sep 14, 2022
a666706
Fixed something
mesonepigreco Sep 14, 2022
7b3171a
Fix
mesonepigreco Sep 14, 2022
f9c22cd
Fix
mesonepigreco Sep 15, 2022
0a71848
Debug
mesonepigreco Oct 11, 2022
8d7e72a
Fix
mesonepigreco Sep 15, 2022
491244b
Added a new script to plot the results directly
mesonepigreco Oct 25, 2022
e7e1fd8
Added the possibility to call the unpolarized raman
mesonepigreco Nov 17, 2022
faa1e7b
Fix a bug when loading the dynamical matrix
mesonepigreco Jan 20, 2023
c86e90a
Added the function to compute the Bose occupation
mesonepigreco May 23, 2023
44a152f
Added a new tdscha-convergence-analysis.py script
mesonepigreco Jun 18, 2023
f4c8abb
Reorder the iteration number
mesonepigreco Jun 18, 2023
93a7f73
Added a new subversion
mesonepigreco Jun 18, 2023
3d31b35
Now it seems julia is working with the auto recognition
mesonepigreco Jul 25, 2023
6e07f9c
Added the possibility to pass by objects to the StaticHessian to perf…
mesonepigreco Nov 1, 2023
bbabb04
Some bugfixes on the hessian module and the automatic detection of julia
mesonepigreco Nov 2, 2023
222e515
Update python-app.yml
mesonepigreco Nov 1, 2023
9b601b5
Fixing a bad mistake in the last commit
mesonepigreco Nov 2, 2023
6b32e44
Update python-app.yml
mesonepigreco Nov 2, 2023
d55e78b
Update and rename README.md to README.rst
mesonepigreco Nov 18, 2023
e432282
Fix a bug when generating the directory inside the run in the paralle…
mesonepigreco Jun 11, 2024
ccf0dc0
Update python-app.yml
mesonepigreco Jun 11, 2024
20fc0de
Added the garbage collection.
mesonepigreco Jun 28, 2024
e7e0d52
Modified plot
mesonepigreco Dec 18, 2024
47d8386
Merge branch 'Fast_LANCZOS' of github.com:SSCHAcode/tdscha into Fast_…
mesonepigreco Dec 18, 2024
62850f0
I do not know
mesonepigreco Jan 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions .github/workflows/python-app.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install flake8 pytest
pip install ase spglib==2.2 julia
python -c 'import julia; julia.install()'
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
Expand All @@ -37,15 +39,16 @@ jobs:
sudo apt-get install gfortran libblas-dev liblapack-dev build-essential \
mpich libopenmpi-dev libgl1-mesa-glx libglib2.0-0 \
libboost-all-dev

pip install mpi4py

pip install mpi4py numpy matplotlib scipy spglib --user

git clone https://github.com/SSCHAcode/CellConstructor.git
cd cellconstructor && sudo python setup.py install && cd ..
rm -r cellconstructor
cd CellConstructor && python setup.py install --user && cd ..
rm -r CellConstructor

git clone https://github.com/SSCHAcode/python-sscha.git
cd python-sscha && sudo python setup.py install && cd ..
cd python-sscha && python setup.py install --user && cd ..
rm -r python-sscha

MPICC=mpicc python setup.py install --user
Expand Down
142 changes: 108 additions & 34 deletions CModules/Lanczos.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,18 @@ void Lanczos::setup_from_input(string rootname) {
ignore_v3 = root.get<bool>("ignore_v3");
ignore_v4 = root.get<bool>("ignore_v4");

// Check the optional key restart (default false)
int step_done = 0;
restart = false;
if (root.count("restart")) {
restart = root.get<bool>("restart");
step_done = root.get<int>("step_done");
}

if (step_done >= n_steps) {
throw invalid_argument("Error, n_steps must be greather than step_done.\n");
}

// Now read the more complex values
pt::ptree &data = root.get_child("data");
N = data.get<int>("n_configs");
Expand Down Expand Up @@ -143,11 +155,12 @@ void Lanczos::setup_from_input(string rootname) {
}
file.close();

// Now read the 2D arrays

// Now read the 2D arrays (TODO: read also previous steps)
file.open(rootname + ".X.dat");
if (file.is_open()) {
string line;
for (int k = 0; k < N*n_modes; ++k) {
for (int k = 0; k < N*n_modes ; ++k) {
file >> X[k];
}
}
Expand All @@ -157,13 +170,58 @@ void Lanczos::setup_from_input(string rootname) {
file.open(rootname + ".Y.dat");
if (file.is_open()) {
string line;
for (int k = 0; k < N*n_modes; ++k) {
for (int k = 0; k < N*n_modes ; ++k) {
file >> Y[k];
}
}
file.close();


// Check if we need a restart
// And load P and Q
if (restart) {
file.open(rootname + ".abc");
if (file.is_open()) {
string line;
for (int k = 0; k < step_done ; ++k) {
file >> a[k];
file >> b[k];
file >> c[k];
}
}
file.close();

file.open(rootname + ".qbasis.out");
if (file.is_open()) {
string line;
for (int k = 0; k < n_psi * (step_done+1) ; ++k) {
file >> Qbasis[k];
}
}
file.close();

file.open(rootname + ".pbasis.out");
if (file.is_open()) {
string line;
for (int k = 0; k < n_psi * (step_done+1) ; ++k) {
file >> Pbasis[k];
}
}
file.close();

file.open(rootname + ".snorm.out");
if (file.is_open()) {
string line;
for (int k = 0; k < step_done + 1; ++k) {
file >> snorm[k];
}
}
file.close();

i_step = step_done;
}


file.open(rootname + ".blockid");
if (file.is_open()) {
string line;
Expand Down Expand Up @@ -480,8 +538,8 @@ void Lanczos::run() {
double * p_L = (double*) malloc(sizeof(double) * n_psi);

// Store the lenght of the variables
int lena = 0, lenb = 0, lenc = 0, lens = 1;
int len_bq = 1, len_bp = 1;
int lena = i_step, lenb = i_step, lenc = i_step, lens = i_step + 1;
int len_bq = i_step + 1, len_bp = i_step + 1;

// Prepare the first vector computing the norm of psi
double psi_norm = 0;
Expand All @@ -490,26 +548,23 @@ void Lanczos::run() {


// Fill the first vector of P and Q basis

psi_q = (double *) malloc(sizeof(double) * n_psi);
psi_p = (double *) malloc(sizeof(double) * n_psi);
double * sk_tilde = (double*) malloc(sizeof(double) * n_psi);

if (i_step == 0) {
for (int i = 0; i < n_psi; ++i) {
Qbasis[i] = psi[i] / psi_norm;
Pbasis[i] = psi[i] / psi_norm;
}
snorm[0] = 1;
} else {
cerr << "Error, starting from a non zero step is not implemented." << endl;
exit(EXIT_FAILURE);
}


psi_q = (double *) malloc(sizeof(double) * n_psi);
psi_p = (double *) malloc(sizeof(double) * n_psi);
double * sk_tilde = (double*) malloc(sizeof(double) * n_psi);
}


for (int j = 0; j < n_psi; ++j) {
psi_q[j] = Qbasis[j];
psi_p[j] = Pbasis[j];
psi_q[j] = Qbasis[i_step * n_psi + j];
psi_p[j] = Pbasis[i_step * n_psi + j];
}

double a_coeff, b_coeff, c_coeff;
Expand All @@ -521,30 +576,49 @@ void Lanczos::run() {
fstream file_snorm;

if (am_i_the_master()) {
file_abc.open(rootname + ".abc", fstream::out);
file_qbasis.open(rootname + ".qbasis.out", fstream::out);
file_pbasis.open(rootname + ".pbasis.out", fstream::out);
file_snorm.open(rootname + ".snorm.out", fstream::out);
if (restart) {
file_abc.open(rootname + ".abc", fstream::out | fstream::app);
file_qbasis.open(rootname + ".qbasis.out", fstream::out | fstream::app);
file_pbasis.open(rootname + ".pbasis.out", fstream::out | fstream::app);
file_snorm.open(rootname + ".snorm.out", fstream::out | fstream::app);
} else {
file_abc.open(rootname + ".abc", fstream::out);
file_qbasis.open(rootname + ".qbasis.out", fstream::out);
file_pbasis.open(rootname + ".pbasis.out", fstream::out);
file_snorm.open(rootname + ".snorm.out", fstream::out);
}
}

if (file_qbasis.is_open()) {
// Setup the required precision after the restart
if (file_qbasis.is_open())
file_qbasis << scientific << setprecision(16);
for (int j = 0; j < n_psi; ++j) {
file_qbasis << psi_q[j] << " ";
}
file_qbasis << endl;

}
if (file_pbasis.is_open()) {
if (file_pbasis.is_open())
file_pbasis << scientific << setprecision(16);
for (int j = 0; j < n_psi; ++j) {
file_pbasis << psi_p[j] << " ";

if (file_snorm.is_open())
file_snorm << scientific << setprecision(16);

if (! restart) {
if (file_qbasis.is_open()) {
file_qbasis << scientific << setprecision(16);
for (int j = 0; j < n_psi; ++j) {
file_qbasis << psi_q[j] << " ";
}
file_qbasis << endl;

}
if (file_pbasis.is_open()) {
file_pbasis << scientific << setprecision(16);
for (int j = 0; j < n_psi; ++j) {
file_pbasis << psi_p[j] << " ";
}
file_pbasis << endl;
}
file_pbasis << endl;
}

if (file_snorm.is_open()) {
file_snorm << scientific << setprecision(16) << snorm[0] << endl << flush;
if (file_snorm.is_open()) {
file_snorm << scientific << setprecision(16) << snorm[0] << endl << flush;
}
}

// Here the run
Expand All @@ -555,7 +629,7 @@ void Lanczos::run() {
if (DEBUG_LANC && am_i_the_master())
cout << "PSI POINTER (LINE " << __LINE__ << "): " << psi << endl;

for (int i = i_step; i < i_step + n_steps; ++i) {
for (int i = i_step; i < n_steps; ++i) {
if (am_i_the_master()) {
cout << endl;
cout << "===== NEW STEP " << i + 1 <<" =====" <<endl << endl;
Expand Down
2 changes: 1 addition & 1 deletion CModules/Lanczos.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ using namespace std;
class Lanczos {
int N, n_syms, n_modes, n_steps, n_blocks;
int i_step;
bool ignore_v2, ignore_v3, ignore_v4, reverse_L;
bool ignore_v2, ignore_v3, ignore_v4, reverse_L, restart;

double T, shift_value;

Expand Down
24 changes: 18 additions & 6 deletions CModules/LanczosFunctions.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@

#define DEB 0
#define DEB_L 0
#define USEBLAS


// These are used for debugging
#define X_VAL 1534
Expand Down Expand Up @@ -2191,6 +2193,7 @@ void get_f_average_from_Y_pert_sym_fast( double * X, double * Y, double * w,

// Compute the standard weight Y1
weight = 0;
// TODO, explot BLAS
for (mu = 0; mu < n_modes; ++mu) {
for (nu = 0; nu < n_modes; ++nu) {
weight -= displacement[mu] * displacement[nu] * Y1[mu * n_modes + nu] / 2;
Expand Down Expand Up @@ -2261,6 +2264,7 @@ void get_d2v_dR2_from_R_pert_sym_fast( double * X, double * Y, double * w, do
double N_eff = 0;
double u_mu, u_nu;

double sum = 0;

// Prepare the temporaney force and displacement (after symmetry applicaiton)
double * force = (double*) calloc(sizeof(double), n_modes);
Expand Down Expand Up @@ -2374,6 +2378,8 @@ void get_d2v_dR2_from_R_pert_sym_fast( double * X, double * Y, double * w, do
weight += f_ups(w[mu], T) * R1[mu] * displacement[mu];
}

//printf("i = %d, j = %d, weight = %e\n", i, j, weight);

// Compute the d2V_dR2
for (mu = 0; mu < n_modes; ++mu) {
u_mu = f_ups(w[mu], T) * displacement[mu];
Expand All @@ -2399,6 +2405,10 @@ void get_d2v_dR2_from_R_pert_sym_fast( double * X, double * Y, double * w, do
d2v_tmp[mu * n_modes + nu] -= u_mu * u_nu * weight * w_is[i] / 3;
}
}

/*sum = 0;
for (mu = 0; mu < n_modes * n_modes; ++mu) sum += d2v_tmp[mu];
printf("Total sum: %e\n", sum);*/
}
}

Expand Down Expand Up @@ -2678,16 +2688,17 @@ void get_d2v_dR2_from_Y_pert_sym_fast( double * X, double * Y, double * w, do
// First the standard weight
for (mu = 0; mu < n_modes; ++mu) {
for(nu = 0; nu < n_modes; ++nu) {
weight -= displacement[mu] * displacement[nu] * Y1[mu * n_modes + nu] / 2;
weight -= displacement[mu] * displacement[nu] * Y1[mu * n_modes + nu];
}
}
weight *= w_is[i] / 8;

// Now the first part of the potential
for (mu = 0; mu < n_modes; ++mu) {
u_mu = f_ups(w[mu], T) * displacement[mu];
for(nu = 0; nu < n_modes; ++nu) {
d2v_tmp[mu * n_modes + nu] -= force[nu] * u_mu * weight * w_is[i] / 4; // Permutation symmetry
d2v_tmp[nu * n_modes + mu] -= force[nu] * u_mu * weight * w_is[i] / 4; // Permutation symmetry
d2v_tmp[mu * n_modes + nu] -= force[nu] * u_mu * weight; // Permutation symmetry
d2v_tmp[nu * n_modes + mu] -= force[nu] * u_mu * weight; // Permutation symmetry
}
}

Expand All @@ -2698,17 +2709,18 @@ void get_d2v_dR2_from_Y_pert_sym_fast( double * X, double * Y, double * w, do
f_mu = f_psi(w[mu], T) * force[mu];
for(nu = 0; nu < n_modes; ++nu) {
f_nu = f_psi(w[nu], T) * force[nu];
weight -= f_mu * displacement[nu] * Y1[mu * n_modes + nu] / 4;
weight -= f_nu * displacement[mu] * Y1[mu * n_modes + nu] / 4;
weight -= f_mu * displacement[nu] * Y1[mu * n_modes + nu];
weight -= f_nu * displacement[mu] * Y1[mu * n_modes + nu];
}
}
weight *= w_is[i] / 8;

// Now the first part of the potential
for (mu = 0; mu < n_modes; ++mu) {
u_mu = f_ups(w[mu], T) * displacement[mu];
for(nu = 0; nu < n_modes; ++nu) {
u_nu = f_ups(w[nu], T) * displacement[nu];
d2v_tmp[mu * n_modes + nu] -= u_nu * u_mu * weight * w_is[i] / 2; // Permutation symmetry
d2v_tmp[mu * n_modes + nu] -= u_nu * u_mu * weight; // Permutation symmetry
}
}
}
Expand Down
8 changes: 8 additions & 0 deletions CModules/Utils.cpp
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
#include "Utils.hpp"

using namespace std;
bool am_i_the_master(void) {
int size, rank;
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);

if (rank == 0) return true;
return false;
}


bool is_file_exist(const char *fileName)
{
std::ifstream infile(fileName);
return infile.good();
}
3 changes: 3 additions & 0 deletions CModules/Utils.hpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
#ifndef LANC_UTILS
#define LANC_UTILS
#include <mpi.h>
#include <iostream>
#include <fstream>

bool am_i_the_master(void);
bool is_file_exist(const char *fileName);
#endif
Loading
Loading