void ReferenceFrame2D::GetElementData(ElementDataContainer& edc) 		//fill in all element data
{
	Body2D::GetElementData(edc);

	//IVector FFRFelements; //elements connected to ReferenceFrame
	//SearchTree searchtree; //for optimized node fill
	//TArray<Node*> nodes;
	//int resortconstraint;  //activates resorting of the DOF of the reference frame into the constraint part
	//int isACRS;  //absolute coordinates reduced strain --> the frame rotation and translation is not taken into account in GetPos2D() etc.


	ElementData ed;
	SetElemDataIVector(edc, FFRFelements, "FFRF_elements");

	ed.SetBool(draw_frame, "Draw_Frame"); edc.Add(ed);
}
void MathFunction::GetElementData(ElementDataContainer& edc) 		//fill in all element data
{
    ElementData ed;

    //structure of ElementData:
    //Mathfunction
    //{
    //  piecewise_mode = 0/1/2     %modus for piecewise interpolation: -1=not piecewise==>use parsed function, 0=constant, 1=linear, 2=quadratic
    //  piecewise_points = [ ... ] %supporting points (e.g. time or place) for piecewise interpolation
    //  piecewise_values = [ ... ] %values at supporting points
    //  piecewise_diff_values = [ ... ] %differential values at supporting points - for quadratic interpolation
    //  parsed_function = " ... " %string representing parsed function, e.g. "A*sin(omega*t)"
    //  parsed_function_parameter = " ... " %string representing parameter of parsed function, e.g. "t"
    //  user_defined_function = yes %not editable, hard-coded userdefined function!
    //}
    int piecewise_mode = -1;

    //if (funcmode == TMFpiecewiseconst || funcmode == TMFpiecewiselinear || funcmode == TMFpiecewisequad)
    //{
    //}
    if (funcmode == TMFpiecewiseconst)
    {
        piecewise_mode = 0;
    }
    else if (funcmode == TMFpiecewiselinear)
    {
        piecewise_mode = 1;
    }
    else if (funcmode == TMFpiecewisequad)
    {
        piecewise_mode = 2;
    }
    ed.SetInt(piecewise_mode, "piecewise_mode", -1, 2);
    ed.SetToolTipText("modus for piecewise interpolation: -1=not piecewise, 0=constant, 1=linear, 2=quadratic");
    edc.Add(ed);
    ed.SetVector(vectime.GetVecPtr(), vectime.Length(), "piecewise_points");
    ed.SetVariableLength();
    ed.SetToolTipText("supporting points (e.g. time or place) for piecewise interpolation");
    edc.Add(ed);
    ed.SetVector(valX.GetVecPtr(), valX.Length(), "piecewise_values");
    ed.SetVariableLength();
    ed.SetToolTipText("values at supporting points");
    edc.Add(ed);
    ed.SetVector(valY.GetVecPtr(), valY.Length(), "piecewise_diff_values");
    ed.SetVariableLength();
    ed.SetToolTipText("differential values at supporting points - for quadratic interpolation");
    edc.Add(ed);


    if (funcmode == TMFexpression)
    {
        ed.SetText(parsedFunctionExpression.c_str(), "parsed_function");
        ed.SetToolTipText("string representing parsed function, e.g. 'A*sin(omega*t)'");
        edc.Add(ed);
        ed.SetText(parsedFunctionVariables.c_str(), "parsed_function_parameter");
        ed.SetToolTipText("string representing parameter of parsed function, e.g. 't'");
        edc.Add(ed);
    }
    else
    {
        //initialize with zero strings:
        ed.SetText("", "parsed_function");
        ed.SetToolTipText("string representing parsed function, e.g. 'A*sin(omega*t)'");
        edc.Add(ed);
        ed.SetText("", "parsed_function_parameter");
        ed.SetToolTipText("string representing parameter of parsed function, e.g. 't'");
        edc.Add(ed);
    }

    if (funcmode == TMFuserdefined)
    {
        ed.SetBool(1,"user_defined_function");
        ed.SetLocked(1);
        ed.SetToolTipText("not editable, hard-coded userdefined function!");
        edc.Add(ed);
    }
}