コード例 #1
0
ファイル: dump.c プロジェクト: pseudotensor/harm_purepenna
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);
}
コード例 #2
0
ファイル: Source.cpp プロジェクト: lukelino/VS
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;
}