User: bmundim Date: 2011/02/28 02:09 PM
Modified: /trunk/src/ Kerr.c
Log: Segfault with kerr initial data using IDAnalyticBH
Yosef's patch:
If initial_data=kerr and metric_type=physical, IDAnalyticBH writes to psi[x-z] and psi[x-z][x-z] (it tries to set these GFs to zero) even if no storage is allocated. The problem is with the code:
IDAnalyticBH_zero_CCTK_REAL_array(npoints, psix); etc.., which is only executed when the metric is physical.
I was able to use the Kerr data with this patch, but just deleting the offending lines should be sufficient.
File Changes:
Directory: /trunk/src/ ======================
File [modified]: Kerr.c Delta lines: +21 -9 =================================================================== --- trunk/src/Kerr.c 2010-11-21 03:29:37 UTC (rev 177) +++ trunk/src/Kerr.c 2011-02-28 20:09:09 UTC (rev 178) @@ -103,8 +103,13 @@ conformal_storage); /*NOTREACHED*/ } } + else + { + *conformal_state = 0; + }
+ /* printf("npoints: %i\n",npoints); */ for(i = 0; i < npoints; i++) { @@ -311,15 +316,22 @@ } IDAnalyticBH_zero_CCTK_REAL_array(npoints, gxz); IDAnalyticBH_zero_CCTK_REAL_array(npoints, gyz); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psix); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiy); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiz); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psixx); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psixy); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psixz); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiyy); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiyz); - IDAnalyticBH_zero_CCTK_REAL_array(npoints, psizz); + + if (psix && *conformal_state < 2) + { + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psix); + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiy); + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiz); + } + if (psixx && *conformal_state < 3) + { + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psixx); + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psixy); + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psixz); + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiyy); + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psiyz); + IDAnalyticBH_zero_CCTK_REAL_array(npoints, psizz); + } }
return;