コード例 #1
0
ファイル: main.c プロジェクト: zhangtianchi/Cosmology
int main()
{

double i;
double rho_crit_0 = 2.7754e11;
double mass=3e14;
FILE *fp1;
fp1 = fopen("NFW", "w");
	if ( fp1 == NULL )	{	
		printf("Cann't open  file\n");
		return 1;
}
for(i=0;i<r200(mass);i++)
{
//printf("%le\n",r200(3e15));
printf("%le \t%le\n",log10(i/r200(mass)),log10(NFW(i,mass)/rho_crit_0));
fprintf(fp1,"%le \t%le\n",(i/r200(mass)),(NFW(i,mass)/rho_crit_0));
} 
fclose(fp1);
return 0;
}
コード例 #2
0
ファイル: t_vector.cpp プロジェクト: iley/intelib
int main()
{
    poc();
    try {
        TestSection("SVector");
        TestSubsection("Matrix");
        {
            SMatrix<5> matrix;
            matrix[1][2][1][0][1] = 123;
            matrix[2][1][0][1][4] = 777;

            TEST("matrix_1", matrix[1][2][1][0][1].GetInt(), 123);
            TEST("matrix_2", matrix[2][1][0][1][4].GetInt(), 777);
        }
        TestSubsection("Matrix_has_you");
        {
            SVector m;
            SVector m0;
            SVector m1;
            SVector m00;
            SVector m01;
            SVector m10;
            SVector m11;

            m10[1] = SReference(25);

            m0[0] = m00;
            m0[1] = m01;
            m1[0] = m10;
            m1[1] = m11;

            m[0]  = m0;
            m[1]  = m1;

            SMatrixRef<3> matr(m);

            TEST("matrix_has_you", matr[1][0][1].GetInt(), 25);
        }
        TestSubsection("resize");
        {
            SVector v;
            v[7] = 5;
            TEST("resize_1", v->Size(), 8);
            v[12] = 5;
            TEST("resize_2", v->Size(), 13);
            v[13] = 5;
            TEST("resize_3", v->Size(), 14);
        }
#if INTELIB_DEBUG_COUNTERS == 1
        TestSubsection("leaks");
        {
            int before = SExpression::object_counter;
            {
                SVector v;
                v[7] = 5;
                SVectorRef vr(v);
                SVectorRef vr2;
                vr2 = vr;
                SVectorRef vr3(vr2);
                for(int i=0; i<200; i++) vr3[vr3->Size()] = SReference(i);
            }
            TEST("no_leaks", SExpression::object_counter, before);
        }
#endif
        TestSubsection("TextRepresentation");
        {
            SVector v;
            for(int i=0; i<5; i++) v[i]=i;
            TEST("text_rep", v->TextRepresentation().c_str(),
                 "#~(0 1 2 3 4)");

        }
        TestSubsection("Range Copying");
        {
            SVector v;
            for(int i=0; i<15; i++) v[i]=i;

            SVectorRange r(v,5,3);
            TEST("range_copy", r.Copy()->TextRepresentation().c_str(),
                 "#~(5 6 7)");
            TESTB("copy_keeps_positive_resizeability",
                 r.Copy()->IsResizeable());

            SVector vn(5);
            for(int i=0; i<5; i++) vn[i]=i*100;
            SVectorRange rn(vn,1,2);
            TESTB("copy_keeps_negative_resizeability",
                 !rn.Copy()->IsResizeable());
            TESTB("copy_positive_resizeability",
                 rn.Copy(true)->IsResizeable());
            TESTB("copy_negative_resizeability",
                 !rn.Copy(false)->IsResizeable());

            SVectorRange r200(v,5,200);
            TEST("range_size_limited", r200.Copy()->Size(), 10);

        }
        TestSubsection("Range Erasing");
        {
            SVector v;
            for(int i=0; i<15; i++) v[i]=i;
            SVectorRange r(v,3,10);
            r.Erase();
            TEST("range_erase", v->TextRepresentation().c_str(),
                 "#~(0 1 2 13 14)");
            TEST("range_erase_size", v->Size(), 5);
            TEST("range_erase_range_len", r.Copy()->Size(), 0);

        }
        TestSubsection("Range Replacing");
        {
            SVector v, w;
            for(int i=0; i<15; i++) v[i]=i;
            for(int i=0; i<5; i++) w[i]=i*100;

            SVectorRange r(v,3,10);
            r.Replace(w);
            TEST("range_replace_less", v->TextRepresentation().c_str(),
                 "#~(0 1 2 0 100 200 300 400 13 14)");
            TEST("range_replace_less_size", v->Size(), 10);
            TEST("range_replace_less_range_len", r.Copy()->Size(), 5);
        }
        {
            SVector v, w;
            for(int i=0; i<10; i++) v[i]=i;
            for(int i=0; i<5; i++) w[i]=i*100;

            SVectorRange r(w,1,2);
            r.Replace(v);
            TEST("range_replace_more", w->TextRepresentation().c_str(),
                 "#~(0 0 1 2 3 4 5 6 7 8 9 300 400)");
            TEST("range_replace_more_size", w->Size(), 13);
            TEST("range_replace_more_range_len", r.Copy()->Size(), 10);
        }
        TestScore();
    }
    catch(const IntelibX &ex) {
        printf("Caught IntelibX: %s\n%s\n",
            ex.Description(),
            ex.Parameter().GetPtr() ?
                ex.Parameter()->TextRepresentation().c_str() : "");
    }
    catch(...) {
        printf("Something strange caught\n");
    }
    poc();
    return 0;
}
コード例 #3
0
ファイル: nfw.c プロジェクト: lgo33/GadTools
int main (int argc, char *argv[])
{
  FILE *fp;
  char infile[256];
  int i,j,k, usepart;
  struct gadpart *part;
  gadpart_dist *wpart;
  struct header head;
  fltarr cm={0,0,0};
  double rv=0, sfl=0;
  int calccenter=1;
  
  i=1;
  usepart=USE;
  if (1==argc) usage();
  while (i<argc)
    {
      if (!strcmp(argv[i],"-i"))
	{
	  i++;
	  strcpy(infile,argv[i]);
	  i++;
	}
      else if (!strcmp(argv[i],"-cm")) {
	cm[0]=atof(argv[++i]);
	cm[1]=atof(argv[++i]);
	cm[2]=atof(argv[++i]);
	i++;
      }
      else if (!strcmp(argv[i],"-nocenter")) {
	calccenter=0;
	i++;
      }
      else if (!strcmp(argv[i],"-rv")) {
	rv=atof(argv[++i]);
	i++;
      }
      else if (!strcmp(argv[i],"-soft")) {
	sfl=atof(argv[++i]);
	i++;
      }
      else if (!strcmp(argv[i],"-use")) {
	i++;
	if (!strcmp(argv[i],"all")) usepart=63;
	else usepart=atoi(argv[i]);
	i++;
      } 
      else if (*argv[i]!='-')
	{
	  strcpy(infile,argv[i]);
	  i++;
	} else {
	usage();
      }
    }

  unsigned int numpart_all;
  if (!(numpart_all=readgadget_part(infile, &head, &part))) 
    {
      extern int libgaderr;
      printf("error reading file %s\nError Code %d\n",infile, libgaderr);
      exit(1);
    }

  unsigned int numpart=0;
  for (i=0; i<6; i++)
    {
      if (usepart&(1<<i)) {numpart+=head.npart[i];}
    }
  wpart=(struct gadpart_dist*) malloc (numpart*sizeof(struct gadpart_dist));
  j=0;
  for (i=0; i<numpart_all;i++)
    {
	if ((1<<(part[i].type))&usepart)
	{
	  cpygadpart(&(wpart[j].part),&(part[i]));
	  wpart[j].dist=distance(wpart[j].part.pos, cm);
	  //	  printf("%f  | ", wpart[j].dist);
	  j++;
	}
    }
  qsort(wpart, j, sizeof(gadpart_dist), cmp_dist);
  //  pcenter(wpart, j, rv, cm);

  /*********************************************************************

      Program code goes here

  *********************************************************************/

  double par[2]={0.005,20};
  double c;
  double mvir=0;
  double rcs;
  int vcnt;
  if (calccenter)
    {
      const double maxdist =2000.0;
      pcenter(wpart, numpart, maxdist, cm, 2);
    }
  if (rv==0) rv= r200(wpart, j, 200, head, &vcnt, &mvir);
  c = nfwfit(par, wpart, j, rv ,sfl, &rcs);
  printf("center %f %f %f\n", cm[0], cm[1], cm[2]);
  printf("Rvir %g | Vcnt %d | Mvir %g\n", rv, vcnt, mvir);
  printf("rs %g dc %g\n", par[1], par[0]);
  printf("reduced chi^2 %f\n", rcs);
  printf("c %f\n", c);
  return 0;
}