Skip to content

Commit

Permalink
put observables
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Jul 10, 2016
1 parent d50984c commit 75ec34a
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 9 deletions.
56 changes: 49 additions & 7 deletions templates/librarylink.cpp.in
Expand Up @@ -244,6 +244,17 @@ void put_spectrum(const @ModelName@_slha<algorithm_type>& model, MLINK link)

/******************************************************************/

void put_observables(const @ModelName@_observables& observables, MLINK link)
{
MLPutFunction(link, "List", @numberOfObservables@);

@putObservables@

MLEndPacket(link);
}

/******************************************************************/

void check_spectrum(const Model_data& data, MLINK link)
{
const Problems<@ModelName@_info::NUMBER_OF_PARTICLES>& problems
Expand Down Expand Up @@ -479,8 +490,6 @@ DLLEXPORT int FS@ModelName@OpenHandle(
handles.emplace(hid, data);
}

std::cout << "handle " << hid << " created" << std::endl;

MArgument_setInteger(Res, hid);
} catch (const flexiblesusy::Error& e) {
std::cerr << e.what() << std::endl;
Expand All @@ -493,7 +502,7 @@ DLLEXPORT int FS@ModelName@OpenHandle(
/******************************************************************/

DLLEXPORT int FS@ModelName@CloseHandle(
WolframLibraryData /* libData */, mint Argc, MArgument* Args, MArgument Res)
WolframLibraryData /* libData */, mint Argc, MArgument* Args, MArgument /* Res */)
{
if (Argc != 1)
return LIBRARY_TYPE_ERROR;
Expand All @@ -505,10 +514,8 @@ DLLEXPORT int FS@ModelName@CloseHandle(

const Handle_map::iterator handle = handles.find(hid);

if (handle != handles.end()) {
std::cout << "removing handle " << hid << std::endl;
if (handle != handles.end())
handles.erase(handle);
}
}

return LIBRARY_NO_ERROR;
Expand Down Expand Up @@ -541,7 +548,42 @@ DLLEXPORT int FS@ModelName@CalculateSpectrum(
handles[hid] = data;
}
} catch (const flexiblesusy::Error& e) {
std::cerr << e.what() << std::endl;
put_error_output(link);
}

return LIBRARY_NO_ERROR;
}

/******************************************************************/

DLLEXPORT int FS@ModelName@CalculateObservables(
WolframLibraryData /* libData */, MLINK link)
{
long argc;
if (MLCheckFunction(link, "List", &argc) == 0 || argc != 1) {
std::cerr << "Error: FS@ModelName@CalculateSpectrum expects 1"
" argument (" << argc << " given)." << std::endl;
return LIBRARY_TYPE_ERROR;
}

Handle_id hid;
MLGetLongInteger(link, &hid);

try {
Model_data data = find_data(hid);

if (data.model.get_scale() == 0.) {
put_message(link,
"FS@ModelName@CalculateObservables", "warning",
"Renormalization scale is 0. Did you run "
"FS@ModelName@CalculateSpectrum[]?");
}

@ModelName@_observables observables(
calculate_observables(data.model, data.qedqcd, data.physical_input));
put_observables(observables, link);
} catch (const flexiblesusy::Error& e) {
put_message(link, "FS@ModelName@CalculateObservables", "error", e.what());
put_error_output(link);
}

Expand Down
7 changes: 5 additions & 2 deletions templates/librarylink.m.in
Expand Up @@ -5,9 +5,11 @@ FS@ModelName@GetSMInputParameters = LibraryFunctionLoad[lib@ModelName@, "FS@Mode
FS@ModelName@GetInputParameters = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@GetInputParameters", LinkObject, LinkObject];

FS@ModelName@OpenHandleLib = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@OpenHandle", {{Real,1}}, Integer];
FS@ModelName@CalculateSpectrum = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@CalculateSpectrum", LinkObject, LinkObject];
FS@ModelName@CloseHandle = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@CloseHandle", {Integer}, Void];

FS@ModelName@CalculateSpectrum = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@CalculateSpectrum", LinkObject, LinkObject];
FS@ModelName@CalculateObservables = LibraryFunctionLoad[lib@ModelName@, "FS@ModelName@CalculateObservables", LinkObject, LinkObject];

FS@ModelName@CalculateSpectrum::error = "`1`";
FS@ModelName@CalculateSpectrum::warning = "`1`";

Expand Down Expand Up @@ -121,5 +123,6 @@ handle = FS@ModelName@OpenHandle[];
Print[FS@ModelName@GetSettings[handle]];
Print[FS@ModelName@GetSMInputParameters[handle]];
Print[FS@ModelName@GetInputParameters[handle]];
FS@ModelName@CalculateSpectrum[handle];
Print[FS@ModelName@CalculateSpectrum[handle]];
Print[FS@ModelName@CalculateObservables[handle]];
FS@ModelName@CloseHandle[handle];

0 comments on commit 75ec34a

Please sign in to comment.