Skip to content

Commit df8a930

Browse files
committed
patch 5
1 parent a459e78 commit df8a930

File tree

6 files changed

+52
-12
lines changed

6 files changed

+52
-12
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# gevolution-1.2
22

3-
Copyright (c) 2015-2020 Julian Adamek
4-
(Université de Genève & Observatoire de Paris & Queen Mary University of London)
3+
Copyright (c) 2015-2022 Julian Adamek
4+
(Université de Genève & Observatoire de Paris & Queen Mary University of London & Universität Zürich)
55

66
Permission is hereby granted, free of charge, to any person obtaining a copy
77
of this software and associated documentation files (the "Software"), to deal

class_tools.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#define perturb_init perturbations_init
2424
#define perturb_free perturbations_free
2525
#define perturb_output_titles perturbations_output_titles
26-
#define perturb_output_data perturbations_output_data
26+
#define perturb_output_data perturbations_output_data_at_z
2727

2828
#include <gsl/gsl_spline.h>
2929
#include "parser.hpp"

gevolution.hpp

+36-4
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
// 4. Fourier-space projection methods for the computation of the
1919
// curl and divergence of the velocity field
2020
//
21-
// Author: Julian Adamek (Université de Genève & Observatoire de Paris & Queen Mary University of London)
21+
// Author: Julian Adamek (Université de Genève & Observatoire de Paris & Queen Mary University of London & Universität Zürich)
2222
//
23-
// Last modified: April 2019
23+
// Last modified: August 2022
2424
//
2525
//////////////////////////
2626

