def register_C_functions_and_NRPy_basic_defines(rel_path_to_Cparams=os.path.join('./'), enable_rfm_precompute=False, use_unit_wavespeed_for_find_timestep=False):
    add_to_Cfunction_dict__find_timestep(rel_path_to_Cparams=rel_path_to_Cparams, enable_mask=False, output_dt_local_h_only=False, use_unit_wavespeed=use_unit_wavespeed_for_find_timestep)
    add_to_Cfunc_dict_xx_to_Cart(rel_path_to_Cparams=rel_path_to_Cparams)
    add_to_Cfunc_dict_set_Nxx_dxx_invdx_params__and__xx(rel_path_to_Cparams=rel_path_to_Cparams)
    for frame in ('local', 'global'):
        add_to_Cfunc_dict__Cart_to_xx_and_nearest_i0i1i2(rel_path_to_Cparams=rel_path_to_Cparams, relative_to=(frame + '_grid_center'))
    if enable_rfm_precompute:
        if (par.parval_from_str((thismodule + '::rfm_precompute_to_Cfunctions_and_NRPy_basic_defines')) == 'True'):
            add_to_Cfunction_dict(includes=[os.path.join(rel_path_to_Cparams, 'NRPy_basic_defines.h')], desc='Reference Metric Precomputation infrastructure: Allocate memory for rfmstruct', c_type='void', name='rfm_precompute_rfmstruct_malloc', params='const paramstruct *restrict params, rfm_struct *restrict rfmstruct', body=indent_Ccode(rfm_struct__malloc.replace('rfmstruct.', 'rfmstruct->')), rel_path_to_Cparams=rel_path_to_Cparams)
            add_to_Cfunction_dict(includes=[os.path.join(rel_path_to_Cparams, 'NRPy_basic_defines.h')], desc='Reference Metric Precomputation infrastructure: Define rfmstruct', c_type='void', name='rfm_precompute_rfmstruct_define', params='const paramstruct *restrict params, REAL *restrict xx[3], rfm_struct *restrict rfmstruct', body=indent_Ccode(rfm_struct__define.replace('rfmstruct.', 'rfmstruct->')), rel_path_to_Cparams=rel_path_to_Cparams)
            add_to_Cfunction_dict(includes=[os.path.join(rel_path_to_Cparams, 'NRPy_basic_defines.h')], desc='Reference Metric Precomputation infrastructure: Free rfmstruct memory', c_type='void', name='rfm_precompute_rfmstruct_freemem', params='const paramstruct *restrict params, rfm_struct *restrict rfmstruct', body=indent_Ccode(rfm_struct__freemem.replace('rfmstruct.', 'rfmstruct->')), rel_path_to_Cparams=rel_path_to_Cparams)
            outC_NRPy_basic_defines_h_dict['reference_metric'] = NRPy_basic_defines_str
        else:
            outC_NRPy_basic_defines_h_dict['reference_metric'] = '#include "rfm_files/rfm_struct__declare.h"\n'
def register_C_functions_and_NRPy_basic_defines(rel_path_to_Cparams=os.path.join('./'), enable_rfm_precompute=False, use_unit_wavespeed_for_find_timestep=False):
    add_to_Cfunction_dict__find_timestep(rel_path_to_Cparams=rel_path_to_Cparams, enable_mask=False, output_dt_local_h_only=False, use_unit_wavespeed=use_unit_wavespeed_for_find_timestep)
    add_to_Cfunc_dict_xx_to_Cart(rel_path_to_Cparams=rel_path_to_Cparams)
    add_to_Cfunc_dict_set_Nxx_dxx_invdx_params__and__xx(rel_path_to_Cparams=rel_path_to_Cparams)
    for frame in ('local', 'global'):
        add_to_Cfunc_dict__Cart_to_xx_and_nearest_i0i1i2(rel_path_to_Cparams=rel_path_to_Cparams, relative_to=(frame + '_grid_center'))
    if enable_rfm_precompute:
        if (par.parval_from_str((thismodule + '::rfm_precompute_to_Cfunctions_and_NRPy_basic_defines')) == 'True'):
            add_to_Cfunction_dict(includes=[os.path.join(rel_path_to_Cparams, 'NRPy_basic_defines.h')], desc='Reference Metric Precomputation infrastructure: Allocate memory for rfmstruct', c_type='void', name='rfm_precompute_rfmstruct_malloc', params='const paramstruct *restrict params, rfm_struct *restrict rfmstruct', body=indent_Ccode(rfm_struct__malloc.replace('rfmstruct.', 'rfmstruct->')), rel_path_to_Cparams=rel_path_to_Cparams)
            add_to_Cfunction_dict(includes=[os.path.join(rel_path_to_Cparams, 'NRPy_basic_defines.h')], desc='Reference Metric Precomputation infrastructure: Define rfmstruct', c_type='void', name='rfm_precompute_rfmstruct_define', params='const paramstruct *restrict params, REAL *restrict xx[3], rfm_struct *restrict rfmstruct', body=indent_Ccode(rfm_struct__define.replace('rfmstruct.', 'rfmstruct->')), rel_path_to_Cparams=rel_path_to_Cparams)
            add_to_Cfunction_dict(includes=[os.path.join(rel_path_to_Cparams, 'NRPy_basic_defines.h')], desc='Reference Metric Precomputation infrastructure: Free rfmstruct memory', c_type='void', name='rfm_precompute_rfmstruct_freemem', params='const paramstruct *restrict params, rfm_struct *restrict rfmstruct', body=indent_Ccode(rfm_struct__freemem.replace('rfmstruct.', 'rfmstruct->')), rel_path_to_Cparams=rel_path_to_Cparams)
            outC_NRPy_basic_defines_h_dict['reference_metric'] = NRPy_basic_defines_str
        else:
            outC_NRPy_basic_defines_h_dict['reference_metric'] = '#include "rfm_files/rfm_struct__declare.h"\n'