int dump_content(int i, int j, int k, MPI_Datatype datatype,void *writebuf) { int pl; FTYPE r, th, vmin[NDIM], vmax[NDIM]; int ignorecourant; struct of_geom geom; struct of_state q; FTYPE X[NDIM],V[NDIM]; FTYPE divb; FTYPE b[NDIM],ucon[NDIM]; FTYPE U[NPR]; FTYPE ftemp; FTYPE jcov[NDIM]; FTYPE fcov[NUMFARADAY]; FTYPE rho,u,pressure,cs2,Sden; int dir,l,m,n,o; ////////////// // // some calculations // coord(i, j, k, CENT, X); bl_coord(X, V); // if failed, then data output for below invalid, but columns still must exist get_geometry(i, j, k, CENT, &geom); if (!failed) { if (get_state(pdump[i][j][k], &geom, &q) >= 1) FAILSTATEMENT("dump.c:dump()", "get_state() dir=0", 1); if (vchar(pdump[i][j][k], &q, 1, &geom, &vmax[1], &vmin[1],&ignorecourant) >= 1) FAILSTATEMENT("dump.c:dump()", "vchar() dir=1or2", 1); if (vchar(pdump[i][j][k], &q, 2, &geom, &vmax[2], &vmin[2],&ignorecourant) >= 1) FAILSTATEMENT("dump.c:dump()", "vchar() dir=1or2", 2); if (vchar(pdump[i][j][k], &q, 3, &geom, &vmax[3], &vmin[3],&ignorecourant) >= 1) FAILSTATEMENT("dump.c:dump()", "vchar() dir=1or2", 3); } else {// do a per zone check, otherwise set to 0 whocalleducon=1; // force no failure mode, just return like failure, and don't return if failure, just set to 0 and continue if (get_state(pdump[i][j][k], &geom, &q) >= 1){ for (pl = 0; pl < NDIM; pl++) q.ucon[pl]=0; for (pl = 0; pl < NDIM; pl++) q.ucov[pl]=0; for (pl = 0; pl < NDIM; pl++) q.bcon[pl]=0; for (pl = 0; pl < NDIM; pl++) q.bcov[pl]=0; } if (vchar(pdump[i][j][k], &q, 1, &geom, &vmax[1], &vmin[1],&ignorecourant) >= 1){ vmax[1]=vmin[1]=0; } if (vchar(pdump[i][j][k], &q, 2, &geom, &vmax[2], &vmin[2],&ignorecourant) >= 1){ vmax[2]=vmin[2]=0; } if (vchar(pdump[i][j][k], &q, 3, &geom, &vmax[3], &vmin[3],&ignorecourant) >= 1){ vmax[3]=vmin[3]=0; } whocalleducon=0; // return to normal state } setfdivb(&divb, pdump, udump, i, j, k); // udump also set externally GODMARK ////////////////////////// // // do the assignments // // if you change # of outputted vars, remember to change numcolumns //static if(!GAMMIEDUMP){ ftemp=(FTYPE)(i+startpos[1]); myset(datatype,&ftemp,0,1,writebuf); ftemp=(FTYPE)(j+startpos[2]); myset(datatype,&ftemp,0,1,writebuf); ftemp=(FTYPE)(k+startpos[3]); myset(datatype,&ftemp,0,1,writebuf); } myset(datatype,X,1,3,writebuf); myset(datatype,V,1,3,writebuf); // 9 //////////////////////// // // rest dynamic // primitives // must use PDUMPLOOP() since may be any order unlike NPR loop PDUMPLOOP(pl) myset(datatype,&(pdump[i][j][k][pl]),0,1,writebuf); // NPRDUMP //////////// // // output some EOS stuff since in general not simple function of rho0,u rho = pdump[i][j][k][RHO]; u = pdump[i][j][k][UU]; pressure = pressure_rho0_u(rho,u); cs2 = cs2_compute(rho,u); Sden = compute_entropy(rho,u); // dUdtau = compute_qdot(rho,u); myset(datatype,&pressure,0,1,writebuf); // 1 myset(datatype,&cs2,0,1,writebuf); // 1 myset(datatype,&Sden,0,1,writebuf); // 1 // myset(datatype,&dUdtau,0,1,writebuf); // 1 ////////////////////// // // output the conserved quantities since not easily inverted and at higher order aren't invertable from point primitives PDUMPLOOP(pl) myset(datatype,&(udump[i][j][k][pl]),0,1,writebuf); // NPRDUMP myset(datatype,&divb,0,1,writebuf); // 1 for (pl = 0; pl < NDIM; pl++) myset(datatype,&(q.ucon[pl]),0,1,writebuf); for (pl = 0; pl < NDIM; pl++) myset(datatype,&(q.ucov[pl]),0,1,writebuf); for (pl = 0; pl < NDIM; pl++) myset(datatype,&(q.bcon[pl]),0,1,writebuf); for (pl = 0; pl < NDIM; pl++) myset(datatype,&(q.bcov[pl]),0,1,writebuf); // 4*4 myset(datatype,&vmin[1],0,1,writebuf); myset(datatype,&vmax[1],0,1,writebuf); myset(datatype,&vmin[2],0,1,writebuf); myset(datatype,&vmax[2],0,1,writebuf); myset(datatype,&vmin[3],0,1,writebuf); myset(datatype,&vmax[3],0,1,writebuf); // 6 // one static term myset(datatype,&geom.g,0,1,writebuf); // 1 #if(CALCFARADAYANDCURRENTS) // NIM*2+6*2 = 8+12=20 // updated 11/16/2003 // new 10/23/2003 // current density lower_vec(jcon[i][j][k],&geom,jcov); myset(datatype,jcon[i][j][k],0,NDIM,writebuf); // (NDIM) myset(datatype,jcov,0,NDIM,writebuf);// (NDIM) // faraday (2*6) lowerf(fcon[i][j][k],&geom,fcov); myset(datatype,fcon[i][j][k],0,NUMFARADAY,writebuf); // (6) myset(datatype,fcov,0,NUMFARADAY,writebuf); // (6) #endif if(FLUXB==FLUXCTSTAG && 0){ // DEBUG (change corresponding code in dump.c) // uses jrdp3dudebug in gtwod.m that assumes CALCFARADAYANDCURRENTS==0 for(l=1;l<=COMPDIM;l++) myset(datatype,gp_l[l][i][j][k],0,NPR2INTERP,writebuf); // 3*8 = 24 for(l=1;l<=COMPDIM;l++) myset(datatype,gp_r[l][i][j][k],0,NPR2INTERP,writebuf); // 3*8 = 24 myset(datatype,pstagscratch[i][j][k],0,NPR,writebuf); // 8 for(dir=1;dir<=COMPDIM;dir++) for(pl=B1;pl<=B3;pl++) for(n=0;n<=1;n++) myset(datatype,&pbcorninterp[dir][pl][n][i][j][k],0,1,writebuf); // 3*3*2 = 18 for(dir=1;dir<=COMPDIM;dir++) for(pl=U1;pl<=U3;pl++) for(n=0;n<=1;n++) for(o=0;o<=1;o++) myset(datatype,&pvcorninterp[dir][pl][n][o][i][j][k],0,1,writebuf); // 3*3*2*2 = 36 } return (0); }
int main() { std::vector<int> vec; std::deque<int> deq; std::array<int, 3> arr{ -10, 0, 10 }, ar2{ -5, 1, 5 }; std::list<int> lis; std::forward_list<int> f_lis; //array { std::cout << "array: "; for (auto i : arr) std::cout << i << " "; std::cout << std::endl; //.at() std::cout << ".at(0) " << arr.at(0) << std::endl; //.empty() if (arr.empty()) std::cout << ".empty" << std::endl; else std::cout << ".not empty" << std::endl; //.back() std::cout << ".back() " << arr.back() << std::endl; //.begin() auto ptr = arr.begin(); //*ptr += 100; std::cout << ".begin() " << *ptr << std::endl; //.cbegin() auto const_ptr = arr.cbegin(); //const_iterator //*pt -= 100; std::cout << ".cbegin() " << *const_ptr << std::endl; //.cend() const_ptr = arr.cend() - 1; std::cout << ".cend()-1 " << *const_ptr << std::endl; //.crbegin() auto const_rev_it = arr.crbegin(); std::cout << ".crbegin() " << *const_rev_it << std::endl; for (auto it = arr.crbegin(); it != arr.crend(); it++) std::cout << *it << " "; std::cout << std::endl; //.crend() auto cri_ptr = arr.crend() - 1; std::cout << ".crend() " << *cri_ptr << std::endl; //.data() std::cout << ".data() " << *(arr.data()) << std::endl; //.end() ptr = arr.end() - 1; std::cout << ".end()-1 " << *ptr << std::endl; //.fill arr.fill(99); std::cout << ".fill() "; for (auto i : arr) std::cout << i << " "; std::cout << std::endl; //.front() std::cout << ".front() " << arr.front() << std::endl; //.max_size() std::cout << ".max_size() " << arr.max_size() << std::endl; //operator[] arr[0] = -10; arr[1] = 0; arr[2] = 10; std::cout << "opaerator[] "; for (auto i : arr) std::cout << i << " "; std::cout << std::endl; auto c = -2; for (auto &i : arr) { i = c; c += 2; } for (auto i : arr) std::cout << i << " "; std::cout << std::endl; //.rbegin() std::cout << ".rbegin() "; auto r_ptr = arr.rbegin(); std::cout << *r_ptr << std::endl; //.rend() std::cout << ".rend() "; r_ptr = arr.rend() - 1; std::cout << *r_ptr << std::endl; //.size() std::cout << ".size() " << arr.size() << std::endl; //.swap() arr.swap(ar2); std::cout << ".swap() "; for (auto i : arr) std::cout << i << " "; std::cout << std::endl; //get<>() auto x = std::get<0>(arr); std::cout << x << std::endl; } //vector { std::cout << std::endl; typedef std::vector<int> vect; vect v1({ -2, 0, 2 }); vect v2(3); v2.at(0) = -3; v2.at(1) = 1; v2.at(2) = 3; std::cout << "vector: "; for (auto i : v1) std::cout << i << " "; std::cout << std::endl; //.assign() std::cout << ".assign(5, 10) "; v1.assign(5, 10); for (auto i : v1) std::cout << i << " "; std::cout << std::endl << std::endl; std::cout << ".assign(v2.begin()+1, v2.end()-1) "; v1.assign(v2.begin(), v2.end()); for (auto i : v1) std::cout << i << " "; std::cout << std::endl; //.back() std::cout << ".back() " << v1.back() << std::endl; //.clear() std::cout << ".clear() " << std::endl; v1.clear(); for (auto i : v1) std::cout << i; std::cout << std::endl; //assign() v1.assign(v2.begin(), v2.end()); //.capacity() std::cout << ".capacity() " << v1.capacity() << std::endl; //.crbegin() auto vcrbeg = v1.crbegin(); std::cout << ".crbegin() " << *vcrbeg << std::endl; //.data() std::cout << ".data() " << *(v1.data()) << std::endl; //.emplace std::cout << ".emplace(1, 33) "; v1.emplace(v1.begin() + 1, 33); for (auto i : v1) std::cout << i << " "; std::cout << std::endl; //.emplace() v1.emplace_back(44); for (auto i : v1) std::cout << i << " "; std::cout << std::endl; vect v3({ 3,4,5,6,7 }); vect v4({ 3,4,5,6,7 }); std::cout << "v3.size() " << v3.size() << std::endl; std::cout << "v4.size() " << v4.size() << std::endl; std::cout << "v3.capacity() " << v3.capacity() << std::endl; std::cout << "v4.capacity() " << v4.capacity() << std::endl; v3.emplace_back(5); v4.push_back(5); std::cout << "v3.emplace_back() " << v3.capacity() << std::endl; std::cout << "v4.push_back() " << v4.capacity() << std::endl; //.insert() v1.insert(v1.begin() + 1, 99); std::cout << ".insert(v1.begin()+1, 99) "; for (auto i : v1) std::cout << i << " "; std::cout << std::endl; v1.insert(v1.begin() + 1, v3.begin(), v3.end()-1); std::cout << ".insert(v1.begin() + 1, v3.begin(), v3.end()-1) "; for (auto i : v1) std::cout << i << " "; std::cout << std::endl; //.pop_back() std::cout << ".pop_back() " << std::endl; int i = v1.size()-1; while (v1.size() > 0) { for (int j = 0; j <= i ; j++) std::cout << v1[j] << " "; std::cout << std::endl; v1.pop_back(); i--; } std::cout << std::endl; //.shrink_to_fit() vect v5(100); std::cout << v5.capacity() << std::endl; v5.resize(10); std::cout << v5.capacity() << std::endl; v5.reserve(200); std::cout << v5.capacity() << std::endl; v5.shrink_to_fit(); std::cout << v5.capacity() << std::endl; std::vector<char> vchar(50), vchar2(52); char ch[] = "Lukasz Nawrot"; strncpy_s(vchar.data(), 16, ch, 16); std::cout << vchar.data() << std::endl; } return 0; }