@@ -580,7 +580,8 @@ Real update_q(double dtau, double dx, part_simple * part, double * ref_dist, par
580580
Real pgradB[3]={0,0,0};
581581
Real v2 = (*part).vel[0] * (*part).vel[0] + (*part).vel[1] * (*part).vel[1] + (*part).vel[2] * (*part).vel[2];
582582
Real e2 = v2 + params[0] * params[0];
583-
583+
584+
#if GRADIENT_ORDER == 1
584585
gradphi[0] = (1.-ref_dist[1]) * (1.-ref_dist[2]) * (phi(xphi+0) - phi(xphi));
585586
gradphi[1] = (1.-ref_dist[0]) * (1.-ref_dist[2]) * (phi(xphi+1) - phi(xphi));
586587
gradphi[2] = (1.-ref_dist[0]) * (1.-ref_dist[1]) * (phi(xphi+2) - phi(xphi));
@@ -593,6 +594,21 @@ Real update_q(double dtau, double dx, part_simple * part, double * ref_dist, par
593594
gradphi[0] += ref_dist[1] * ref_dist[2] * (phi(xphi+2+1+0) - phi(xphi+2+1));
594595
gradphi[1] += ref_dist[0] * ref_dist[2] * (phi(xphi+2+1+0) - phi(xphi+2+0));
595596
gradphi[2] += ref_dist[0] * ref_dist[1] * (phi(xphi+2+1+0) - phi(xphi+1+0));
597+
#elif GRADIENT_ORDER == 2
598+
for (int i=0; i<3; i++)
599+
{
600+
gradphi[i] = 0.5 * (1.-ref_dist[0]) * (1.-ref_dist[1]) * (1.-ref_dist[2]) * (phi(xphi+i) - phi(xphi-i));
601+
gradphi[i] += 0.5 * ref_dist[0] * (1.-ref_dist[1]) * (1.-ref_dist[2]) * (phi(xphi+i+0) - phi(xphi-i+0));
602+
gradphi[i] += 0.5 * (1.-ref_dist[0]) * ref_dist[1] * (1.-ref_dist[2]) * (phi(xphi+i+1) - phi(xphi-i+1));
603+
gradphi[i] += 0.5 * ref_dist[0] * ref_dist[1] * (1.-ref_dist[2]) * (phi(xphi+i+1+0) - phi(xphi-i+1+0));
604+
gradphi[i] += 0.5 * (1.-ref_dist[0]) * (1.-ref_dist[1]) * ref_dist[2] * (phi(xphi+2+i) - phi(xphi+2-i));
605+
gradphi[i] += 0.5 * ref_dist[0] * (1.-ref_dist[1]) * ref_dist[2] * (phi(xphi+2+i+0) - phi(xphi+2-i+0));
606+
gradphi[i] += 0.5 * (1.-ref_dist[0]) * ref_dist[1] * ref_dist[2] * (phi(xphi+2+i+1) - phi(xphi+2-i+1));
607+
gradphi[i] += 0.5 * ref_dist[0] * ref_dist[1] * ref_dist[2] * (phi(xphi+2+i+1+0) - phi(xphi+2-i+1+0));
608+
}
609+
#else
610+
#error GRADIENT_ORDER must be set to 1 or 2
611+
#endif
596612

597613
gradphi[0] *= (v2 + e2) / e2;
598614
gradphi[1] *= (v2 + e2) / e2;
@@ -698,7 +714,8 @@ Real update_q_Newton(double dtau, double dx, part_simple * part, double * ref_di
698714
#define xchi (sites[1])
699715

700716
Real gradpsi[3]={0,0,0};
701-
717+
718+
#if GRADIENT_ORDER == 1
702719
gradpsi[0] = (1.-ref_dist[1]) * (1.-ref_dist[2]) * (psi(xpsi+0) - psi(xpsi));
703720
gradpsi[1] = (1.-ref_dist[0]) * (1.-ref_dist[2]) * (psi(xpsi+1) - psi(xpsi));
704721
gradpsi[2] = (1.-ref_dist[0]) * (1.-ref_dist[1]) * (psi(xpsi+2) - psi(xpsi));
@@ -711,6 +728,21 @@ Real update_q_Newton(double dtau, double dx, part_simple * part, double * ref_di
711728
gradpsi[0] += ref_dist[1] * ref_dist[2] * (psi(xpsi+2+1+0) - psi(xpsi+2+1));
712729
gradpsi[1] += ref_dist[0] * ref_dist[2] * (psi(xpsi+2+1+0) - psi(xpsi+2+0));
713730
gradpsi[2] += ref_dist[0] * ref_dist[1] * (psi(xpsi+2+1+0) - psi(xpsi+1+0));
731+
#elif GRADIENT_ORDER == 2
732+
for (int i=0; i<3; i++)
733+
{
734+
gradpsi[i] = 0.5 * (1.-ref_dist[0]) * (1.-ref_dist[1]) * (1.-ref_dist[2]) * (psi(xpsi+i) - psi(xpsi-i));
735+
gradpsi[i] += 0.5 * ref_dist[0] * (1.-ref_dist[1]) * (1.-ref_dist[2]) * (psi(xpsi+i+0) - psi(xpsi-i+0));
736+
gradpsi[i] += 0.5 * (1.-ref_dist[0]) * ref_dist[1] * (1.-ref_dist[2]) * (psi(xpsi+i+1) - psi(xpsi-i+1));
737+
gradpsi[i] += 0.5 * ref_dist[0] * ref_dist[1] * (1.-ref_dist[2]) * (psi(xpsi+i+1+0) - psi(xpsi-i+1+0));
738+
gradpsi[i] += 0.5 * (1.-ref_dist[0]) * (1.-ref_dist[1]) * ref_dist[2] * (psi(xpsi+2+i) - psi(xpsi+2-i));
739+
gradpsi[i] += 0.5 * ref_dist[0] * (1.-ref_dist[1]) * ref_dist[2] * (psi(xpsi+2+i+0) - psi(xpsi+2-i+0));
740+
gradpsi[i] += 0.5 * (1.-ref_dist[0]) * ref_dist[1] * ref_dist[2] * (psi(xpsi+2+i+1) - psi(xpsi+2-i+1));
741+
gradpsi[i] += 0.5 * ref_dist[0] * ref_dist[1] * ref_dist[2] * (psi(xpsi+2+i+1+0) - psi(xpsi+2-i+1+0));
742+
}
743+
#else
744+
#error GRADIENT_ORDER must be set to 1 or 2
745+
#endif
714746

715747
if (nfield>=2 && fields[1] != NULL)
716748
{

main.cpp

+7-3
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
//
2727
// main control sequence of Geneva N-body code with evolution of metric perturbations (gevolution)
2828
//
29-
// Author: Julian Adamek (Université de Genève & Observatoire de Paris & Queen Mary University of London)
29+
// Author: Julian Adamek (Université de Genève & Observatoire de Paris & Queen Mary University of London & Universität Zürich)
3030
//
31-
// Last modified: November 2019
31+
// Last modified: August 2022
3232
//
3333
//////////////////////////
3434

@@ -167,6 +167,10 @@ int main(int argc, char **argv)
167167
COUT << " (_| (-' \\/ (_) (_ (_| ( ( (_) /\\/ version 1.2 running on " << n*m << " cores." << endl;
168168
COUT << " -'" << endl << COLORTEXT_RESET << endl;
169169

170+
#if GRADIENT_ORDER > 1
171+
COUT << " compiled with GRADIENT_ORDER=" << GRADIENT_ORDER << endl;
172+
#endif
173+
170174
if (settingsfile == NULL)
171175
{
172176
COUT << COLORTEXT_RED << " error" << COLORTEXT_RESET << ": no settings file specified!" << endl;
@@ -206,7 +210,7 @@ int main(int argc, char **argv)
206210
box[1] = sim.numpts;
207211
box[2] = sim.numpts;
208212

209-
Lattice lat(3,box,1);
213+
Lattice lat(3,box,GRADIENT_ORDER);
210214
Lattice latFT;
211215
latFT.initializeRealFFT(lat,0);
212216

manual.pdf

747 Bytes
Binary file not shown.

metadata.hpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
//
55
// Constants and metadata structures
66
//
7-
// Author: Julian Adamek (Université de Genève & Observatoire de Paris & Queen Mary University of London)
7+
// Author: Julian Adamek (Université de Genève & Observatoire de Paris & Queen Mary University of London & Universität Zürich)
88
//
9-
// Last modified: April 2019
9+
// Last modified: August 2022
1010
//
1111
//////////////////////////
1212

@@ -15,6 +15,10 @@
1515

1616
#define GEVOLUTION_VERSION 1.2
1717

18+
#ifndef GRADIENT_ORDER
19+
#define GRADIENT_ORDER 1
20+
#endif
21+
1822
#ifndef MAX_OUTPUTS
1923
#define MAX_OUTPUTS 32
2024
#endif

0 commit comments

Comments
 (0)