Révision 1
readme.txt (revision 1) | ||
---|---|---|
1 |
--------------------------------------------------------------------------- |
|
2 |
# "Cell division rule" project |
|
3 |
(project ID : "leaf") |
|
4 |
--------------------------------------------------------------------------- |
|
5 |
Biophysics Team - RDP ENS Lyon |
|
6 |
|
|
7 |
Developers : |
|
8 |
-------------- |
|
9 |
Jean-Daniel Julien |
|
10 |
|
|
11 |
|
|
12 |
Download the repository / Rapatrier le dépot |
|
13 |
-------------------------------------------- |
|
14 |
cd "directory that will contain the project's directory" |
|
15 |
svn checkout http://forge.cbp.ens-lyon.fr/svn/leaf |
|
16 |
|
|
17 |
Update (download changes from the repository) |
|
18 |
-------------------------------------------- |
|
19 |
cd leaf |
|
20 |
svn up |
|
21 |
|
|
22 |
Commit (upload your changes into the repository) |
|
23 |
----------------------------------------------- |
|
24 |
cd leaf |
|
25 |
svn commit |
|
26 |
|
|
27 |
Changing the file tree |
|
28 |
---------------------- |
|
29 |
if you want to add, delete or move individual files in the file-tree of the repository, you have to do that by svn |
|
30 |
... cd in the right subdirectory |
|
31 |
svn add toto |
|
32 |
svn mv toto titi |
|
33 |
svn rm titi |
|
34 |
... and then make a commit (!) |
|
35 |
|
|
36 |
Useful links |
|
37 |
------------- |
|
38 |
svn useful commands : http://wiki.greenstone.org/wiki/index.php/Useful_SVN_Commands |
|
39 |
formats in a wiki : https://forge.cbp.ens-lyon.fr/redmine/help/wiki_syntax.html |
|
40 |
|
bin/optimize_width.cpp (revision 1) | ||
---|---|---|
1 |
#include "optimize_width.h" |
|
2 |
#include "compute_energy_width.h" |
|
3 |
#include <nlopt.h> |
|
4 |
#include <stdio.h> |
|
5 |
#include <stdlib.h> |
|
6 |
#include <cmath> |
|
7 |
|
|
8 |
void optimize_width(int vertex_number, double *vertices, int edge_number, int *edges_vertices, |
|
9 |
double *lengths, double *rest_lengths, double *edges_width, int *periodizer, double *width, double *height){ |
|
10 |
|
|
11 |
nlopt_opt opt; |
|
12 |
opt=nlopt_create(NLOPT_LN_BOBYQA,edge_number); |
|
13 |
|
|
14 |
nlopt_set_stopval(opt, -HUGE_VAL); |
|
15 |
nlopt_set_maxeval(opt, -1.); |
|
16 |
nlopt_set_maxtime(opt, -1.); |
|
17 |
nlopt_set_xtol_rel(opt, -1.); |
|
18 |
nlopt_set_xtol_abs1(opt, 1.e-6); |
|
19 |
nlopt_set_ftol_rel(opt, -1.); |
|
20 |
nlopt_set_ftol_abs(opt, -1.); |
|
21 |
|
|
22 |
struct parameters_list3 {int vertex_number; double *vertices; int edge_number; int *edges_vertices; |
|
23 |
double *lengths; double *rest_lengths; int *periodizer; double *width; double *height;}; |
|
24 |
|
|
25 |
struct parameters_list3 parameters; |
|
26 |
parameters.vertex_number=vertex_number; |
|
27 |
parameters.vertices=vertices; |
|
28 |
parameters.edge_number=edge_number; |
|
29 |
parameters.edges_vertices=edges_vertices; |
|
30 |
parameters.lengths=lengths; |
|
31 |
parameters.rest_lengths=rest_lengths; |
|
32 |
parameters.periodizer=periodizer; |
|
33 |
parameters.width=width; |
|
34 |
parameters.height=height; |
|
35 |
void* pparameters=¶meters; |
|
36 |
|
|
37 |
double width_optimize[edge_number]; double energy; |
|
38 |
for (int i=0; i<edge_number;i++){ width_optimize[i]=edges_width[i];} |
|
39 |
|
|
40 |
/// first resolution: find the reference width and height without the anisotropic stress |
|
41 |
int reso=nlopt_set_min_objective(opt, compute_energy_width, pparameters); |
|
42 |
nlopt_optimize(opt, width_optimize, &energy); |
|
43 |
printf("%d\n",reso); |
|
44 |
|
|
45 |
for (int i=0; i<edge_number;i++){edges_width[i]=width_optimize[i];} |
|
46 |
|
|
47 |
nlopt_destroy(opt); |
|
48 |
|
|
49 |
} |
bin/compute_lengths.cpp (revision 1) | ||
---|---|---|
1 |
#include <math.h> |
|
2 |
#include "constants.h" |
|
3 |
#include "compute_lengths.h" |
|
4 |
#include <stdio.h> |
|
5 |
|
|
6 |
/* this functions computes the lengths of each wall */ |
|
7 |
|
|
8 |
void compute_lengths(double *vertices, int *edges_vertices, int edge_number, double *lengths, int *periodizer, double width, double height){ |
|
9 |
|
|
10 |
for (int i=0;i<edge_number;i++){ |
|
11 |
lengths[i]=sqrt(pow(vertices[2*edges_vertices[2*i]]+width*(double)periodizer[4*i]-vertices[2*edges_vertices[2*i+1]]-width*(double)periodizer[4*i+2],2.)+ |
|
12 |
pow(vertices[2*edges_vertices[2*i]+1]+height*(double)periodizer[4*i+1]-vertices[2*edges_vertices[2*i+1]+1]-height*(double)periodizer[4*i+3],2.)); |
|
13 |
} |
|
14 |
|
|
15 |
} |
bin/optimize_width.h (revision 1) | ||
---|---|---|
1 |
#ifndef OPTIMIZE_WIDTH_H_INCLUDED |
|
2 |
#define OPTIMIZE_WIDTH_H_INCLUDED |
|
3 |
|
|
4 |
void optimize_width(int vertex_number, double *vertices, int edge_number, int *edges_vertices, |
|
5 |
double *lengths, double *rest_lengths, double *edges_width, int *periodizer, double *width, double *height); |
|
6 |
|
|
7 |
#endif // OPTIMIZE_WIDTH_H_INCLUDED |
bin/compute_lengths.h (revision 1) | ||
---|---|---|
1 |
#ifndef COMPUTE_LENGTHS_H_INCLUDED |
|
2 |
#define COMPUTE_LENGTHS_H_INCLUDED |
|
3 |
|
|
4 |
void compute_lengths(double *vertices, int *edges_vertices, int edge_number, double *lengths, int *periodizer, double width, double height); |
|
5 |
|
|
6 |
#endif // COMPUTE_LENGTHS_H_INCLUDED |
bin/save_data_2.cpp (revision 1) | ||
---|---|---|
1 |
#include <string.h> |
|
2 |
#include <stdlib.h> |
|
3 |
#include <stdio.h> |
|
4 |
#include "save_data_2.h" |
|
5 |
#include <math.h> |
|
6 |
#include "constants.h" |
|
7 |
#include <gsl/gsl_matrix.h> |
|
8 |
#include <gsl/gsl_blas.h> |
|
9 |
#include <gsl/gsl_eigen.h> |
|
10 |
#include <gsl/gsl_math.h> |
|
11 |
#include <gsl/gsl_cblas.h> |
|
12 |
#include <gsl/gsl_linalg.h> |
|
13 |
#include "gaussian.h" |
|
14 |
|
|
15 |
/* this function saves the tissue and its chemical and mechanical state */ |
|
16 |
|
|
17 |
void save_data_2(FILE *f, int vertex_number, double *vertices, int edge_number, int *edges_vertices, |
|
18 |
double *lengths, double *rest_lengths, double *edges_width, int *edges_cells, int *periodizer, double width, double height, int cell_number){ |
|
19 |
|
|
20 |
fprintf(f,"edge_number= %i;\n",edge_number); |
|
21 |
fprintf(f,"vertex_number= %i;\n",vertex_number); |
|
22 |
fprintf(f,"cell_number= %i;\n",cell_number); |
|
23 |
fprintf(f,"width_after= %f;\n",width); |
|
24 |
fprintf(f,"height_after= %f;\n",height); |
|
25 |
fprintf(f,"stress_x= %f;\n",stress_x); |
|
26 |
fprintf(f,"stress_y= %f;\n",stress_y); |
|
27 |
fprintf(f,"sigma= %f;\n",sigma); |
|
28 |
|
|
29 |
fprintf(f,"vertices=[\n"); |
|
30 |
for (int i=0;i<vertex_number;i++){ |
|
31 |
fprintf(f,"%f %f\n",vertices[2*i],vertices[2*i+1]);} |
|
32 |
fprintf(f,"];\n"); |
|
33 |
|
|
34 |
fprintf(f,"edges_vertices=[\n"); |
|
35 |
for (int i=0;i<edge_number;i++){ |
|
36 |
fprintf(f,"%i %i\n",edges_vertices[2*i],edges_vertices[2*i+1]); |
|
37 |
} |
|
38 |
fprintf(f,"];\n"); |
|
39 |
|
|
40 |
fprintf(f,"lengths=[\n"); |
|
41 |
for (int i=0;i<edge_number;i++){ |
|
42 |
fprintf(f,"%f\n",lengths[i]); |
|
43 |
} |
|
44 |
fprintf(f,"];\n"); |
|
45 |
|
|
46 |
fprintf(f,"rest_lengths=[\n"); |
|
47 |
for (int i=0;i<edge_number;i++){ |
|
48 |
fprintf(f,"%f\n",rest_lengths[i]); |
|
49 |
} |
|
50 |
fprintf(f,"];\n"); |
|
51 |
|
|
52 |
fprintf(f,"edges_width=[\n"); |
|
53 |
for (int i=0;i<edge_number;i++){ |
|
54 |
fprintf(f,"%f\n",edges_width[i]); |
|
55 |
} |
|
56 |
fprintf(f,"];\n"); |
|
57 |
|
|
58 |
fprintf(f,"periodizer=[\n"); |
|
59 |
for (int i=0;i<edge_number;i++){ |
|
60 |
fprintf(f,"%i %i %i %i\n",periodizer[4*i],periodizer[4*i+1],periodizer[4*i+2],periodizer[4*i+3]); |
|
61 |
} |
|
62 |
fprintf(f,"];\n"); |
|
63 |
|
|
64 |
fprintf(f,"edges_cells=[\n"); |
|
65 |
for (int i=0;i<edge_number;i++){ |
|
66 |
fprintf(f,"%i %i\n",edges_cells[2*i],edges_cells[2*i+1]); |
|
67 |
} |
|
68 |
fprintf(f,"];\n"); |
|
69 |
|
|
70 |
double barycenters[2*cell_number]; for (int i=0; i<2*cell_number;i++){ barycenters[i]=0.;} |
|
71 |
double count[cell_number]; for (int i=0; i<cell_number;i++){ count[i]=0.;} |
|
72 |
double texture[3*cell_number]; for (int i=0; i<3*cell_number;i++){ texture[i]=0.;} |
|
73 |
|
|
74 |
int box[18]={-1,-1,-1,0,-1,1,0,-1,0,0,0,1,1,-1,1,0,1,1}; |
|
75 |
double distance=0.; int j_min; double distance_min; |
|
76 |
for (int i=0; i<edge_number; i++){ |
|
77 |
if (count[edges_cells[2*i]]==0){ |
|
78 |
barycenters[2*edges_cells[2*i]]+=(vertices[2*edges_vertices[2*i]]+width*(double)periodizer[4*i])*lengths[i]; |
|
79 |
barycenters[2*edges_cells[2*i]+1]+=(vertices[2*edges_vertices[2*i]+1]+height*(double)periodizer[4*i+1])*lengths[i]; |
|
80 |
barycenters[2*edges_cells[2*i]]+=(vertices[2*edges_vertices[2*i+1]]+width*(double)periodizer[4*i+2])*lengths[i]; |
|
81 |
barycenters[2*edges_cells[2*i]+1]+=(vertices[2*edges_vertices[2*i+1]+1]+height*(double)periodizer[4*i+3])*lengths[i]; |
|
82 |
count[edges_cells[2*i]]+=2.*lengths[i]; |
|
83 |
} |
|
84 |
else { |
|
85 |
distance_min=100000; |
|
86 |
for (int j=0; j<9; j++){ |
|
87 |
distance=pow(barycenters[2*edges_cells[2*i]]/count[edges_cells[2*i]]-vertices[2*edges_vertices[2*i]]-width*(double)box[2*j],2.)+ |
|
88 |
pow(barycenters[2*edges_cells[2*i]+1]/count[edges_cells[2*i]]-vertices[2*edges_vertices[2*i]+1]-height*(double)box[2*j+1],2.); |
|
89 |
if (distance<distance_min){ |
|
90 |
j_min=j; |
|
91 |
distance_min=distance; |
|
92 |
} |
|
93 |
} |
|
94 |
barycenters[2*edges_cells[2*i]]+=(vertices[2*edges_vertices[2*i]]+width*(double)box[2*j_min])*lengths[i]; |
|
95 |
barycenters[2*edges_cells[2*i]+1]+=(vertices[2*edges_vertices[2*i]+1]+height*(double)box[2*j_min+1])*lengths[i]; |
|
96 |
count[edges_cells[2*i]]+=1.*lengths[i]; |
|
97 |
|
|
98 |
distance_min=100000; |
|
99 |
for (int j=0; j<9; j++){ |
|
100 |
distance=pow(barycenters[2*edges_cells[2*i]]/count[edges_cells[2*i]]-vertices[2*edges_vertices[2*i+1]]-width*(double)box[2*j],2.)+ |
|
101 |
pow(barycenters[2*edges_cells[2*i]+1]/count[edges_cells[2*i]]-vertices[2*edges_vertices[2*i+1]+1]-height*(double)box[2*j+1],2.); |
|
102 |
if (distance<distance_min){ |
|
103 |
j_min=j; |
|
104 |
distance_min=distance; |
|
105 |
} |
|
106 |
} |
|
107 |
barycenters[2*edges_cells[2*i]]+=(vertices[2*edges_vertices[2*i+1]]+width*(double)box[2*j_min])*lengths[i]; |
|
108 |
barycenters[2*edges_cells[2*i]+1]+=(vertices[2*edges_vertices[2*i+1]+1]+height*(double)box[2*j_min+1])*lengths[i]; |
|
109 |
count[edges_cells[2*i]]+=1.*lengths[i]; |
|
110 |
} |
|
111 |
|
|
112 |
if (count[edges_cells[2*i+1]]==0){ |
|
113 |
barycenters[2*edges_cells[2*i+1]]+=(vertices[2*edges_vertices[2*i]]+width*(double)periodizer[4*i])*lengths[i]; |
|
114 |
barycenters[2*edges_cells[2*i+1]+1]+=(vertices[2*edges_vertices[2*i]+1]+height*(double)periodizer[4*i+1])*lengths[i]; |
|
115 |
barycenters[2*edges_cells[2*i+1]]+=(vertices[2*edges_vertices[2*i+1]]+width*(double)periodizer[4*i+2])*lengths[i]; |
|
116 |
barycenters[2*edges_cells[2*i+1]+1]+=(vertices[2*edges_vertices[2*i+1]+1]+height*(double)periodizer[4*i+3])*lengths[i]; |
|
117 |
count[edges_cells[2*i+1]]+=2.*lengths[i]; |
|
118 |
} |
|
119 |
else { |
|
120 |
distance_min=100000; |
|
121 |
for (int j=0; j<9; j++){ |
|
122 |
distance=pow(barycenters[2*edges_cells[2*i+1]]/count[edges_cells[2*i+1]]-vertices[2*edges_vertices[2*i]]-width*(double)box[2*j],2.)+ |
|
123 |
pow(barycenters[2*edges_cells[2*i+1]+1]/count[edges_cells[2*i+1]]-vertices[2*edges_vertices[2*i]+1]-height*(double)box[2*j+1],2.); |
|
124 |
if (distance<distance_min){ |
|
125 |
j_min=j; |
|
126 |
distance_min=distance; |
|
127 |
} |
|
128 |
} |
|
129 |
barycenters[2*edges_cells[2*i+1]]+=(vertices[2*edges_vertices[2*i]]+width*(double)box[2*j_min])*lengths[i]; |
|
130 |
barycenters[2*edges_cells[2*i+1]+1]+=(vertices[2*edges_vertices[2*i]+1]+height*(double)box[2*j_min+1])*lengths[i]; |
|
131 |
count[edges_cells[2*i+1]]+=1.*lengths[i]; |
|
132 |
|
|
133 |
distance_min=100000; |
|
134 |
for (int j=0; j<9; j++){ |
|
135 |
distance=pow(barycenters[2*edges_cells[2*i+1]]/count[edges_cells[2*i+1]]-vertices[2*edges_vertices[2*i+1]]-width*(double)box[2*j],2.)+ |
|
136 |
pow(barycenters[2*edges_cells[2*i+1]+1]/count[edges_cells[2*i+1]]-vertices[2*edges_vertices[2*i+1]+1]-height*(double)box[2*j+1],2.); |
|
137 |
if (distance<distance_min){ |
|
138 |
j_min=j; |
|
139 |
distance_min=distance; |
|
140 |
} |
|
141 |
} |
|
142 |
barycenters[2*edges_cells[2*i+1]]+=(vertices[2*edges_vertices[2*i+1]]+width*(double)box[2*j_min])*lengths[i]; |
|
143 |
barycenters[2*edges_cells[2*i+1]+1]+=(vertices[2*edges_vertices[2*i+1]+1]+height*(double)box[2*j_min+1])*lengths[i]; |
|
144 |
count[edges_cells[2*i+1]]+=1.*lengths[i]; |
|
145 |
} |
|
146 |
// count[edges_cells[2*i]]+=1.; |
|
147 |
// count[edges_cells[2*i+1]]+=1.; |
|
148 |
} |
|
149 |
for (int i=0; i<cell_number; i++){ |
|
150 |
barycenters[2*i]/=count[i]; |
|
151 |
barycenters[2*i+1]/=count[i]; |
|
152 |
} |
|
153 |
|
|
154 |
for (int i=0; i<cell_number;i++){ count[i]=0.;} |
|
155 |
for (int i=0; i<edge_number; i++){ |
|
156 |
distance_min=100000.; |
|
157 |
for (int j=0; j<9; j++){ |
|
158 |
distance=pow(barycenters[2*edges_cells[2*i]]+width*(double)box[2*j]-barycenters[2*edges_cells[2*i+1]],2.)+ |
|
159 |
pow(barycenters[2*edges_cells[2*i]+1]+height*(double)box[2*j+1]-barycenters[2*edges_cells[2*i+1]+1],2.); |
|
160 |
if (distance<distance_min){ |
|
161 |
distance_min=distance; |
|
162 |
j_min=j; |
|
163 |
} |
|
164 |
} |
|
165 |
|
|
166 |
texture[3*edges_cells[2*i]]+=(barycenters[2*edges_cells[2*i]]+width*(double)box[2*j_min]-barycenters[2*edges_cells[2*i+1]])*(barycenters[2*edges_cells[2*i]]+width*(double)box[2*j_min]-barycenters[2*edges_cells[2*i+1]]); |
|
167 |
texture[3*edges_cells[2*i+1]]+=(barycenters[2*edges_cells[2*i]]+width*(double)box[2*j_min]-barycenters[2*edges_cells[2*i+1]])*(barycenters[2*edges_cells[2*i]]+width*(double)box[2*j_min]-barycenters[2*edges_cells[2*i+1]]); |
|
168 |
texture[3*edges_cells[2*i]+1]+=(barycenters[2*edges_cells[2*i]+1]+height*(double)box[2*j_min+1]-barycenters[2*edges_cells[2*i+1]+1])*(barycenters[2*edges_cells[2*i]+1]+height*(double)box[2*j_min+1]-barycenters[2*edges_cells[2*i+1]+1]); |
|
169 |
texture[3*edges_cells[2*i+1]+1]+=(barycenters[2*edges_cells[2*i]+1]+height*(double)box[2*j_min+1]-barycenters[2*edges_cells[2*i+1]+1])*(barycenters[2*edges_cells[2*i]+1]+height*(double)box[2*j_min+1]-barycenters[2*edges_cells[2*i+1]+1]); |
|
170 |
texture[3*edges_cells[2*i]+2]+=(barycenters[2*edges_cells[2*i]]+width*(double)box[2*j_min]-barycenters[2*edges_cells[2*i+1]])*(barycenters[2*edges_cells[2*i]+1]+height*(double)box[2*j_min+1]-barycenters[2*edges_cells[2*i+1]+1]); |
|
171 |
texture[3*edges_cells[2*i+1]+2]+=(barycenters[2*edges_cells[2*i]]+width*(double)box[2*j_min]-barycenters[2*edges_cells[2*i+1]])*(barycenters[2*edges_cells[2*i]+1]+height*(double)box[2*j_min+1]-barycenters[2*edges_cells[2*i+1]+1]); |
|
172 |
count[edges_cells[2*i]]+=1.; |
|
173 |
count[edges_cells[2*i+1]]+=1.; |
|
174 |
} |
|
175 |
|
|
176 |
for (int i=0; i<cell_number; i++){ |
|
177 |
texture[3*i]/=count[i]; |
|
178 |
texture[3*i+1]/=count[i]; |
|
179 |
texture[3*i+2]/=count[i]; |
|
180 |
} |
|
181 |
|
|
182 |
double average_texture[3*cell_number]; for (int i=0; i<3*cell_number; i++){ average_texture[i]=0.;} |
|
183 |
for (int i=0; i<cell_number; i++){ count[i]=0.;} |
|
184 |
|
|
185 |
for (int i=0; i<cell_number; i++){ |
|
186 |
for (int k=i; k<cell_number; k++){ |
|
187 |
distance_min=100000.; |
|
188 |
for (int j=0; j<9; j++){ |
|
189 |
distance=pow(barycenters[2*i]+width*(double)box[2*j]-barycenters[2*k],2.)+ |
|
190 |
pow(barycenters[2*i+1]+height*(double)box[2*j+1]-barycenters[2*k+1],2.); |
|
191 |
if (distance<distance_min){ |
|
192 |
distance_min=distance; |
|
193 |
} |
|
194 |
} |
|
195 |
distance_min=sqrt(distance_min); |
|
196 |
|
|
197 |
average_texture[3*i]+=texture[3*k]*gaussian(distance_min,sigma); |
|
198 |
average_texture[3*i+1]+=texture[3*k+1]*gaussian(distance_min,sigma); |
|
199 |
average_texture[3*i+2]+=texture[3*k+2]*gaussian(distance_min,sigma); |
|
200 |
average_texture[3*k]+=texture[3*i]*gaussian(distance_min,sigma); |
|
201 |
average_texture[3*k+1]+=texture[3*i+1]*gaussian(distance_min,sigma); |
|
202 |
average_texture[3*k+2]+=texture[3*i+2]*gaussian(distance_min,sigma); |
|
203 |
count[i]+=gaussian(distance_min,sigma); |
|
204 |
count[k]+=gaussian(distance_min,sigma); |
|
205 |
} |
|
206 |
} |
|
207 |
|
|
208 |
for (int i=0; i<cell_number; i++){ |
|
209 |
average_texture[3*i]/=count[i]; |
|
210 |
average_texture[3*i+1]/=count[i]; |
|
211 |
average_texture[3*i+2]/=count[i]; |
|
212 |
} |
|
213 |
|
|
214 |
fprintf(f,"barycenters_after=[\n"); |
|
215 |
for (int i=0;i<cell_number;i++){ |
|
216 |
fprintf(f,"%f %f\n",barycenters[2*i],barycenters[2*i+1]); |
|
217 |
} |
|
218 |
fprintf(f,"];\n"); |
|
219 |
|
|
220 |
fprintf(f,"texture_after=[\n"); |
|
221 |
for (int i=0;i<cell_number;i++){ |
|
222 |
fprintf(f,"%f %f %f\n",texture[3*i],texture[3*i+1],texture[3*i+2]); |
|
223 |
} |
|
224 |
fprintf(f,"];\n"); |
|
225 |
|
|
226 |
fprintf(f,"average_texture_after=[\n"); |
|
227 |
for (int i=0;i<cell_number;i++){ |
|
228 |
fprintf(f,"%f %f %f\n",average_texture[3*i],average_texture[3*i+1],average_texture[3*i+2]); |
|
229 |
} |
|
230 |
fprintf(f,"];\n"); |
|
231 |
|
|
232 |
int boundary[cell_number]; for (int i=0; i<cell_number; i++){ boundary[i]=0;} |
|
233 |
for (int i=0;i<edge_number;i++){ |
|
234 |
if (periodizer[4*i]!=0 || periodizer[4*i+1]!=0 || periodizer[4*i+2]!=0 || periodizer[4*i+3]!=0){ |
|
235 |
boundary[edges_cells[2*i]]=1; boundary[edges_cells[2*i+1]]=1; |
|
236 |
} |
|
237 |
} |
|
238 |
fprintf(f,"boundary=[\n"); |
|
239 |
for (int i=0;i<cell_number;i++){ |
|
240 |
fprintf(f,"%i\n",boundary[i]); |
|
241 |
} |
|
242 |
fprintf(f,"];\n"); |
|
243 |
|
|
244 |
} |
bin/compute_energy_and_forces.cpp (revision 1) | ||
---|---|---|
1 |
#include "compute_energy_and_forces.h" |
|
2 |
#include "constants.h" |
|
3 |
#include "compute_areas.h" |
|
4 |
#include "compute_cell_areas.h" |
|
5 |
#include "compute_lengths.h" |
|
6 |
#include <math.h> |
|
7 |
#include <stdio.h> |
|
8 |
#include <nlopt.h> |
|
9 |
#include <omp.h> |
|
10 |
|
|
11 |
/* this function computes the mechanical energy and its derivatives */ |
|
12 |
|
|
13 |
double compute_energy_and_forces(unsigned n, const double *vertices, double *forces, void *parameters){ |
|
14 |
|
|
15 |
struct parameters_list {int vertex_number; int edge_number; int *edges_vertices; |
|
16 |
double *lengths; double *rest_lengths; double *edges_width; int *periodizer; int anisotropy; double ref_width; double ref_height;}; |
|
17 |
double energy=0; |
|
18 |
|
|
19 |
compute_lengths((double*)vertices, ((parameters_list*)parameters)->edges_vertices, ((parameters_list*)parameters)->edge_number, |
|
20 |
((parameters_list*)parameters)->lengths, ((parameters_list*)parameters)->periodizer, (double)vertices[2*(((parameters_list*)parameters)->vertex_number)], (double)vertices[2*(((parameters_list*)parameters)->vertex_number)+1]); |
|
21 |
|
|
22 |
if (forces){ for (int i=0;i<2*((parameters_list*)parameters)->vertex_number+2;i++){forces[i]=0.;}} |
|
23 |
|
|
24 |
|
|
25 |
if (forces){ |
|
26 |
forces[2*(((parameters_list*)parameters)->vertex_number)]-=vertices[2*(((parameters_list*)parameters)->vertex_number)+1]; |
|
27 |
forces[2*(((parameters_list*)parameters)->vertex_number)+1]-=vertices[2*(((parameters_list*)parameters)->vertex_number)]; |
|
28 |
} |
|
29 |
/* pressure energy */ |
|
30 |
energy-=vertices[2*(((parameters_list*)parameters)->vertex_number)]*vertices[2*(((parameters_list*)parameters)->vertex_number)+1]; |
|
31 |
|
|
32 |
|
|
33 |
|
|
34 |
for (int i=0;i<((parameters_list*)parameters)->edge_number;i++){ |
|
35 |
/* derivatives of the lengths of the walls */ |
|
36 |
if (forces){ |
|
37 |
forces[2*(((parameters_list*)parameters)->edges_vertices)[2*i]]+=youngs_modulus*((((parameters_list*)parameters)->edges_width)[i])*((((parameters_list*)parameters)->rest_lengths)[i])* |
|
38 |
((((parameters_list*)parameters)->lengths)[i]-(((parameters_list*)parameters)->rest_lengths)[i])* |
|
39 |
(vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i]]+vertices[2*((parameters_list*)parameters)->vertex_number]*(double)(((parameters_list*)parameters)->periodizer)[4*i] |
|
40 |
-vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]]-vertices[2*((parameters_list*)parameters)->vertex_number]*(double)(((parameters_list*)parameters)->periodizer)[4*i+2])/ |
|
41 |
((((parameters_list*)parameters)->lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]); |
|
42 |
forces[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]]-=youngs_modulus*((((parameters_list*)parameters)->edges_width)[i])*((((parameters_list*)parameters)->rest_lengths)[i])* |
|
43 |
((((parameters_list*)parameters)->lengths)[i]-(((parameters_list*)parameters)->rest_lengths)[i])* |
|
44 |
(vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i]]+vertices[2*((parameters_list*)parameters)->vertex_number]*(double)(((parameters_list*)parameters)->periodizer)[4*i] |
|
45 |
-vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]]-vertices[2*((parameters_list*)parameters)->vertex_number]*(double)(((parameters_list*)parameters)->periodizer)[4*i+2])/ |
|
46 |
((((parameters_list*)parameters)->lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]); |
|
47 |
forces[2*(((parameters_list*)parameters)->edges_vertices)[2*i]+1]+=youngs_modulus*((((parameters_list*)parameters)->edges_width)[i])*((((parameters_list*)parameters)->rest_lengths)[i])* |
|
48 |
((((parameters_list*)parameters)->lengths)[i]-(((parameters_list*)parameters)->rest_lengths)[i])* |
|
49 |
(vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i]+1]+vertices[2*((parameters_list*)parameters)->vertex_number+1]*(double)(((parameters_list*)parameters)->periodizer)[4*i+1] |
|
50 |
-vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]+1]-vertices[2*((parameters_list*)parameters)->vertex_number+1]*(double)(((parameters_list*)parameters)->periodizer)[4*i+3])/ |
|
51 |
((((parameters_list*)parameters)->lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]); |
|
52 |
forces[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]+1]-=youngs_modulus*((((parameters_list*)parameters)->edges_width)[i])*((((parameters_list*)parameters)->rest_lengths)[i])* |
|
53 |
((((parameters_list*)parameters)->lengths)[i]-(((parameters_list*)parameters)->rest_lengths)[i])* |
|
54 |
(vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i]+1]+vertices[2*((parameters_list*)parameters)->vertex_number+1]*(double)(((parameters_list*)parameters)->periodizer)[4*i+1] |
|
55 |
-vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]+1]-vertices[2*((parameters_list*)parameters)->vertex_number+1]*(double)(((parameters_list*)parameters)->periodizer)[4*i+3])/ |
|
56 |
((((parameters_list*)parameters)->lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]); |
|
57 |
|
|
58 |
forces[2*((parameters_list*)parameters)->vertex_number]+=youngs_modulus*((((parameters_list*)parameters)->edges_width)[i])*((((parameters_list*)parameters)->rest_lengths)[i])* |
|
59 |
((double)(((parameters_list*)parameters)->periodizer)[4*i]-(double)(((parameters_list*)parameters)->periodizer)[4*i+2])* |
|
60 |
((((parameters_list*)parameters)->lengths)[i]-(((parameters_list*)parameters)->rest_lengths)[i])* |
|
61 |
(vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i]]+vertices[2*((parameters_list*)parameters)->vertex_number]*(double)(((parameters_list*)parameters)->periodizer)[4*i] |
|
62 |
-vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]]-vertices[2*((parameters_list*)parameters)->vertex_number]*(double)(((parameters_list*)parameters)->periodizer)[4*i+2])/ |
|
63 |
((((parameters_list*)parameters)->lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]); |
|
64 |
|
|
65 |
forces[2*((parameters_list*)parameters)->vertex_number+1]+=youngs_modulus*((((parameters_list*)parameters)->edges_width)[i])*((((parameters_list*)parameters)->rest_lengths)[i])* |
|
66 |
((double)(((parameters_list*)parameters)->periodizer)[4*i+1]-(double)(((parameters_list*)parameters)->periodizer)[4*i+3])* |
|
67 |
((((parameters_list*)parameters)->lengths)[i]-(((parameters_list*)parameters)->rest_lengths)[i])* |
|
68 |
(vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i]+1]+vertices[2*((parameters_list*)parameters)->vertex_number+1]*(double)(((parameters_list*)parameters)->periodizer)[4*i+1] |
|
69 |
-vertices[2*(((parameters_list*)parameters)->edges_vertices)[2*i+1]+1]-vertices[2*((parameters_list*)parameters)->vertex_number+1]*(double)(((parameters_list*)parameters)->periodizer)[4*i+3])/ |
|
70 |
((((parameters_list*)parameters)->lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]*(((parameters_list*)parameters)->rest_lengths)[i]); |
|
71 |
|
|
72 |
} |
|
73 |
/* wall elastic energy */ |
|
74 |
energy+=0.5*youngs_modulus*((((parameters_list*)parameters)->edges_width)[i])*((((parameters_list*)parameters)->rest_lengths)[i])* |
|
75 |
pow((((parameters_list*)parameters)->lengths)[i]/(((parameters_list*)parameters)->rest_lengths)[i]-1.,2.); |
|
76 |
} |
|
77 |
|
|
78 |
/* external, anisotropic stretching */ |
|
79 |
if ((((parameters_list*)parameters)->anisotropy)==1){ |
|
80 |
|
|
81 |
if (forces){ |
|
82 |
forces[2*(((parameters_list*)parameters)->vertex_number)]-=stress_x*(((parameters_list*)parameters)->ref_height); |
|
83 |
forces[2*(((parameters_list*)parameters)->vertex_number)+1]-=stress_y*(((parameters_list*)parameters)->ref_width); |
|
84 |
} |
|
85 |
|
|
86 |
energy-=stress_x*(((parameters_list*)parameters)->ref_height)*(vertices[2*(((parameters_list*)parameters)->vertex_number)]-(((parameters_list*)parameters)->ref_width))+ |
|
87 |
stress_y*(((parameters_list*)parameters)->ref_width)*(vertices[2*(((parameters_list*)parameters)->vertex_number)+1]-(((parameters_list*)parameters)->ref_height)); |
|
88 |
|
|
89 |
} |
|
90 |
|
|
91 |
return(energy); |
|
92 |
|
|
93 |
} |
bin/gaussian.cpp (revision 1) | ||
---|---|---|
1 |
#include "gaussian.h" |
|
2 |
#include <math.h> |
|
3 |
|
|
4 |
double gaussian(double distance, double sigma){ |
|
5 |
double result=distance*distance/(2.*sigma*sigma); |
|
6 |
result=exp(-result); |
|
7 |
|
|
8 |
return result; |
|
9 |
} |
bin/step.cpp (revision 1) | ||
---|---|---|
1 |
#include "step.h" |
|
2 |
#include <stdio.h> |
|
3 |
#include <math.h> |
|
4 |
#include "minimize_BFGS.h" |
|
5 |
#include "growth_and_chemistry.h" |
|
6 |
#include <gsl/gsl_odeiv2.h> |
|
7 |
#include <gsl/gsl_errno.h> |
|
8 |
#include "compute_energy_and_forces.h" |
|
9 |
#include "save_data.h" |
|
10 |
#include <cstdlib> |
|
11 |
#include "constants.h" |
|
12 |
#include <algorithm> |
|
13 |
#include "compute_lengths.h" |
|
14 |
|
|
15 |
|
|
16 |
/* this function performs a time step (growth and chemistry then mechanics) */ |
|
17 |
|
|
18 |
void step(double *vertices, int vertex_number, int edge_number, int *edges_vertices, double *lengths, double *rest_lengths, double *edges_width, int *periodizer, double *width, double *height){ |
|
19 |
|
|
20 |
/* minimization of energy: move the vertices in order to make the energy as small as possible, i.e. in order to make cells |
|
21 |
as close as possible of their targets */ |
|
22 |
minimize_BFGS(vertex_number, vertices, edge_number, edges_vertices, lengths, rest_lengths, edges_width, periodizer, width, height); |
|
23 |
|
|
24 |
|
|
25 |
compute_lengths(vertices, edges_vertices, edge_number, lengths, periodizer, width[0], height[0]); |
|
26 |
|
|
27 |
struct parameters_list2 {int edge_number; double *lengths; double *edges_width;}; |
|
28 |
|
|
29 |
struct parameters_list2 parameters2; |
|
30 |
parameters2.edge_number=edge_number; |
|
31 |
parameters2.lengths=lengths; |
|
32 |
parameters2.edges_width=edges_width; |
|
33 |
void *pparameters2=¶meters2; |
|
34 |
int system_size=edge_number; |
|
35 |
|
|
36 |
double x[system_size]; |
|
37 |
for (int i=0;i<edge_number;i++){ x[i]=rest_lengths[i];} |
|
38 |
|
|
39 |
gsl_odeiv2_system sys={growth_and_chemistry, NULL, system_size, pparameters2}; |
|
40 |
gsl_odeiv2_driver *d=gsl_odeiv2_driver_alloc_y_new (&sys, gsl_odeiv2_step_rk2, 1.e-8, 1.e-8, 0.); |
|
41 |
int s; double t=0.0; |
|
42 |
s=gsl_odeiv2_driver_apply(d, &t, 1.e-7, x); |
|
43 |
for (int i=0;i<edge_number;i++){ rest_lengths[i]=x[i];} |
|
44 |
gsl_odeiv2_driver_free(d); |
|
45 |
|
|
46 |
} |
|
47 |
|
|
48 |
|
|
49 |
|
|
50 |
|
|
51 |
|
bin/constants.cpp (revision 1) | ||
---|---|---|
1 |
#include <math.h> |
|
2 |
|
|
3 |
double pi=3.1415926; |
|
4 |
|
|
5 |
double youngs_modulus=300.; |
|
6 |
double stress_x=0.;//2. |
|
7 |
double stress_y=0.; |
|
8 |
|
|
9 |
double growth_threshold=10.; |
|
10 |
|
|
11 |
double sigma=40; |
|
12 |
|
|
13 |
int growth=0; |
|
14 |
|
|
15 |
#pragma omp threadprivate(stress_x, stress_y, sigma, growth, growth_threshold) |
bin/save_data_2.h (revision 1) | ||
---|---|---|
1 |
#ifndef SAVE_DATA_2_H_INCLUDED |
|
2 |
#define SAVE_DATA_2_H_INCLUDED |
|
3 |
|
|
4 |
void save_data_2(FILE *f, int vertex_number, double *vertices, int edge_number, int *edges_vertices, |
|
5 |
double *lengths, double *rest_lengths, double *edges_width, int *edges_cells, int *periodizer, double width, double height, int cell_number); |
|
6 |
|
|
7 |
#endif // SAVE_DATA_2_H_INCLUDED |
bin/compute_energy_and_forces.h (revision 1) | ||
---|---|---|
1 |
#ifndef COMPUTE_ENERGY_AND_FORCES_H_INCLUDED |
|
2 |
#define COMPUTE_ENERGY_AND_FORCES_H_INCLUDED |
|
3 |
|
|
4 |
double compute_energy_and_forces(unsigned n, const double *vertices, double *forces, void *parameters); |
|
5 |
|
|
6 |
#endif // COMPUTE_ENERGY_AND_FORCES_H_INCLUDED |
bin/gaussian.h (revision 1) | ||
---|---|---|
1 |
#ifndef GAUSSIAN_H_INCLUDED |
|
2 |
#define GAUSSIAN_H_INCLUDED |
|
3 |
|
|
4 |
double gaussian(double distance, double sigma); |
|
5 |
|
|
6 |
#endif // GAUSSIAN_H_INCLUDED |
bin/step.h (revision 1) | ||
---|---|---|
1 |
#ifndef STEP_H_INCLUDED |
|
2 |
#define STEP_H_INCLUDED |
|
3 |
|
|
4 |
void step(double *vertices, int vertex_number, int edge_number, int *edges_vertices, double *lengths, double *rest_lengths, double *edges_width, int *periodizer, double *width, double *height); |
|
5 |
|
|
6 |
#endif // STEP_H_INCLUDED |
bin/constants.h (revision 1) | ||
---|---|---|
1 |
#ifndef CONSTANTS_H_INCLUDED |
|
2 |
#define CONSTANTS_H_INCLUDED |
|
3 |
|
|
4 |
extern double pi; |
|
5 |
|
|
6 |
extern double youngs_modulus; |
|
7 |
extern double stress_x; |
|
8 |
extern double stress_y; |
|
9 |
|
|
10 |
extern double growth_threshold; |
|
11 |
|
|
12 |
extern double sigma; |
|
13 |
|
|
14 |
extern int growth; |
|
15 |
|
|
16 |
#pragma omp threadprivate(stress_x, stress_y, sigma, growth, growth_threshold) |
|
17 |
|
|
18 |
#endif // CONSTANTS_H_INCLUDED |
bin/Init/33.toy (revision 1) | ||
---|---|---|
1 |
53.73237637879983 |
|
2 |
59.62851357493969 |
|
3 |
86 |
|
4 |
129 |
|
5 |
43 |
|
6 |
41.00605427519755 |
|
7 |
43.84479514583994 |
|
8 |
11.11288381815081 |
|
9 |
6.143416160775232 |
|
10 |
24.1403013424371 |
|
11 |
5.227544003018701 |
|
12 |
30.1660648218456 |
|
13 |
40.64222965901772 |
|
14 |
2.426251365215387 |
|
15 |
3.36138988298003 |
|
16 |
44.18169811048831 |
|
17 |
57.860182871652974 |
|
18 |
44.26863245351591 |
|
19 |
57.25143624724735 |
|
20 |
30.05779385705528 |
|
21 |
28.24536383636932 |
|
22 |
27.21680454415969 |
|
23 |
4.637052593595216 |
|
24 |
33.93035403432599 |
|
25 |
38.52227721012749 |
|
26 |
24.3734025425864 |
|
27 |
22.05447126597037 |
|
28 |
20.6540676178174 |
|
29 |
20.38305183805124 |
|
30 |
39.23489968845102 |
|
31 |
0.5454952385536798 |
|
32 |
53.130412457309454 |
|
33 |
36.98236472617719 |
|
34 |
17.48416479480939 |
|
35 |
46.22713497941957 |
|
36 |
9.590597622999248 |
|
37 |
29.85658282898794 |
|
38 |
30.02835746873472 |
|
39 |
26.54115576464108 |
|
40 |
14.67166730897258 |
|
41 |
5.397306638938377 |
|
42 |
46.95224069568225 |
|
43 |
9.063338711712447 |
|
44 |
48.98500227570604 |
|
45 |
2.475549594269329 |
|
46 |
45.96502204715647 |
|
47 |
39.39080378295612 |
|
48 |
0.2150610878445689 |
|
49 |
22.44754257525715 |
|
50 |
14.96796336777424 |
|
51 |
25.14631127368362 |
|
52 |
2.80872768095769 |
|
53 |
45.2358817124404 |
|
54 |
31.30690565517686 |
|
55 |
1.951626818952569 |
|
56 |
15.3424208474777 |
|
57 |
25.11667364137173 |
|
58 |
36.37739183218368 |
|
59 |
21.04400817587831 |
|
60 |
12.78716971477792 |
|
61 |
38.28566419249559 |
|
62 |
51.9718625131994 |
|
63 |
25.33595327044449 |
|
64 |
14.5153537428476 |
|
65 |
53.10917419454713 |
|
66 |
39.16460333520742 |
|
67 |
8.706121659048014 |
|
68 |
14.60912375427341 |
|
69 |
57.35499733779572 |
|
70 |
46.22372020161806 |
|
71 |
16.55464653202851 |
|
72 |
26.73641157474853 |
|
73 |
41.66851870804089 |
|
74 |
2.630386591135188 |
|
75 |
32.27528433460367 |
|
76 |
49.07363903777353 |
|
77 |
24.23969816922651 |
|
78 |
15.18793030297121 |
|
79 |
54.67809133530172 |
|
80 |
33.28650805737531 |
|
81 |
34.01725007314936 |
|
82 |
18.3069344296281 |
|
83 |
44.65626766477443 |
|
84 |
15.02572660705558 |
|
85 |
39.39806863038923 |
|
86 |
8.345942562755766 |
|
87 |
11.26386898540523 |
|
88 |
38.11511809476249 |
|
89 |
20.92351825895694 |
|
90 |
6.728035099376779 |
|
91 |
17.5125405894656 |
|
92 |
47.37846757123232 |
|
93 |
11.38910923371441 |
|
94 |
41.2571587330546 |
|
95 |
47.15701865113333 |
|
96 |
7.697565141268082 |
|
97 |
32.19655381556069 |
|
98 |
23.90021366288214 |
|
99 |
43.83491267583069 |
|
100 |
23.66447223319609 |
|
101 |
5.206701529933286 |
|
102 |
18.89873770700942 |
|
103 |
12.50564202067935 |
|
104 |
10.60583197761373 |
|
105 |
20.37447099960424 |
|
106 |
45.34099792801138 |
|
107 |
19.06395770864364 |
|
108 |
3.123270759886557 |
|
109 |
49.02228412571285 |
|
110 |
17.94994079426626 |
|
111 |
6.880624613151146 |
|
112 |
53.17355719326821 |
|
113 |
50.50223555452406 |
|
114 |
20.90321203982454 |
|
115 |
31.84187922596023 |
|
116 |
20.82343695085001 |
|
117 |
32.01750906454653 |
|
118 |
41.92271232146813 |
|
119 |
31.90706613261577 |
|
120 |
40.93760583941135 |
|
121 |
9.217592730034955 |
|
122 |
28.51015173245191 |
|
123 |
52.59199247042525 |
|
124 |
6.959803903539296 |
|
125 |
12.83996662023328 |
|
126 |
34.21782816393571 |
|
127 |
48.94842521543874 |
|
128 |
43.64335304978598 |
|
129 |
41.8750472998147 |
|
130 |
37.73169089323487 |
|
131 |
0.5851993210129022 |
|
132 |
53.60511943947328 |
|
133 |
12.88238734026699 |
|
134 |
40.16439606485149 |
|
135 |
13.87062975861086 |
|
136 |
41.98101543916131 |
|
137 |
19.46638197842913 |
|
138 |
28.12384965673833 |
|
139 |
53.34720490746081 |
|
140 |
10.73033924657607 |
|
141 |
20.86039484815298 |
|
142 |
5.855374868565534 |
|
143 |
50.26579203945766 |
|
144 |
4.191681636006709 |
|
145 |
56.63569714231279 |
|
146 |
8.919383852200541 |
|
147 |
50.89323479063303 |
|
148 |
7.147289239787876 |
|
149 |
25.37801141592199 |
|
150 |
3.235864763657833 |
|
151 |
20.84161600534828 |
|
152 |
28.60297542757392 |
|
153 |
14.66922137378002 |
|
154 |
32.94979934206445 |
|
155 |
11.70538983818954 |
|
156 |
32.99391417681286 |
|
157 |
12.4953449139785 |
|
158 |
42.69042772349333 |
|
159 |
30.49154142882092 |
|
160 |
24.9397573300001 |
|
161 |
12.40655161134378 |
|
162 |
34.43963964778495 |
|
163 |
14.74944849184517 |
|
164 |
8.55174025523531 |
|
165 |
42.41374836133627 |
|
166 |
18.90502784026141 |
|
167 |
13.3550755311257 |
|
168 |
32.44039342914015 |
|
169 |
51.0978327495856 |
|
170 |
22.17080019983781 |
|
171 |
55.64088700878654 |
|
172 |
13.81073090555738 |
|
173 |
15.58328572034042 |
|
174 |
52.26595526795432 |
|
175 |
16.86642863832872 |
|
176 |
11.11078199584252 |
|
177 |
46.14142974397822 |
|
178 |
0 |
|
179 |
1 |
|
180 |
0 |
|
181 |
0 |
|
182 |
0 |
|
183 |
9 |
|
184 |
0 |
|
185 |
0 |
|
186 |
8.854079911241516 |
|
187 |
2.7756533968765713 |
|
188 |
1 |
|
189 |
2 |
|
190 |
0 |
|
191 |
0 |
|
192 |
0 |
|
193 |
44 |
|
194 |
0 |
|
195 |
0 |
|
196 |
3.3217281643406205 |
|
197 |
3.430072695581895 |
|
198 |
2 |
|
199 |
0 |
|
200 |
0 |
|
201 |
0 |
|
202 |
0 |
|
203 |
61 |
|
204 |
0 |
|
205 |
0 |
|
206 |
3.2916943058805885 |
|
207 |
2.6668961593506504 |
|
208 |
3 |
|
209 |
4 |
|
210 |
1 |
|
211 |
0 |
|
212 |
0 |
|
213 |
4 |
|
214 |
0 |
|
215 |
0 |
|
216 |
9.121252851595218 |
|
217 |
3.3340381054359294 |
|
218 |
5 |
|
219 |
3 |
|
220 |
1 |
|
221 |
0 |
|
222 |
0 |
|
223 |
17 |
|
224 |
0 |
|
225 |
0 |
|
226 |
3.6361544732204667 |
|
227 |
5.094816436869106 |
|
228 |
4 |
|
229 |
5 |
|
230 |
1 |
|
231 |
0 |
|
232 |
0 |
|
233 |
40 |
|
234 |
0 |
|
235 |
0 |
|
236 |
5.820223452760936 |
|
237 |
1.6117704333223108 |
|
238 |
6 |
|
239 |
7 |
|
240 |
2 |
|
241 |
0 |
|
242 |
0 |
|
243 |
77 |
|
244 |
0 |
|
245 |
0 |
|
246 |
7.223384256457613 |
|
247 |
0.8902525792086653 |
|
248 |
7 |
|
249 |
8 |
|
250 |
2 |
|
251 |
0 |
|
252 |
0 |
|
253 |
8 |
|
254 |
0 |
|
255 |
0 |
|
256 |
3.1326589432640586 |
|
257 |
3.2995942249953183 |
|
258 |
8 |
|
259 |
6 |
|
260 |
2 |
|
261 |
0 |
|
262 |
0 |
|
263 |
47 |
|
264 |
0 |
|
265 |
0 |
|
266 |
0.47628536602063226 |
|
267 |
3.8693366871458186 |
|
268 |
9 |
|
269 |
1 |
|
270 |
3 |
|
271 |
0 |
|
272 |
0 |
|
273 |
60 |
|
274 |
0 |
|
275 |
0 |
|
276 |
9.241735270056887 |
|
277 |
0.8328752199743118 |
|
278 |
1 |
|
279 |
10 |
|
280 |
3 |
|
281 |
0 |
|
282 |
0 |
|
283 |
9 |
|
284 |
0 |
|
285 |
0 |
|
286 |
4.320193474921223 |
|
287 |
2.084233441930639 |
|
288 |
10 |
|
289 |
9 |
|
290 |
3 |
|
291 |
0 |
|
292 |
0 |
|
293 |
33 |
|
294 |
0 |
|
295 |
0 |
|
296 |
3.5799148882994896 |
|
297 |
1.1546833331219073 |
|
298 |
11 |
|
299 |
4 |
|
300 |
4 |
|
301 |
0 |
|
302 |
0 |
|
303 |
19 |
|
304 |
-1 |
|
305 |
0 |
|
306 |
7.228112850300355 |
|
307 |
2.5231407538546837 |
|
308 |
3 |
|
309 |
11 |
|
310 |
4 |
|
311 |
0 |
|
312 |
0 |
|
313 |
69 |
|
314 |
0 |
|
315 |
-1 |
|
316 |
6.5948981752810445 |
|
317 |
1.124841730886247 |
|
318 |
12 |
|
319 |
13 |
|
320 |
5 |
|
321 |
0 |
|
322 |
0 |
|
323 |
12 |
|
324 |
0 |
|
325 |
1 |
|
326 |
5.461190814960067 |
|
327 |
3.6614125389900516 |
|
328 |
11 |
|
329 |
12 |
|
330 |
5 |
|
331 |
0 |
|
332 |
0 |
|
333 |
6 |
|
334 |
0 |
|
335 |
0 |
|
336 |
0.6149227859844556 |
|
337 |
5.482835720588489 |
|
338 |
13 |
|
339 |
11 |
|
340 |
5 |
|
341 |
0 |
|
342 |
0 |
|
343 |
19 |
|
344 |
0 |
|
345 |
1 |
|
346 |
6.409543734430895 |
|
347 |
3.1976084732888697 |
|
348 |
2 |
|
349 |
12 |
|
350 |
6 |
|
351 |
0 |
|
352 |
0 |
|
353 |
44 |
|
354 |
0 |
|
355 |
0 |
|
356 |
10.534051479547907 |
|
357 |
3.209462328992895 |
|
358 |
11 |
|
359 |
2 |
|
360 |
6 |
|
361 |
0 |
|
362 |
0 |
|
363 |
53 |
|
364 |
0 |
|
365 |
0 |
|
366 |
11.17360257979981 |
|
367 |
1.2558426903041493 |
|
368 |
14 |
|
369 |
10 |
|
370 |
7 |
|
371 |
0 |
|
372 |
0 |
|
373 |
54 |
|
374 |
0 |
|
375 |
0 |
|
376 |
9.83571508310077 |
|
377 |
1.024934055006501 |
|
378 |
10 |
|
379 |
15 |
|
380 |
7 |
|
381 |
0 |
|
382 |
0 |
|
383 |
37 |
|
384 |
0 |
|
385 |
0 |
|
386 |
6.6135668226516815 |
|
387 |
2.1610100622891437 |
|
388 |
15 |
|
389 |
14 |
|
390 |
7 |
|
391 |
0 |
|
392 |
0 |
|
393 |
16 |
|
394 |
0 |
|
395 |
0 |
|
396 |
1.7044622767022604 |
|
397 |
1.7269393196112666 |
|
398 |
16 |
|
399 |
8 |
|
400 |
8 |
|
401 |
0 |
|
402 |
0 |
|
403 |
24 |
|
404 |
0 |
|
405 |
0 |
|
406 |
4.892896758512175 |
|
407 |
2.5412315161415338 |
|
408 |
7 |
|
409 |
16 |
|
410 |
8 |
|
411 |
0 |
|
412 |
0 |
|
413 |
74 |
|
414 |
0 |
|
415 |
0 |
|
416 |
9.101023060959813 |
|
417 |
1.151120586641937 |
|
418 |
0 |
|
419 |
10 |
|
420 |
9 |
|
421 |
0 |
|
422 |
0 |
|
423 |
37 |
|
424 |
0 |
|
425 |
0 |
|
426 |
4.550802912338099 |
|
427 |
2.494666346896691 |
|
428 |
17 |
|
429 |
14 |
|
430 |
10 |
|
431 |
0 |
|
432 |
0 |
|
433 |
11 |
|
434 |
0 |
|
435 |
0 |
|
436 |
4.077633527750127 |
|
437 |
2.106756008073527 |
|
438 |
18 |
|
439 |
17 |
|
440 |
10 |
|
441 |
0 |
|
442 |
0 |
|
443 |
73 |
|
444 |
0 |
|
445 |
0 |
|
446 |
8.510652311046387 |
|
447 |
1.1250764035300234 |
|
448 |
14 |
|
449 |
18 |
|
450 |
10 |
|
451 |
0 |
|
452 |
0 |
|
453 |
16 |
|
454 |
0 |
|
455 |
0 |
|
456 |
7.218646203228216 |
|
457 |
2.075771900641477 |
|
458 |
19 |
|
459 |
14 |
|
460 |
11 |
|
461 |
0 |
|
462 |
0 |
|
463 |
25 |
|
464 |
0 |
|
465 |
0 |
|
466 |
7.114827249465112 |
|
467 |
1.9059591832016949 |
|
468 |
17 |
|
469 |
19 |
|
470 |
11 |
|
471 |
0 |
|
472 |
0 |
|
473 |
80 |
|
474 |
0 |
|
475 |
0 |
|
476 |
7.24234707219834 |
|
477 |
2.0723141474224427 |
|
478 |
16 |
|
479 |
13 |
|
480 |
12 |
|
481 |
0 |
|
482 |
0 |
|
483 |
30 |
|
484 |
0 |
|
485 |
0 |
|
486 |
8.16092918436066 |
|
487 |
1.0146127300272096 |
|
488 |
12 |
|
489 |
16 |
|
490 |
12 |
|
491 |
0 |
|
492 |
0 |
|
493 |
62 |
|
494 |
0 |
|
495 |
0 |
|
496 |
1.5037330534969058 |
|
497 |
2.729533053292074 |
|
498 |
20 |
|
499 |
21 |
|
500 |
13 |
|
501 |
0 |
|
502 |
0 |
|
503 |
23 |
|
504 |
1 |
|
505 |
0 |
|
506 |
8.930473663224427 |
|
507 |
1.2416386387610803 |
|
508 |
22 |
|
509 |
20 |
|
510 |
13 |
|
511 |
0 |
|
512 |
0 |
|
513 |
20 |
|
514 |
0 |
|
515 |
0 |
|
516 |
7.559325262226159 |
|
517 |
1.6451443301594082 |
|
518 |
21 |
|
519 |
22 |
|
520 |
13 |
|
521 |
0 |
|
522 |
0 |
|
523 |
34 |
|
524 |
1 |
|
525 |
0 |
|
526 |
5.710052158186178 |
|
527 |
2.078204568551323 |
|
528 |
23 |
|
529 |
24 |
|
530 |
14 |
|
531 |
0 |
|
532 |
0 |
|
533 |
85 |
|
534 |
0 |
|
535 |
0 |
|
536 |
6.373959027915761 |
|
537 |
0.7799771166031012 |
|
538 |
25 |
|
539 |
23 |
|
540 |
14 |
|
541 |
0 |
|
542 |
0 |
|
543 |
38 |
|
544 |
0 |
|
545 |
0 |
|
546 |
1.7732946715648046 |
|
547 |
2.173580731963505 |
|
548 |
24 |
|
549 |
25 |
|
550 |
14 |
|
551 |
0 |
|
552 |
0 |
|
553 |
29 |
|
554 |
0 |
|
555 |
0 |
|
556 |
7.495085244398764 |
|
557 |
1.3178970263775502 |
|
558 |
26 |
|
559 |
27 |
|
560 |
15 |
|
561 |
0 |
|
562 |
0 |
|
563 |
22 |
|
564 |
0 |
|
565 |
0 |
|
566 |
7.148616682812731 |
|
567 |
1.3102700672912762 |
|
568 |
27 |
|
569 |
28 |
|
570 |
15 |
|
571 |
0 |
|
572 |
0 |
|
573 |
71 |
|
574 |
0 |
|
575 |
0 |
|
576 |
5.101701457102572 |
|
577 |
0.9212679769043179 |
|
578 |
28 |
|
579 |
26 |
|
580 |
15 |
|
581 |
0 |
|
582 |
0 |
|
583 |
45 |
|
584 |
0 |
|
585 |
0 |
|
586 |
3.0098232830004346 |
|
587 |
1.806485244432378 |
|
588 |
15 |
|
589 |
18 |
|
590 |
16 |
|
591 |
0 |
|
592 |
0 |
|
593 |
26 |
|
594 |
0 |
|
595 |
0 |
|
596 |
8.398146757523122 |
|
597 |
1.7393652853252513 |
|
598 |
29 |
|
599 |
3 |
|
600 |
17 |
|
601 |
0 |
|
602 |
0 |
|
603 |
31 |
|
604 |
0 |
|
605 |
-1 |
|
606 |
7.671077844244745 |
|
607 |
2.2370951987414274 |
|
608 |
5 |
|
609 |
29 |
|
610 |
17 |
|
611 |
0 |
|
612 |
0 |
|
613 |
52 |
|
614 |
0 |
|
615 |
0 |
|
616 |
3.598236965098637 |
|
617 |
5.697151431678375 |
|
618 |
4 |
|
619 |
13 |
|
620 |
18 |
|
621 |
0 |
|
622 |
0 |
|
623 |
19 |
|
624 |
0 |
|
625 |
0 |
|
626 |
6.894279157179725 |
|
627 |
1.816085499909942 |
|
628 |
30 |
|
629 |
4 |
|
630 |
18 |
|
631 |
0 |
|
632 |
0 |
|
633 |
43 |
|
634 |
0 |
|
635 |
0 |
|
636 |
2.3645037260394544 |
|
637 |
1.1252827615110104 |
|
638 |
13 |
|
639 |
30 |
|
640 |
18 |
|
641 |
0 |
|
642 |
0 |
|
643 |
57 |
|
644 |
0 |
|
645 |
0 |
|
646 |
6.016612564927007 |
|
647 |
0.9212192682809177 |
|
648 |
0 |
|
649 |
20 |
|
650 |
20 |
|
651 |
0 |
|
652 |
0 |
|
653 |
61 |
|
654 |
0 |
|
655 |
0 |
|
656 |
3.400237165905518 |
|
657 |
2.110071038197222 |
|
658 |
22 |
|
659 |
0 |
|
660 |
20 |
|
661 |
0 |
|
662 |
0 |
|
663 |
56 |
|
664 |
0 |
|
665 |
0 |
|
666 |
8.505680286580033 |
|
667 |
1.193213937768918 |
|
668 |
31 |
|
669 |
28 |
|
670 |
21 |
|
671 |
0 |
|
672 |
0 |
|
673 |
28 |
|
674 |
-1 |
|
675 |
0 |
|
676 |
3.499401768981641 |
|
677 |
1.7004373258240852 |
|
678 |
32 |
|
679 |
31 |
|
680 |
21 |
|
681 |
0 |
|
682 |
0 |
|
683 |
84 |
|
684 |
-1 |
|
685 |
0 |
|
686 |
5.828912004953271 |
|
687 |
0.7994025711042237 |
|
688 |
28 |
|
689 |
32 |
|
690 |
21 |
|
691 |
0 |
|
692 |
0 |
|
693 |
72 |
|
694 |
0 |
|
695 |
0 |
|
696 |
3.421148198448322 |
|
697 |
0.9910089568830227 |
|
698 |
26 |
|
699 |
19 |
|
700 |
22 |
|
701 |
0 |
|
702 |
0 |
|
703 |
25 |
|
704 |
0 |
|
705 |
0 |
|
706 |
0.3756285310714842 |
|
707 |
2.3354412127296196 |
|
708 |
19 |
|
709 |
27 |
|
710 |
22 |
|
711 |
0 |
|
712 |
0 |
|
713 |
67 |
|
714 |
0 |
|
715 |
0 |
|
716 |
6.027150056137137 |
|
717 |
1.3479771010724726 |
|
718 |
33 |
|
719 |
21 |
|
720 |
23 |
|
721 |
0 |
|
722 |
0 |
|
723 |
79 |
|
724 |
0 |
|
725 |
0 |
|
726 |
6.398955389727695 |
|
727 |
0.8905786536815244 |
|
728 |
20 |
|
729 |
33 |
|
730 |
23 |
|
731 |
0 |
|
732 |
0 |
|
733 |
51 |
|
734 |
0 |
|
735 |
0 |
|
736 |
3.799444773086914 |
|
737 |
1.3115327544561985 |
|
738 |
34 |
|
739 |
8 |
|
740 |
24 |
|
741 |
0 |
|
742 |
0 |
|
743 |
66 |
|
744 |
0 |
|
745 |
-1 |
|
746 |
8.826838177566064 |
|
747 |
1.4769627121541855 |
|
748 |
16 |
|
749 |
34 |
|
750 |
24 |
|
751 |
0 |
|
752 |
0 |
|
753 |
62 |
|
754 |
0 |
|
755 |
0 |
|
756 |
6.56848456360322 |
|
757 |
2.5574272552811044 |
|
758 |
26 |
|
759 |
14 |
|
760 |
25 |
|
761 |
0 |
|
762 |
0 |
|
763 |
54 |
|
764 |
0 |
|
765 |
0 |
|
766 |
8.726441934709847 |
|
767 |
1.075660138674797 |
|
768 |
35 |
|
769 |
18 |
|
770 |
26 |
|
771 |
0 |
|
772 |
0 |
|
773 |
78 |
|
774 |
0 |
|
775 |
0 |
|
776 |
6.586073575659283 |
|
777 |
0.9977374871095045 |
|
778 |
15 |
|
779 |
35 |
|
780 |
26 |
|
781 |
0 |
|
782 |
0 |
|
783 |
41 |
|
784 |
0 |
|
785 |
0 |
|
786 |
1.7418984998374087 |
|
787 |
1.5291397101193123 |
|
788 |
21 |
|
789 |
23 |
|
790 |
27 |
|
791 |
0 |
|
792 |
0 |
|
793 |
79 |
|
794 |
0 |
|
795 |
0 |
|
796 |
5.914384296931883 |
|
797 |
0.8786479172264603 |
|
798 |
23 |
|
799 |
26 |
|
800 |
27 |
|
801 |
0 |
|
802 |
0 |
|
803 |
39 |
|
804 |
0 |
|
805 |
0 |
|
806 |
2.499716102562306 |
|
807 |
1.523049654651023 |
|
808 |
26 |
|
809 |
21 |
|
810 |
27 |
|
811 |
0 |
|
812 |
0 |
|
813 |
45 |
|
814 |
0 |
|
815 |
0 |
|
816 |
7.936078370151628 |
|
817 |
1.381559507270994 |
|
818 |
22 |
|
819 |
28 |
|
820 |
28 |
|
821 |
0 |
|
822 |
0 |
|
823 |
34 |
|
824 |
1 |
|
825 |
0 |
|
826 |
8.211840380753 |
|
827 |
1.6314292128691357 |
|
828 |
31 |
|
829 |
22 |
|
830 |
28 |
|
831 |
0 |
|
832 |
0 |
|
833 |
35 |
|
834 |
0 |
|
835 |
0 |
|
836 |
3.0986246239994975 |
|
837 |
1.4402180870960941 |
|
838 |
36 |
|
839 |
25 |
|
840 |
29 |
|
841 |
0 |
|
842 |
0 |
|
843 |
36 |
|
844 |
0 |
|
845 |
0 |
|
846 |
1.7070032875719003 |
|
847 |
1.7119227017909877 |
|
848 |
24 |
|
849 |
36 |
Formats disponibles : Unified diff