예제 #1
0
void doPeakList(char KNMap[], cosmo_hm *cmhm, peak_param *peak, error **err)
{
  map_t *kMap = initialize_map_t(peak->resol[0], peak->resol[1], peak->theta_pix, err); forwardError(*err, __LINE__,);
  
  if (KNMap == NULL) {
    //-- Carry out KMap from fast simulation
    sampler_arr *sampArr = initialize_sampler_arr(peak->N_z_halo, peak->nbMassBins);
    setMassSamplers(cmhm, peak, sampArr, err);                                                        forwardError(*err, __LINE__,);
    halo_map *hMap       = initialize_halo_map(peak->resol[0], peak->resol[1], peak->theta_pix, err); forwardError(*err, __LINE__,);
    gal_map *gMap        = initialize_gal_map(peak->resol[0], peak->resol[1], peak->theta_pix, err);  forwardError(*err, __LINE__,);
    makeGalaxies(cmhm, peak, gMap, err);                                                              forwardError(*err, __LINE__,);
    map_t *nMap          = initialize_map_t(peak->resol[0], peak->resol[1], peak->theta_pix, err);    forwardError(*err, __LINE__,);
    FFT_t *transformer   = initialize_FFT_t(peak->FFTSize, peak->FFTSize);
    fillGaussianKernel(transformer, peak->s);
    
    makeFastSimul(cmhm, peak, sampArr, hMap, err);     forwardError(*err, __LINE__,);
    lensingForMap(cmhm, peak, hMap, gMap, err);        forwardError(*err, __LINE__,);
    makeMap(peak, gMap, kMap, nMap, transformer, err); forwardError(*err, __LINE__,);
    
    outputFastSimul("haloList", cmhm, peak, hMap);
    outputGalaxies("galList", cmhm, peak, gMap);
    outputMap("KNMap", cmhm, peak, kMap);
    outputMap("NMap", cmhm, peak, nMap);
    
    free_sampler_arr(sampArr);
    free_halo_map(hMap);
    free_gal_map(gMap);
    free_map_t(nMap);
    free_FFT_t(transformer);
  }
예제 #2
0
int gameoflife()
{
    int row, col;
    char ans;
    init();
    while(1)
    {
        outputMap();
        for(row = 0; row < MAXROW; row++)
        {
            for(col = 0; col < MAXCOL; col++)
            {
                switch (neighbors(row, col))
                {
                case 0:
                case 1:
                case 4:
                case 5:
                case 6:
                case 7:
                case 8:
                    newmap[row][col] = DEAD;
                    break;
                case 2:
                    newmap[row][col] = map[row][col];
                    break;
                case 3:
                    newmap[row][col] = ALIVE;
                    break;
                }
            }
        }
        copyMap();
        printf("\nContinue next Generation ? ");
        getchar();
        ans = toupper(getchar());
        if(ans != 'Y') break;
    }

    return 0;
}
예제 #3
0
파일: main.c 프로젝트: jessehui/Misc
void main()
{
    int row, col;
    initEnv();//初始化环境
    int i = 0;
    while(i < Total_Generations)
    {
        printf("\nGeneration %d\n", i+1);
        i++;
        outputMap();
        for(row = 0; row < MAXROW; row++)//计算下一代
        {
            for(col = 0; col < MAXCOL; col++)
            {
                switch(neighbors(row,col))
                {
                        //周围有0,1,4,5,6,7,8个细胞时 该细胞都会死亡
                    case 0:newMap[row][col] = DEAD;break;
                    case 1:newMap[row][col] = DEAD;break;
                    case 4:newMap[row][col] = DEAD;break;
                    case 5:newMap[row][col] = DEAD;break;
                    case 6:newMap[row][col] = DEAD;break;
                    case 7:newMap[row][col] = DEAD;break;
                    case 8:newMap[row][col] = DEAD;break;
                        
                        //周围有两个细胞 保持不变
                    case 2:newMap[row][col] = newMap[row][col];break;
                        
                        //周围有3个细胞 变为存活
                    case 3:newMap[row][col] = ALIVE;break;
                        
                        
                        
                }
            }
        }
        
    }
}