Hello!
I'm currently trying to use ArCTIc to look at serial CTI effects on the Gaia data. I used the latest git commit and built ArCTIc through the source. Gaia uses a 2-phase serial register design. However, whenever I try to run a 2-phase simulation, the code crashes and python restarts. The code I've been using looks like the following
roe = ac.ROE(
dwell_times = [0.5, 0.5],
empty_traps_between_columns=True,
empty_traps_for_first_transfers=False,
use_integer_express_matrix=False
)
# 2-phase CCD design details
Serial_ccd = ac.CCD(
phases=[ac.CCDPhase(
full_well_depth=475000,
well_notch_depth=0.0,
well_fill_power=0.58),
ac.CCDPhase(
full_well_depth=475000,
well_notch_depth=0.0,
well_fill_power=0.58)],
fraction_of_traps_per_phase=[0.5,0.5]
)
image_cti = ac.add_cti(
image=image1,
parallel_traps=None,
parallel_ccd=None,
parallel_roe=None,
serial_traps = serial_traps1,
serial_ccd=Serial_ccd,
serial_roe=roe)
The image and traps are as follows:
serial_traps1 = [
ac.TrapInstantCapture(density=0.05,release_timescale = 0.5/t_clock),
ac.TrapInstantCapture(density=4.0,release_timescale = 1.25e-7/t_clock),
ac.TrapInstantCapture(density=1.5,release_timescale = 6e-7/t_clock)
]
image1 = np.zeros((4,1966))
image1[0:2,20:25] = 10000.0
image1[2:4,1945:1950] = 10000.0
I've tried setting OMP_NUM_THREADS=1 but this also causes the code to crash with segmentation errors in Python.
I ran the python code with lldb and used bt to backtrace the error.
* thread #4, stop reason = EXC_BAD_ACCESS (code=1, address=0x40c3880000000018)
* frame #0: 0x00000001014a3afc wrapper.cpython-310-darwin.soclock_charge_in_one_direction(std::__1::valarray<std::__1::valarray<double>>&, ROE*, CCD*, std::__1::valarray<TrapInstantCapture>*, std::__1::valarray<TrapSlowCapture>*, std::__1::valarray<TrapInstantCaptureContinuum>*, std::__1::valarray<TrapSlowCaptureContinuum>*, int, int, int, int, int, int, int, int, double, int, int, int) (.omp_outlined) + 1788
frame #1: 0x000000010090d81c libomp.dylib__kmp_invoke_microtask + 156
frame #2: 0x00000001008a7ccc libomp.dylib__kmp_invoke_task_func + 336
frame #3: 0x00000001008a6988 libomp.dylib__kmp_launch_thread + 420
frame #4: 0x00000001008eebcc libomp.dylib__kmp_launch_worker(void*) + 280
frame #5: 0x000000018a58dc58 libsystem_pthread.dylib_pthread_start + 136
The code runs fine if I change it to a single phase device so it seems like it is the multi-phase aspect that it doesn't like.
Please let me know if there is an easy fix. In your 2025 paper, you said single phase is a good approximation for multi-phase if the densities are re-scaled. Can you confirm that is still the case?
Hello!
I'm currently trying to use ArCTIc to look at serial CTI effects on the Gaia data. I used the latest git commit and built ArCTIc through the source. Gaia uses a 2-phase serial register design. However, whenever I try to run a 2-phase simulation, the code crashes and python restarts. The code I've been using looks like the following
The image and traps are as follows:
I've tried setting
OMP_NUM_THREADS=1but this also causes the code to crash with segmentation errors in Python.I ran the python code with lldb and used bt to backtrace the error.
The code runs fine if I change it to a single phase device so it seems like it is the multi-phase aspect that it doesn't like.
Please let me know if there is an easy fix. In your 2025 paper, you said single phase is a good approximation for multi-phase if the densities are re-scaled. Can you confirm that is still the case?