16 #include "Grid/grid_dist_id.hpp"
17 #include "data_type/aggregate.hpp"
57 auto it = Old.getGridIterator();
62 auto key = it.get_dist();
65 Old.template insert<U>(key) = 1.0;
66 Old.template insert<V>(key) = 0.0;
69 New.template insert<U>(key) = 0.0;
70 New.template insert<V>(key) = 0.0;
75 long int x_start = Old.size(0)*1.55f/domain.getHigh(0);
76 long int y_start = Old.size(1)*1.55f/domain.getHigh(1);
77 long int z_start = Old.size(1)*1.55f/domain.getHigh(2);
79 long int x_stop = Old.size(0)*1.85f/domain.getHigh(0);
80 long int y_stop = Old.size(1)*1.85f/domain.getHigh(1);
81 long int z_stop = Old.size(1)*1.85f/domain.getHigh(2);
85 auto it_init = Old.getGridIterator(start,stop);
87 while (it_init.isNext())
89 auto key = it_init.get_dist();
91 Old.template insert<U>(key) = 0.5 + (((double)std::rand())/RAND_MAX -0.5)/10.0;
92 Old.template insert<V>(key) = 0.25 + (((double)std::rand())/RAND_MAX -0.5)/20.0;
99 int main(
int argc,
char* argv[])
101 openfpm_init(&argc,&argv);
107 size_t sz[3] = {128,128,128};
126 size_t timeSteps = 200;
128 size_t timeSteps = 5000;
142 double spacing[3] = {Old.spacing(0),Old.spacing(1),Old.spacing(2)};
144 init(Old,New,domain);
148 Old.template ghost_get<U,V>();
152 double uFactor = deltaT * du/(spacing[x]*spacing[x]);
153 double vFactor = deltaT * dv/(spacing[x]*spacing[x]);
155 Old.write(
"Init_condition");
160 auto & v_cl = create_vcluster();
162 for (
size_t i = 0; i < timeSteps; ++i)
164 if (v_cl.rank() == 0)
165 {std::cout <<
"STEP: " << i << std::endl;}
174 auto it = Old.getDomainIterator();
182 auto mx = Cp.move(0,-1);
183 auto px = Cp.move(0,+1);
184 auto my = Cp.move(1,-1);
185 auto py = Cp.move(1,1);
186 auto mz = Cp.move(2,-1);
187 auto pz = Cp.move(2,1);
190 New.insert<U>(Cp) = Old.get<U>(Cp) + uFactor * (
197 6.0*Old.get<U>(Cp)) +
198 - deltaT * Old.get<U>(Cp) * Old.get<V>(Cp) * Old.get<V>(Cp) +
199 - deltaT *
F * (Old.get<U>(Cp) - 1.0);
203 New.insert<V>(Cp) = Old.get<V>(Cp) + vFactor * (
211 deltaT * Old.get<U>(Cp) * Old.get<V>(Cp) * Old.get<V>(Cp) +
212 - deltaT * (
F+K) * Old.get<V>(Cp);
225 Old.copy_sparse(New);
228 Old.ghost_get<U,V>();
234 Old.save(
"output_" + std::to_string(count));
240 std::cout <<
"Total simulation: " << tot_sim.
getwct() << std::endl;
This class represent an N-dimensional box.
This is a distributed grid.
grid_key_dx is the key to access any element in the grid
Class for cpu time benchmarking.
void stop()
Stop the timer.
void start()
Start the timer.
double getwct()
Return the elapsed real time.
OutputIteratorT OffsetT ReductionOpT OuputT init
< [in] The initial value of the reduction
[v_transform metafunction]
aggregate of properties, from a list of object if create a struct that follow the OPENFPM native stru...