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); }
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; }
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; } } } } }