Page MenuHomec4science

No OneTemporary

File Metadata

Created
Thu, Nov 28, 09:50
diff --git a/ChiBenchmark/chiBenchmark/ChiBenchmark b/ChiBenchmark/chiBenchmark/ChiBenchmark
index 35a59eb..0de40ac 100755
Binary files a/ChiBenchmark/chiBenchmark/ChiBenchmark and b/ChiBenchmark/chiBenchmark/ChiBenchmark differ
diff --git a/ChiBenchmark/chiBenchmark/TestResultParameter.par b/ChiBenchmark/chiBenchmark/TestResultParameter.par
index 23f1832..3475269 100644
--- a/ChiBenchmark/chiBenchmark/TestResultParameter.par
+++ b/ChiBenchmark/chiBenchmark/TestResultParameter.par
@@ -1,106 +1,106 @@
#The user defines which mode of lenstool he wants to run here
runmode
source 0 sources.cat
image 1 theoretical_images_time.txt
#inverse 0
grid 1 22 1.5
poten 1 1000 1.5
mass 1 1000 0.4 1.5
dpl 1 1000 1.5
amplif 1 1000 1.5
- nbgridcells 100
+ nbgridcells 1000
Debug # true activates debug mode
end
frame
#dmax 45 #either dmax or x and y have to be declared when a grid is used
xmin -50.000
xmax 50.000
ymin -50.000
ymax 50.000
end
cosmology
model 1
H0 70.000
omegaM 0.300
omegaX 0.700
omegaK 0.000
wA 0.000
wX -1.000
end
potentiel 1
profil 8 #Profile: 5 SIS, 8 PIEMD
x_centre 0.000 #X Position [arcsec]
y_centre 0.000 #Y Position [arcsec]
ellipticity 0.11 #Ellipticity
v_disp 800. #Dispersion Velocity [km/s]
rcut 500 #Cut radius (PIEMD distribution)
rcore 5 #Core radius (PIEMD distribution)
z_lens 0.4 #Redshift of lens
end
potentiel 2
profil 8 #Profile: 5 SIS, 8 PIEMD
x_centre 25.000 #X Position [arcsec]
y_centre 20.000 #Y Position [arcsec]
ellipticity 0.11 #Ellipticity
v_disp 140. #Dispersion Velocity [km/s]
rcut 150 #Cut radius (PIEMD distribution)
rcore 1 #Core radius (PIEMD distribution)
z_lens 0.4 #Redshift of lens
end
potentiel 4
profil 8 #Profile: 5 SIS, 8 PIEMD
x_centre -16.000 #X Position [arcsec]
y_centre 2.000 #Y Position [arcsec]
ellipticity 0.11 #Ellipticity
v_disp 130. #Dispersion Velocity [km/s]
rcut 150 #Cut radius (PIEMD distribution)
rcore 1 #Core radius (PIEMD distribution)
z_lens 0.4 #Redshift of lens
end
potentiel 5
profil 8 #Profile: 5 SIS, 8 PIEMD
x_centre -10.000 #X Position [arcsec]
y_centre 0.000 #Y Position [arcsec]
ellipticity 0.11 #Ellipticity
v_disp 110. #Dispersion Velocity [km/s]
rcut 150 #Cut radius (PIEMD distribution)
rcore 1 #Core radius (PIEMD distribution)
z_lens 0.4 #Redshift of lens
end
potentiel 6
profil 8 #Profile: 5 SIS, 8 PIEMD
x_centre 3.000 #X Position [arcsec]
y_centre -10.000 #Y Position [arcsec]
ellipticity 0.11 #Ellipticity
v_disp 80. #Dispersion Velocity [km/s]
rcut 150 #Cut radius (PIEMD distribution)
rcore 1 #Core radius (PIEMD distribution)
z_lens 0.4 #Redshift of lens
end
potentiel 7
profil 8 #Profile: 5 SIS, 8 PIEMD
x_centre 17.000 #X Position [arcsec]
y_centre -7.000 #Y Position [arcsec]
ellipticity 0.11 #Ellipticity
v_disp 120. #Dispersion Velocity [km/s]
rcut 150 #Cut radius (PIEMD distribution)
rcore 1 #Core radius (PIEMD distribution)
z_lens 0.4 #Redshift of lens
end
limit 1
x_centre 1 -1.0 1.0 0.01000
y_centre 1 -1.0 1.0 0.010000
ellipticity 1 0.05 0.75 0.01
angle_pos 0 0. 180.0 0.1
rcore 0 0.1 4. 0.100000
rcut 0 1.0 20.0 0.10000
v_disp 0 200.0 1000.0 0.10000
end
cline
nplan 1 1.5
dmax 50
limitLow 0.2
limitHigh 10
nbgridcells 1000
end
finish
diff --git a/ChiBenchmark/chiBenchmark/chi.cpp b/ChiBenchmark/chiBenchmark/chi.cpp
index c77e840..d61bfe1 100644
--- a/ChiBenchmark/chiBenchmark/chi.cpp
+++ b/ChiBenchmark/chiBenchmark/chi.cpp
@@ -1,365 +1,364 @@
#include <iostream>
#include <string.h>
//#include <cuda_runtime.h>
#include <math.h>
#include <sys/time.h>
#include <fstream>
#include <immintrin.h>
#include "simd_math.h"
#include "chi.hpp"
#include "structure.h"
void chi_bruteforce(double *chi, int *error, runmode_param *runmode, const struct Potential *lens, const struct grid_param *frame, const int *nimages_strongLensing, galaxy *images){
int bid=0;
int tid=0; // index of the thread within the block
double dx,dy; //pixelsize
dx = (frame->xmax - frame->xmin)/(runmode->nbgridcells-1);
dy = (frame->ymax - frame->ymin)/(runmode->nbgridcells-1);
int imagenumber; // index of the image within a set
int index=0; // index of the image within the total image array
double im_dist[MAXIMPERSOURCE]; // distance to a real image for an "theoretical" image found from a theoretical source
int im_index; // index of the closest real image for an image found from a theoretical source
int second_closest_id; // index of the second closest real image for an image found from a theoretical source
int thread_found_image = 0; // at each iteration in the lens plane, turn to 1 whether the thread find an image
struct point im_position, temp; // position of the image found from a theoretical source + temp variable for comparison
struct triplet Tsup, Tinf, Tsupsource, Tinfsource;// triangles for the computation of the images created by the theoretical sources
int Nb_thread_row = (int) sqrtf(threadsPerBlock); // Nb_thread_row is the number of threads per line
struct galaxy sources[MAXIMPERSOURCE]; // theoretical sources (common for a set)
int nimagesfound[MAXIMPERSOURCE][MAXIMPERSOURCE]; // number of images found from the theoretical sources
struct point tim[MAXIMPERSOURCE][MAXIMPERSOURCE]; // theoretical images (computed from sources)
double temp_chi; // temporary chi square result (for a set of images)
int mylock; // atomic lock variable for cuda atomic operations, used to avoid interference between threads when they write the images positions
struct triplet Ttemp; //Temp triangle needed for rescaling information
int tooManyImages; //Overflow warning, If too many images overflow the memory allocated to the stacks, the code stops
int DEBUG = 0;
if(bid ==0)
DEBUG = 1;
index = 0;
*chi = 0;
for( int source_id = 0; source_id < runmode->nsets; source_id ++){
//////////////////////////////////////Initialisation//////////////////////////////////////
for (int i=0; i < nimages_strongLensing[source_id]; ++i){
for (int j=0; j < nimages_strongLensing[source_id]; ++j){
nimagesfound[i][j] = 0;
}
}
for( int image_id = 0; image_id < nimages_strongLensing[source_id]; image_id++){
//////////////////////////////////////computation of theoretical sources//////////////////////////////////////
module_chiClassic_transformImageToSourcePlane(runmode, &images[index+image_id].center,images[index+image_id].dr,lens,&sources[source_id].center);
//if (DEBUG ==1 )
//printf("index %d image_id %d source_id %d %f \n",index, image_id, source_id,images[index+image_id].redshift);
sources[source_id].redshift = images[index+image_id].redshift;
sources[source_id].dr = images[index+image_id].dr;
sources[source_id].dls = images[index+image_id].dls;
sources[source_id].dos = images[index+image_id].dos;
for (double x_pos = frame->xmin; x_pos <= frame->xmax; x_pos += dx){
for (double y_pos = frame->ymin; y_pos <= frame->ymax; y_pos += dx){
//printf("%f %f %f %f %f %f \n", frame->xmin, frame->ymin, x_pos, y_pos,frame->xmax,frame->ymax);
// Define the upper + lower triangle, both together = square = pixel
Tsup.a.x=x_pos;
Tsup.b.x=x_pos;
Tsup.c.x=x_pos+dx;
Tinf.a.x=x_pos+dx;
Tinf.b.x=x_pos+dx;
Tinf.c.x=x_pos;
Tsup.a.y=y_pos;
Tsup.b.y=y_pos+dy;
Tsup.c.y=y_pos;
Tinf.a.y=y_pos+dy;
Tinf.b.y=y_pos;
Tinf.c.y=y_pos+dy;
// Lens to Sourceplane conversion of triangles
module_chiClassic_transformtriangleImageToSourcePlane(runmode,&Tsup,sources[source_id].dr, lens, &Tsupsource);
module_chiClassic_transformtriangleImageToSourcePlane(runmode,&Tinf,sources[source_id].dr, lens, &Tinfsource);
thread_found_image=0;
if(module_chiClassic_insideborder(&sources[source_id].center,&Tsupsource)==1){
thread_found_image=1; // thread has just found an image
im_index=0;
im_position=module_chiClassic_barycenter(&Tsup);
im_dist[im_index]=module_chiClassic_dist(im_position,images[index+im_index].center); // get the distance to the real image
- for(int i=1; i<nimages_strongLensing[bid]; i++){ // get the distance to each real image and keep the index of the closest real image
+ for(int i=1; i<nimages_strongLensing[source_id]; i++){ // get the distance to each real image and keep the index of the closest real image
im_dist[i]=module_chiClassic_dist(im_position,images[index+i].center);
if(im_dist[i]<im_dist[im_index]){
im_index=i;
}
+ //printf(" im_index %d im_dist actual %f im_dist %f \n",im_index, im_dist[im_index], im_dist[i]);
}
if(DEBUG ==1){
//printf(" %d Found something at x %f y %f by bid %d and tid %d\n", image_id,x_pos,y_pos, bid , tid);
//printf("T ax %f ay %f cx %f cy %f Tsour ax %f ay %f cx %f cy %fby bid %d and tid %d\n", Tinf.a.x, Tinf.a.y , Tinf.c.x, Tinf.c.y ,Tinfsource.a.x, Tinfsource.a.y , Tinfsource.c.x, Tinfsource.c.y , bid , tid);
//printf(" %d Source x %f y %f by bid %d and tid %d\n", source_id,sources[source_id].center.x, sources[source_id].center.y , bid , tid);
- printf(" %d Img x %f y %f by bid %d and tid %d\n",image_id, im_position.x, im_position.y , bid , tid);
+ //printf(" %d Img x %f y %f by bid %d and tid %d\n",image_id, im_position.x, im_position.y , bid , tid);
}
}
if(module_chiClassic_inside(&sources[source_id].center,&Tinfsource)==1){
thread_found_image=1; // thread has just found an image
im_index=0;
im_position=module_chiClassic_barycenter(&Tinf); // get the barycenter of the triangle
im_dist[im_index]=module_chiClassic_dist(im_position,images[index+im_index].center); // get the distance to the real image
- for(int i=1; i<nimages_strongLensing[bid]; i++){ // get the distance to each real image and keep the index of the closest real image
+ for(int i=1; i<nimages_strongLensing[source_id]; i++){ // get the distance to each real image and keep the index of the closest real image
im_dist[i]=module_chiClassic_dist(im_position,images[index+i].center);
//printf("im_dist[i] %f, im_position %f %f , images[index+im_index].center %f %f\n",im_dist[i], im_position.x,im_position.y, images[index+i].center.x,images[index+i].center.y);
if(im_dist[i]<im_dist[im_index]){
im_index=i;
}
}
if(DEBUG ==1){
//printf(" %d Found something at x %f y %f by bid %d and tid %d\n",image_id, x_pos,y_pos, bid , tid);
//printf("T ax %f ay %f cx %f cy %f Tsour ax %f ay %f cx %f cy %fby bid %d and tid %d\n", Tinf.a.x, Tinf.a.y , Tinf.c.x, Tinf.c.y ,Tinfsource.a.x, Tinfsource.a.y , Tinfsource.c.x, Tinfsource.c.y , bid , tid);
//printf(" %d Source x %f y %f by bid %d and tid %d\n",source_id, sources[source_id].center.x, sources[source_id].center.y , bid , tid);
- printf(" %d Img x %f y %f by bid %d and tid %d\n",image_id, im_position.x, im_position.y , bid , tid);
+ //printf(" %d Img x %f y %f by bid %d and tid %d\n",image_id, im_position.x, im_position.y , bid , tid);
}
}
int skip_image = 0;
if(thread_found_image == 1 ){
skip_image = 0;
// Sometimes due to the numerical errors at the centerpoint, for SIE potentials an additional image will appear at the center of the Potential.
// This is due to the fact that it is not possible to simulate an infinity value at the center correctly
for (int i=0; i < runmode->nhalos; ++i){
//printf("lens[i].type %d %f %f %f \n",lens[i].type, fabs(im_position.x - lens[i].position.x) , fabs(im_position.y - lens[i].position.y), dx/2.);
if ( lens[i].type == 5 and fabs(im_position.x - lens[i].position.x) <= dx/2. and fabs(im_position.y - lens[i].position.y) <= dx/2.){
skip_image = 1;
printf("WARNING: You are using SIE potentials. An image to close to one of the potential centers has been classified as numerical error and removed \n");
}
}
if(skip_image==0){
//checking whether a closest image has already been found
- printf("imagenumber %d im_index %d , im_position.x %f , im_position.y %f \n", image_id, im_index , im_position.x , im_position.y);
+ //printf("imagenumber %d im_index %d , im_position.x %f , im_position.y %f \n", image_id, im_index , im_position.x , im_position.y);
if(nimagesfound[image_id][im_index]==0){ // if no image found up to now
tim[image_id][im_index]=im_position; //image position is allocated to theoretical image
nimagesfound[image_id][im_index]++;
}
else if(nimagesfound[image_id][im_index]>0){ // if we have already found an image
// If the new image we found is closer than the previous image
if(im_dist[im_index]<module_chiClassic_dist(images[index+im_index].center,tim[image_id][im_index]))
{
temp=tim[image_id][im_index]; // we store the position of the old image in temp
tim[image_id][im_index]=im_position; // we link the observed image with the image we just found
}
else
{
temp=im_position; // we store the position of the image we just found in temp
}
// initialising second_closest_id to the highest value
// Loop over all images in the set except the closest one
// and initialize to the furthest away image
second_closest_id=0;
- for(int i=1; i<nimages_strongLensing[bid] && i!=im_index; i++)
+ for(int i=1; i<nimages_strongLensing[source_id] && i!=im_index; i++)
{
if(im_dist[i]>im_dist[second_closest_id]) second_closest_id=i;
}
///////////////////////////////////////////////////////////////
// Loop over all images in the set that are not yet allocated to a theoretical image
// and allocate the closest one
- for(int i=0; i<nimages_strongLensing[bid] && nimagesfound[image_id][i]==0; i++) // we search for an observed image not already linked (nimagesfound=0)
+ for(int i=0; i<nimages_strongLensing[source_id] && nimagesfound[image_id][i]==0; i++) // we search for an observed image not already linked (nimagesfound=0)
{
if(im_dist[i]<im_dist[second_closest_id])
{
second_closest_id=i;
im_index=i; // im_index value changes only if we found a not linked yet image
tim[image_id][im_index]=temp; // if we found an observed and not already linked image, we allocate the theoretical image temp
}
}
nimagesfound[image_id][im_index]++; // increasing the total number of images found (If we find more than 1 theoretical image linked to 1 real image, these theoretical
// images are included in this number)
}
}
thread_found_image=0; // for next iteration
}
}
}
}
//////////////////////////////////////computing the local chi square//////////////////////////////////////
double chiimage;
for( int iter = 0; iter < nimages_strongLensing[source_id]*nimages_strongLensing[source_id]; iter++){
- int i=tid/nimages_strongLensing[iter];
- int j=tid % nimages_strongLensing[iter];
+ int i=iter/nimages_strongLensing[source_id];
+ int j=iter % nimages_strongLensing[source_id];
+
if(i!=j){
// In the current method, we get the source in the source plane by ray tracing image in nimagesfound[i][i]. If we ray trace back,
// we arrive again at the same position and thus the chi2 from it is 0. Thus we do not calculate the chi2 (-> if i!=j)
if(nimagesfound[i][j]>0){
chiimage=pow(images[index+j].center.x-tim[i][j].x,2)+pow(images[index+j].center.y-tim[i][j].y,2); // compute the chi2
*chi += chiimage;
- //printf("chi %f %f %f bid %d tid %d X %f Y %f\n", chi,temp_chi,chiimage,bid,tid ,tim[i][j].x,tim[i][j].y);
}
else if(nimagesfound[i][j]==0){
// If we do not find a correpsonding image, we add a big value to the chi2 to disfavor the model
*chi += 100.*nimages_strongLensing[source_id];
- //
- //printf("chi %f %f %f bid %d tid %d X %f Y %f\n", chi,temp_chi,chiimage,bid,tid ,tim[i][j].x,tim[i][j].y);
}
}
}
for (int i=0; i < nimages_strongLensing[source_id]; ++i){
for (int j=0; j < nimages_strongLensing[source_id]; ++j){
printf(" %d",nimagesfound[i][j]);
}
printf("\n");
}
//Incrementing Index: Images already treated by previous source_id
index+=nimages_strongLensing[source_id];
}
}
/** @brief Tranform a point from image to source plane. Result stored in sourcepoint argument
*
* Tranform a point from image to source plane using lensequation
*
* @param image_point image position
* @param dlsds dls/ds
* @param nhalos number of halos
* @param potential_param gravitational potential information
* @param source_point address where source information will be stored
*
*
*/
void module_chiClassic_transformImageToSourcePlane(const runmode_param *runmode, const struct point *image_point, double dlsds, const struct Potential *lens, struct point *source_point)
{ // dlsds is the distance between lens and source divided by the distance observer-source
struct point Grad; // gradient
Grad = module_potentialDerivatives_totalGradient(runmode,image_point, lens);
source_point->x = image_point->x - dlsds * Grad.x;
source_point->y = image_point->y - dlsds * Grad.y;
//printf("dlsds %f", dlsds);
}
/** @brief Tranform a triangle from image to source plane. Result stored in S triangle argument
*
* Return a triplet of points in the source plane corresponding to the triplet
* of images. dlsds is the lens efficiency at the source redshift.
* I is the triangle in the image plane (input), S is the same triangle in the source plane (output)
*
* @param I triangle in image plane
* @param dlsds dls/ds
* @param nhalos number of halos
* @param potential_param gravitational potential information
* @param S address where triangle source information will be stored
*
*
*/
void module_chiClassic_transformtriangleImageToSourcePlane(const runmode_param *runmode, struct triplet *I, double dlsds, const struct Potential *lens, struct triplet *S)
{
module_chiClassic_transformImageToSourcePlane(runmode, &I->a, dlsds, lens, &S->a);
module_chiClassic_transformImageToSourcePlane(runmode, &I->b, dlsds, lens, &S->b);
module_chiClassic_transformImageToSourcePlane(runmode, &I->c, dlsds, lens, &S->c);
}
/** @brief Return the scalar triple product (a*b).c of the 3 vectors A[x,y,1], B[x,y,1], C[x,y,1].
* If 2 of the 3 vectors are equal, colinear or form an orthogonal basis,
* the triple product is 0.
* This is also the determinant of the matrix
* | Ax Bx Cx |
* | Ay By Cy |
* | 1 1 1 |
*/
double module_chiClassic_determinant(const struct point *A,
const struct point *B,
const struct point *C)
{
return( B->x * C->y - B->y * C->x +
A->x * B->y - A->y * B->x +
A->y * C->x - A->x * C->y );
}
/** @brief Return 1 if P is inside the triangle T, 0 otherwise.
*
* Return 1 if P is inside the triangle T, 0 otherwise.
* @param P a point
* @param T a triplet of points.
*
*
*/
int module_chiClassic_inside(const struct point *P, struct triplet *T)
{
double s, s1, s2, d;
d = module_chiClassic_determinant(&T->a, &T->b, &T->c);
s = module_chiClassic_determinant(&T->a, &T->b, P) * d;
s1 = module_chiClassic_determinant(&T->b, &T->c, P) * d;
s2 = module_chiClassic_determinant(&T->c, &T->a, P) * d;
return((s > 0.) && (s1 > 0.) && (s2 > 0.)); // If all determinants are positive,
// the point must be inside the triangle
}
/** @brief Return 1 if P is inside the triangle T or on its border, 0 otherwise.
*
* Return 1 if P is inside the triangle T or on its border, 0 otherwise.
* @param P a point
* @param T a triplet of points.
*
*
*/
int module_chiClassic_insideborder(const struct point *P, struct triplet *T)
{
double s, s1, s2, d;
d = module_chiClassic_determinant(&T->a, &T->b, &T->c);
s = module_chiClassic_determinant(&T->a, &T->b, P) * d;
s1 = module_chiClassic_determinant(&T->b, &T->c, P) * d;
s2 = module_chiClassic_determinant(&T->c, &T->a, P) * d;
return((s >= 0.) && (s1 >= 0.) && (s2 >= 0.)); // If all determinants are positive or 0,
// the point must be inside the triangle or on its border
}
/** @brief Barycentre of a triplet/triangle
*
* A is a structure triplet that contains 3 structures point a,b and c
* Return value B is a point
*
*
*/
struct point module_chiClassic_barycenter(struct triplet *A)
{
struct point B;
B.x = (A->a.x + A->b.x + A->c.x) / 3.;
B.y = (A->a.y + A->b.y + A->c.y) / 3.;
return(B);
}
/** @brief Euclidean distance between 2 points
*
* Euclidean distance between 2 points
*
*/
double module_chiClassic_dist(struct point A, struct point B)
{
double x, y;
x = A.x - B.x;
y = A.y - B.y;
return(sqrt(x*x + y*y));
}
diff --git a/ChiBenchmark/chiBenchmark/theoretical_images_time.txt b/ChiBenchmark/chiBenchmark/theoretical_images_time.txt
index 8222284..6412660 100644
--- a/ChiBenchmark/chiBenchmark/theoretical_images_time.txt
+++ b/ChiBenchmark/chiBenchmark/theoretical_images_time.txt
@@ -1,28 +1,30 @@
-1 -16.40331 -21.3038 42.2878 0.1858529 1.537192 1.5 5.54982
-1 1.211788 1.181785 15.23529 0.01610838 0.9175564 1.5 9.313525
-1 5.288862 4.878821 47.73512 0.0664875 3.627845 1.5 6.534336
-2 -11.68283 -14.94316 32.01583 0.4230731 2.729534 1.5 4.960023
-2 0.1583492 0.03833717 1.029285 0.01767288 0.4925226 1.5 12.13987
-2 15.50322 1.761843 21.46617 0.3592727 2.069925 1.5 5.571526
-3 -18.48018 -18.59019 34.70544 0.2684122 2.47351 1.5 5.369024
-3 1.201787 0.8817548 2.871875 0.06907267 3.059562 1.5 9.548344
-3 6.448978 4.448778 12.00845 0.3001395 1.461217 1.5 6.399999
-4 -11.12945 -11.35947 27.01259 0.2786796 2.612895 1.5 5.597309
-4 2.6686 19.77031 11.44234 0.3040265 3.589068 1.5 6.435422
-4 -0.08834217 -0.2183552 0.7805617 0.01205635 1.112686 1.5 12.85493
-5 -12.48958 -18.27016 10.6147 0.5626736 1.937741 1.5 5.849811
-5 0.4017068 0.3617028 0.8806488 0.0293225 1.187549 1.5 11.76021
-5 10.46938 7.349068 11.99595 0.3247444 2.649565 1.5 6.313781
-6 -1.361803 -12.77294 52.24541 0.03493096 3.154616 1.5 7.140002
-6 1.06844 23.03064 44.62869 0.03248871 2.939099 1.5 7.389781
-6 -0.07167383 -0.6217288 2.05649 0.004406628 2.591178 1.5 12.90007
-7 24.45078 35.45188 12.03088 0.3008483 1.463511 1.5 6.390063
-8 -7.239057 -4.318765 17.04554 0.09688595 1.487076 1.5 7.248989
-8 -1.171784 -0.7817448 3.348123 0.02047433 2.902479 1.5 10.70364
-8 18.2835 17.54342 56.52159 0.07901845 2.380442 1.5 6.168811
-9 -12.27289 23.86072 20.47096 0.136267 2.27813 1.5 6.680109
-9 4.452112 -6.238957 28.01408 0.04784984 2.242146 1.5 7.475789
-9 0.8684202 -1.301797 8.005488 0.009684243 5.314029 1.5 10.5703
-10 -0.1216788 0.6784012 1.905763 0.01315577 4.78328 1.5 11.78872
-10 -2.361903 11.99953 14.26937 0.2734991 2.161853 1.5 6.308281
-10 2.418575 -23.46401 12.01995 0.3007466 4.608408 1.5 6.391425
\ No newline at end of file
+1 2.6786468 2.9037279 34.846802 0.044513 62.43558 1.5000 7.31
+1 5.2888897 4.8787554 47.735124 0.066488 3.62739 1.5000 6.53
+1 -6.8086470 -16.2076426 26.162501 0.060076 117.79302 1.5000 7.30
+2 15.5032891 1.7617644 21.466020 0.359261 2.07301 1.5000 5.57
+3 2.5304260 2.1849883 8.511022 0.162767 47.98717 1.5000 7.44
+3 6.4490011 4.4488118 12.008366 0.300141 1.46091 1.5000 6.40
+3 -7.5440270 -15.3713629 4.957994 0.485721 68.15466 1.5000 6.84
+4 2.6738401 0.5954620 29.148894 0.064291 22.85890 1.5000 7.11
+4 8.2623316 1.3865370 40.771796 0.139784 161.45417 1.5000 5.90
+4 -11.1295251 -11.3594405 27.012207 0.278682 2.61348 1.5000 5.60
+5 3.0453471 -14.6434271 44.999121 0.021095 16.73969 1.5000 7.85
+5 6.1796298 11.4419700 66.221755 0.053129 157.24148 1.5000 6.42
+5 -11.0379360 1.9530896 19.580203 0.033140 106.63190 1.5000 8.26
+5 -0.8539115 0.4926000 8.392786 0.015488 26.92725 1.5000 10.01
+5 10.4693642 7.3490806 11.995811 0.324747 2.65076 1.5000 6.31
+6 10.1097152 -6.2464237 56.363855 0.018886 63.74649 1.5000 7.73
+6 -1.3617639 -12.7729063 52.246984 0.034931 3.15449 1.5000 7.14
+6 -11.6809018 -3.7679455 35.394650 0.032772 122.93965 1.5000 7.63
+6 -0.4600145 15.0687280 24.364859 0.024295 17.47823 1.5000 8.36
+6 -0.1529693 -0.8591027 7.489679 0.013420 45.16188 1.5000 10.29
+7 24.4507674 35.4518845 12.030882 0.300848 1.46351 1.5000 6.39
+8 -2.6271020 -2.2046355 12.055927 0.043543 37.78661 1.5000 8.49
+8 -7.2390101 -4.3187607 17.045688 0.096885 1.48771 1.5000 7.25
+8 6.0938916 15.4635864 9.297695 0.104956 20.17155 1.5000 7.82
+9 -12.2728959 23.8607190 20.470957 0.136267 2.27813 1.5000 6.68
+10 8.3810955 7.9105619 16.010080 0.133434 131.96676 1.5000 6.96
+10 -2.3617972 11.9995620 14.269353 0.273494 2.16134 1.5000 6.31
+10 -0.8222386 -15.6561364 5.264783 0.154318 161.62896 1.5000 8.01
+10 -10.2774711 6.2618147 6.811358 0.355477 41.27177 1.5000 6.83
+10 -0.0645842 1.0735716 1.595682 0.095845 135.82529 1.5000 9.83
\ No newline at end of file
diff --git a/ChiBenchmark/lenstoolchi/examples/example_with_images/test_image.par b/ChiBenchmark/lenstoolchi/examples/example_with_images/test_image.par
index f208a5a..011fc39 100644
--- a/ChiBenchmark/lenstoolchi/examples/example_with_images/test_image.par
+++ b/ChiBenchmark/lenstoolchi/examples/example_with_images/test_image.par
@@ -1,65 +1,64 @@
runmode
reference 3 133.69358 -1.36032
image 1 image_wcs.cat
source 0 source-test_cosmo.cat
mass 3 100 0.400 mass.fits
shearfield 1 2.000 shear.dat
grille 1 100 2.0 # grid in the source plane
- inverse 3 0.1
+ inverse 0 0.1
end
image
multfile 1 image_wcs.cat
mult_wcs 1
sigposArcsec 0.1
- forme 0
+ forme -1
end
grille
nombre 100
polaire 0
nlentille 1
nlens_opt 1
end
source
z_source 1.000
end
potentiel 1
profil 81
x_centre 0.000
-t
- y_centre 0.000
+ y_centre 0.000
ellipticit 0.65
angle_pos 120.
core_radius 3.00
cut_radius 250.000
v_disp 800.
z_lens 0.4
end
limit 1
x_centre 0 -1.0 1.0 0.01000
y_centre 0 -1.0 1.0 0.010000
ellipticite 1 0.1 0.75 0.01
angle_pos 1 0. 180.0 0.1
core_radius 0 0.1 4. 0.100000
cut_radius 0 50. 500. 0.10000
v_disp 0 200. 1000. 0.10000
end
cline
nplan 1 1.000
dmax 50.000
pas 1.000
end
grande
profil 0 10
contour 0 10
large_dist 0.300
end
cosmologie
H0 70.000
omegaM 0.300
omegaX 0.700
wX -1.000
end
champ
dmax 50.
end
fini

Event Timeline