Program Listing for File NuMagSANSlib_InitializeData.h#

↰ Return to documentation for file (src/wrapper/NuMagSANSlib_InitializeData.h)

#pragma once

inline void InitializeDataMulti(InputFileData* InputData, NucDataProperties* NucDataProp,
                                MagDataProperties* MagDataProp, StructDataProperties* StructDataProp,
                                RotDataProperties* RotDataProp, NuclearData* NucData, NuclearData* NucData_gpu,
                                MagnetizationData* MagData, MagnetizationData* MagData_gpu, StructureData* StructData,
                                StructureData* StructData_gpu, RotationData* RotData, RotationData* RotData_gpu,
                                ScatteringData* SANSData, ScatteringData* SANSData_gpu, SpectralData* SpecData,
                                SpectralData* SpecData_gpu, ScalingFactors* ScalFactors, int Data_File_Index) {

    // initialize nuclear data ################################################################
    if (InputData->NucData_activate_flag) {
        init_NuclearData(NucData, NucData_gpu, NucDataProp, InputData, Data_File_Index);
        CheckCUDALastError("initialize nuclear data");
    }

    // initialize magnetization data ##########################################################
    if (InputData->MagData_activate_flag) {
        init_MagnetizationData(MagData, MagData_gpu, MagDataProp, InputData, Data_File_Index);
        CheckCUDALastError("initialize magnetization data");
        // disp_MagnetizationData(MagData);
    }

    // initialize structure data ##############################################################
    if (InputData->StructData_activate_flag) {
        if (InputData->StructDataLoop_flag) {
            init_StructureDataMemory(StructData, StructData_gpu, StructDataProp, InputData);
        } else {
            init_StructureData(StructData, StructData_gpu, StructDataProp, InputData);
        }
        CheckCUDALastError("initialize structure data");
        // disp_StructureData(StructData);
    }

    // initialize rotation data ###############################################################
    if (InputData->RotData_activate_flag) {
        if (InputData->RotDataLoop_flag) {
            init_RotationDataMemory(RotData, RotData_gpu, RotDataProp, InputData);
        } else {
            init_RotationData(RotData, RotData_gpu, RotDataProp, InputData);
        }
        CheckCUDALastError("initialize rotation data");
    }

    // initialize scattering data #############################################################
    init_ScatteringData(InputData, SANSData, SANSData_gpu);
    CheckCUDALastError("initialize scattering data");

    // initialize spectral data ###############################################################
    init_SpectralData(InputData, SANSData, SpecData, SpecData_gpu);
    CheckCUDALastError("initialize spectral data");

    // initialize scaling factors
    init_ScalingFactors(ScalFactors, InputData, MagData, NucData, SANSData);
}

inline void InitializeData(InputFileData* InputData, NucDataProperties* NucDataProp, MagDataProperties* MagDataProp,
                           StructDataProperties* StructDataProp, RotDataProperties* RotDataProp, NuMagSANSData* Data,
                           int Data_File_Index) {

    InitializeDataMulti(InputData, NucDataProp, MagDataProp, StructDataProp, RotDataProp, &Data->NucData,
                        &Data->NucData_gpu, &Data->MagData, &Data->MagData_gpu, &Data->StructData,
                        &Data->StructData_gpu, &Data->RotData, &Data->RotData_gpu, &Data->SANSData, &Data->SANSData_gpu,
                        &Data->SpecData, &Data->SpecData_gpu, &Data->ScalFactors, Data_File_Index);
}

inline void ResetSANSOutputData(InputFileData* InputData, NuMagSANSData* Data) {

    free_ScatteringData(&Data->SANSData, &Data->SANSData_gpu);
    free_SpectralData(&Data->SpecData, &Data->SpecData_gpu);

    init_ScatteringData(InputData, &Data->SANSData, &Data->SANSData_gpu);
    init_SpectralData(InputData, &Data->SANSData, &Data->SpecData, &Data->SpecData_gpu);

    init_ScalingFactors(&Data->ScalFactors, InputData, &Data->MagData, &Data->NucData, &Data->SANSData);

    CheckCUDALastError("reset SANS output data");
}