// Numbas version: finer_feedback_settings {"name": "Internal force: Overhanging beam", "extensions": ["geogebra", "jsxgraph", "shear-and-bending-moment-diagrams", "quantities"], "custom_part_types": [{"source": {"pk": 19, "author": {"name": "William Haynes", "pk": 2530}, "edit_page": "/part_type/19/edit"}, "name": "Engineering Accuracy with units", "short_name": "engineering-answer", "description": "
A value with units marked right if within an adjustable % error of the correct value. Marked close if within a wider margin of error.
", "help_url": "", "input_widget": "string", "input_options": {"correctAnswer": "siground(settings['correctAnswer'],4)", "hint": {"static": true, "value": ""}, "allowEmpty": {"static": true, "value": true}}, "can_be_gap": true, "can_be_step": true, "marking_script": "mark:\nswitch( \n right and good_units and right_sign, add_credit(1.0,'Correct.'),\n right and good_units and not right_sign, add_credit(settings['C2'],'Wrong sign.'),\n right and right_sign and not good_units, add_credit(settings['C2'],'Correct value, but wrong or missing units.'),\n close and good_units, add_credit(settings['C1'],'Close.'),\n close and not good_units, add_credit(settings['C3'],'Answer is close, but wrong or missing units.'),\n incorrect('Wrong answer.')\n)\n\ninterpreted_answer:\nqty(student_scalar, student_units)\n\n\n\ncorrect_quantity:\nsettings[\"correctAnswer\"]\n\n\n\ncorrect_units:\nunits(correct_quantity)\n\n\nallowed_notation_styles:\n[\"plain\",\"en\"]\n\nmatch_student_number:\nmatchnumber(studentAnswer,allowed_notation_styles)\n\nstudent_scalar:\nmatch_student_number[1]\n\nstudent_units:\nreplace_regex('ohms','ohm',\n replace_regex('\u00b0', ' deg',\n replace_regex('-', ' ' ,\n studentAnswer[len(match_student_number[0])..len(studentAnswer)])),\"i\")\n\ngood_units:\ntry(\ncompatible(quantity(1, student_units),correct_units),\nmsg,\nfeedback(msg);false)\n\n\nstudent_quantity:\nswitch(not good_units, \n student_scalar * correct_units, \n not right_sign,\n -quantity(student_scalar, student_units),\n quantity(student_scalar,student_units)\n)\n \n\n\npercent_error:\ntry(\nscalar(abs((correct_quantity - student_quantity)/correct_quantity))*100 \n,msg,\nif(student_quantity=correct_quantity,0,100))\n \n\nright:\npercent_error <= settings['right']\n\n\nclose:\nright_sign and percent_error <= settings['close']\n\nright_sign:\nsign(student_scalar) = sign(correct_quantity)", "marking_notes": [{"name": "mark", "description": "This is the main marking note. It should award credit and provide feedback based on the student's answer.", "definition": "switch( \n right and good_units and right_sign, add_credit(1.0,'Correct.'),\n right and good_units and not right_sign, add_credit(settings['C2'],'Wrong sign.'),\n right and right_sign and not good_units, add_credit(settings['C2'],'Correct value, but wrong or missing units.'),\n close and good_units, add_credit(settings['C1'],'Close.'),\n close and not good_units, add_credit(settings['C3'],'Answer is close, but wrong or missing units.'),\n incorrect('Wrong answer.')\n)"}, {"name": "interpreted_answer", "description": "A value representing the student's answer to this part.", "definition": "qty(student_scalar, student_units)\n\n"}, {"name": "correct_quantity", "description": "", "definition": "settings[\"correctAnswer\"]\n\n"}, {"name": "correct_units", "description": "", "definition": "units(correct_quantity)\n"}, {"name": "allowed_notation_styles", "description": "", "definition": "[\"plain\",\"en\"]"}, {"name": "match_student_number", "description": "", "definition": "matchnumber(studentAnswer,allowed_notation_styles)"}, {"name": "student_scalar", "description": "", "definition": "match_student_number[1]"}, {"name": "student_units", "description": "Modify the unit portion of the student's answer by
\n1. replacing \"ohms\" with \"ohm\" case insensitive
\n2. replacing '-' with ' '
\n3. replacing '°' with ' deg'
\nto allow answers like 10 ft-lb and 30°
", "definition": "replace_regex('ohms','ohm',\n replace_regex('\u00b0', ' deg',\n replace_regex('-', ' ' ,\n studentAnswer[len(match_student_number[0])..len(studentAnswer)])),\"i\")"}, {"name": "good_units", "description": "", "definition": "try(\ncompatible(quantity(1, student_units),correct_units),\nmsg,\nfeedback(msg);false)\n"}, {"name": "student_quantity", "description": "This fixes the student answer for two common errors.
\nIf student_units are wrong - replace with correct units
\nIf student_scalar has the wrong sign - replace with right sign
\nIf student makes both errors, only one gets fixed.
", "definition": "switch(not good_units, \n student_scalar * correct_units, \n not right_sign,\n -quantity(student_scalar, student_units),\n quantity(student_scalar,student_units)\n)\n \n"}, {"name": "percent_error", "description": "", "definition": "try(\nscalar(abs((correct_quantity - student_quantity)/correct_quantity))*100 \n,msg,\nif(student_quantity=correct_quantity,0,100))\n "}, {"name": "right", "description": "", "definition": "percent_error <= settings['right']\n"}, {"name": "close", "description": "Only marked close if the student actually has the right sign.
", "definition": "right_sign and percent_error <= settings['close']"}, {"name": "right_sign", "description": "", "definition": "sign(student_scalar) = sign(correct_quantity) "}], "settings": [{"name": "correctAnswer", "label": "Correct Quantity.", "help_url": "", "hint": "The correct answer given as a JME quantity.", "input_type": "code", "default_value": "", "evaluate": true}, {"name": "right", "label": "% Accuracy for right.", "help_url": "", "hint": "Question will be considered correct if the scalar part of the student's answer is within this % of correct value.", "input_type": "code", "default_value": "0.2", "evaluate": true}, {"name": "close", "label": "% Accuracy for close.", "help_url": "", "hint": "Question will be considered close if the scalar part of the student's answer is within this % of correct value.", "input_type": "code", "default_value": "1.0", "evaluate": true}, {"name": "C1", "label": "Close with units.", "help_url": "", "hint": "Partial Credit for close value with appropriate units. if correct answer is 100 N and close is ±1%,Calculate reactions and shear and bending moment at a point for an overhanging beam with a constant or uniformly varying distributed load.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{loadDiagram}
\nThe $\\var{distance(L)}$ beam shown supports a load that varies uniformly from $\\var{load(Wa)}$ at the left end to $\\var{load(Wb)}$ at the right end. Point $C$ is located at $x =\\var{distance(C)}$.
\n1. Replace the distributed load with an equivalent concentrated load and draw a free-body diagram of the entire beam.
\n{fbd1}
\nRecall that the equivalent force of a distributed load is the 'area' and it acts at the centroid of the shaded area above.
\n\\[ W = \\var{force(W)},\\qquad \\bar{x}=\\var{distance(xbarW)}\\]
\n2. Apply equilibrium equations to find the reactions at $A$ and $B$.
\n\\[\\begin{align} \\Sigma M_A &= 0 & \\Sigma F_y &=0 \\\\
R_B\\cdot \\var{distance(B)} &= W \\cdot \\bar{x} & R_A + R_B &= \\var{W}\\\\
R_B &= \\var{force(R_B)} \\uparrow & R_A &= \\var{force(abs(R_A))} \\var{if(R_A>0,latex('\\\\uparrow'),latex('\\\\downarrow'))}\\end{align}\\]
3. Take an imaginary cut at point $C$, and draw a FBD of the portion of the beam to the left of $C$ and use it to find the shear and bending moment at the cut.
\n{fbd2}
\na. Use similar triangles to find $w_C$, the distributed load at point $C$.
\nKnowing $w_A = \\var{load(wA)} $, $w_B = \\var{load(wB)} $.
\n\\[ \\begin{align}
\\dfrac{w_C -w_A}{\\var{distance(C)}} &= \\dfrac{w_B-w_A}{\\var{distance(L)}}\\\\
w_C &= w_A + \\left(\\var{siground(c/L,4)} \\right)\\left( w_B - w_A \\right) \\\\
&= \\var{load(WC)}
\\end{align}\\]
b. Find the equivalent force due to the distributed load.
\n \\[ \\begin{align}
W' &= (\\var{distance(C)}) \\left(\\dfrac{W_A + W_C}{2}\\right) \\\\
& = \\var{force(W')}
\\end{align} \\]
c. Locate the centroid of the equivalent concentrated load.
\n\\[ \\bar{x} = \\var{force(xbarW')}\\]
\nd. Apply equilibrium equations to solve for the shear and moment at $C$.
\n\\[\\begin{align} \\Sigma F_y &=0\\\\
V_C &= \\var{force(FV)} \\end{align}\\]
\\[\\begin{align}
\\Sigma M_C &= 0 \\\\
M_C & = R_A \\cdot \\var{distance(C)} - W' \\cdot (\\var{distance(C)} -\\bar{x}) \\\\
&= \\left( \\var{force(R_A)}\\right) \\left(\\var{distance(C)}\\right) - \\left(\\var{force(W')}\\right) \\left(\\var{distance(d)}\\right) \\\\
M_C &= \\var{moment(M_C)} \\end{align}\\]
\\[\\begin{align}
\\Sigma M_C &= 0 \\\\
M_C & = R_A \\cdot \\var{distance(C)} - W' \\cdot (\\var{distance(C)} -\\bar{x}) +R_B \\cdot d_\\perp) \\\\
&= \\left( \\var{force(R_A)}\\right) \\left(\\var{distance(C)}\\right) - \\left(\\var{force(W')}\\right) \\left(\\var{distance(d)}\\right)+\\left(\\var{force(R_B)}\\right) \\left(\\var{distance(C-B)}\\right) \\\\
M_C &= \\var{moment(M_C)} \\end{align}\\]
overall length of the beam.
", "templateType": "anything", "can_override": false}, "units": {"name": "units", "group": "functions", "definition": "random(['N','m', 'N*m', 'N/m'],['lb','ft', 'ft*lb', 'lb/ft'])", "description": "", "templateType": "anything", "can_override": false}, "debug": {"name": "debug", "group": "Ungrouped variables", "definition": "false", "description": "", "templateType": "anything", "can_override": false}, "FV": {"name": "FV", "group": "Unnamed group", "definition": "siground(R_A + if(B−\ud835\udc34\u2113−\ud835\udc4a′\ud835\udc51⊥−\ud835\udc36\ud835\udc512
", "templateType": "anything", "can_override": false}, "C": {"name": "C", "group": "Quantities", "definition": "random(2..L#2 except[L,B])", "description": "position of cut
", "templateType": "anything", "can_override": false}, "size": {"name": "size", "group": "Quantities", "definition": "random(50,100,200)", "description": "Random load value used to make actual loads Wa and Wb.
", "templateType": "anything", "can_override": false}, "WC": {"name": "WC", "group": "Quantities", "definition": "WA + (WB-WA) C / L ", "description": "distributed load value at point C
", "templateType": "anything", "can_override": false}, "WB": {"name": "WB", "group": "Quantities", "definition": "size random(0..2#0.5)", "description": "distributed load value at point A, right end.
", "templateType": "anything", "can_override": false}, "WA": {"name": "WA", "group": "Quantities", "definition": "size random(0..2#0.5)", "description": "distributed load value at point A, left end
", "templateType": "anything", "can_override": false}, "d": {"name": "d", "group": "Unnamed group", "definition": "c-xbarw'", "description": "distance from cut to equivalent load
", "templateType": "anything", "can_override": false}, "force": {"name": "force", "group": "functions", "definition": "(f)-> siground(qty(f, units[0]),4)", "description": "", "templateType": "anything", "can_override": false}, "distance": {"name": "distance", "group": "functions", "definition": "(d)->siground(qty(d,units[1]),4)", "description": "", "templateType": "anything", "can_override": false}, "load": {"name": "load", "group": "functions", "definition": "(l)->siground(qty(l,units[3]),4)", "description": "", "templateType": "anything", "can_override": false}, "properties": {"name": "properties", "group": "jsxgraph", "definition": "[beamLength: L, loads: [w1], forces: [], moments: [], reactions: [hide(RA),hide(RB)], symbols: symbols]", "description": "", "templateType": "anything", "can_override": false}, "W1": {"name": "W1", "group": "jsxgraph", "definition": "[[x: 0, value: wA, label: WA+if(WA<>WB, \" to \" + string(load(WB)) , ''), visible: true],[x: L, value: WB, label: \"D\", visible: true],]", "description": "", "templateType": "anything", "can_override": false}, "LoadDiagram": {"name": "LoadDiagram", "group": "jsxgraph", "definition": "vmloaddiagram(properties)", "description": "", "templateType": "anything", "can_override": false}, "symbols": {"name": "symbols", "group": "jsxgraph", "definition": "[[x: C, type: \"dot\", visible: true, label: \"$C$\"],[x: B, type: \"roller\", visible: true , label: \"$B$\"], [x: 0, type: 'pin', visible: true, label: \"$A$\"]]", "description": "", "templateType": "anything", "can_override": false}, "moment": {"name": "moment", "group": "functions", "definition": "(m)-> siground(qty(m, units[2]),4)", "description": "", "templateType": "anything", "can_override": false}, "B": {"name": "B", "group": "Quantities", "definition": "round(random(L/2..L))", "description": "", "templateType": "anything", "can_override": false}, "xbar": {"name": "xbar", "group": "functions", "definition": "(w) -> let (xa, w[0][\"x\"], xb, w[1][\"x\"], ya, w[0][\"value\"], yb, w[1][\"value\"] , if(xa+xb=0, 0, xa+(xb - xa)*(ya + 2 yb)/3/(ya + yb)))", "description": "", "templateType": "anything", "can_override": false}, "xbarW": {"name": "xbarW", "group": "jsxgraph", "definition": "xbar(W1)", "description": "", "templateType": "anything", "can_override": false}, "area": {"name": "area", "group": "functions", "definition": "w -> let (xa, w[0][\"x\"], xb, w[1][\"x\"], ya, w[0][\"value\"], yb, w[1][\"value\"] ,(xb-xa)(ya+yb)/2)", "description": "", "templateType": "anything", "can_override": false}, "W": {"name": "W", "group": "jsxgraph", "definition": "area(W1)", "description": "equivalent force of entire load
", "templateType": "anything", "can_override": false}, "W1'": {"name": "W1'", "group": "Unnamed group", "definition": "[[x: 0, value: wA, label: '', visible: true],[x: C, value: WC, label: \"C\", visible: true],]", "description": "", "templateType": "anything", "can_override": false}, "xbarW'": {"name": "xbarW'", "group": "Unnamed group", "definition": "xbar(w1')", "description": "", "templateType": "anything", "can_override": false}, "W'": {"name": "W'", "group": "Unnamed group", "definition": "area(W1')", "description": "equivalent force of part load
", "templateType": "anything", "can_override": false}, "EqW": {"name": "EqW", "group": "diagrams", "definition": "[x: xbar(w1), value: area(W1), label: \"$W$\", visible: true]", "description": "", "templateType": "anything", "can_override": false}, "EqW'": {"name": "EqW'", "group": "Unnamed group", "definition": "[x: xbarW', value: W', label: \"$W'$\", visible: true]", "description": "", "templateType": "anything", "can_override": false}, "R_A": {"name": "R_A", "group": "Quantities", "definition": "let(equivalent_loads, eqw,(sum(map(f->cross( vector(B-f[\"x\"],0,0),vector(0,-f[\"value\"],0))[2],forces+equivalent_loads))\n- sum(map(m->m['value'], moments)))/(A-B))\n", "description": "Reaction at A
", "templateType": "anything", "can_override": false}, "check": {"name": "check", "group": "Quantities", "definition": "R_A + R_B = EqW[\"value\"]", "description": "", "templateType": "anything", "can_override": false}, "shearDiagram": {"name": "shearDiagram", "group": "jsxgraph", "definition": "vmsheardiagram(properties,debug)", "description": "", "templateType": "anything", "can_override": false}, "momentDiagram": {"name": "momentDiagram", "group": "jsxgraph", "definition": "vmmomentdiagram(properties,debug)", "description": "", "templateType": "anything", "can_override": false}, "reactions": {"name": "reactions", "group": "jsxgraph", "definition": "[[x: 0, value: R_A, label: \"$R_A$\", visible: false],[x: B, value: R_B, label: \"$R_B$\", visible: false]]", "description": "", "templateType": "anything", "can_override": false}, "forces": {"name": "forces", "group": "Ungrouped variables", "definition": "[]", "description": "", "templateType": "anything", "can_override": false}, "moments": {"name": "moments", "group": "Ungrouped variables", "definition": "[]", "description": "", "templateType": "anything", "can_override": false}, "properties_fbd1": {"name": "properties_fbd1", "group": "diagrams", "definition": "[beamLength: L, loads: [[hide(relabel(w1[0], \"\")),w1[1]]], forces: [eqw], reactions: [[x: 0, value: abs(R_A), label: \"$R_A$\", visible: true],RB], moments: [], symbols: [[x: C, type: \"dot\", visible: true, label: \"$C$\"],[x: xbarw, type: \"dot\", label: \"$\\\\bar{x}$\", visible: true]]]", "description": "", "templateType": "anything", "can_override": false}, "fbd1": {"name": "fbd1", "group": "diagrams", "definition": "vmloaddiagram(properties_fbd1)", "description": "", "templateType": "anything", "can_override": false}, "relabel": {"name": "relabel", "group": "functions", "definition": "(dict, label) -> merge(dict, [label: label])", "description": "", "templateType": "anything", "can_override": false}, "hide": {"name": "hide", "group": "functions", "definition": "(dict) -> merge(dict, [visible: false])", "description": "", "templateType": "anything", "can_override": false}, "A": {"name": "A", "group": "Quantities", "definition": "0", "description": "", "templateType": "anything", "can_override": false}, "RA": {"name": "RA", "group": "jsxgraph", "definition": "[x: 0, value: R_A, label: \"$R_A$\", visible: true]", "description": "", "templateType": "anything", "can_override": false}, "RB": {"name": "RB", "group": "jsxgraph", "definition": "[x: B, value: R_B, label: \"$R_B$\", visible: true]", "description": "", "templateType": "anything", "can_override": false}, "properties_fbd2": {"name": "properties_fbd2", "group": "Unnamed group", "definition": "[beamLength: C, loads: [[hide(w1'[0]),w1'[1]]], forces: [eqw'], reactions: [relabel(RA, string(force(abs(RA[\"value\"])))),V, relabel(RB, string(force(abs(RB[\"value\"]))))], moments: [M], symbols: [[x: xbarw', type: \"dot\", label: \"$\\\\bar{x}$\", visible: true], [x: B, type: \"dot\", label: \"$B$\", visible: true]]]", "description": "", "templateType": "anything", "can_override": false}, "fbd2": {"name": "fbd2", "group": "Unnamed group", "definition": "vmloaddiagram(properties_fbd2)", "description": "", "templateType": "anything", "can_override": false}, "V": {"name": "V", "group": "Unnamed group", "definition": "[x: C, value: -abs(fv), label: \"$V_C$\", visible: true]", "description": "shear force points down on fbd
", "templateType": "anything", "can_override": false}, "M": {"name": "M", "group": "Unnamed group", "definition": "[x: C, value: 1, label: \"$M_C$\", visible: true]", "description": "", "templateType": "anything", "can_override": false}, "R_B": {"name": "R_B", "group": "Quantities", "definition": "-map(f->cross( vector(A-f[\"x\"],0,0),vector(0,-f[\"value\"],0))[2],forces+eqw)[0]/(A-B)\n", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "WA<>WB //always trapezoidal", "maxRuns": 100}, "ungrouped_variables": ["debug", "forces", "moments"], "variable_groups": [{"name": "Quantities", "variables": ["L", "A", "B", "C", "size", "WA", "WB", "WC", "R_A", "R_B", "check"]}, {"name": "vectors", "variables": []}, {"name": "jsxgraph", "variables": ["properties", "LoadDiagram", "shearDiagram", "momentDiagram", "W1", "symbols", "xbarW", "reactions", "W", "RA", "RB"]}, {"name": "functions", "variables": ["units", "force", "distance", "load", "moment", "area", "xbar", "relabel", "hide"]}, {"name": "diagrams", "variables": ["EqW", "properties_fbd1", "fbd1"]}, {"name": "Unnamed group", "variables": ["properties_fbd2", "fbd2", "W1'", "W'", "xbarW'", "EqW'", "FV", "M_C", "d", "V", "M"]}], "functions": {"display": {"parameters": [["q", "quantity"]], "type": "string", "language": "jme", "definition": "string(siground(q,4))"}, "applet": {"parameters": [["app_width", "number"], ["app_height", "number"], ["show_fbd", "boolean"]], "type": "ggbapplet", "language": "javascript", "definition": "// Create the worksheet. \n// This function returns an object with a container `element` and a `promise` resolving to a GeoGebra applet.\nvar params = {\n material_id: 'susdzdmr',\n width: app_width,\n height: app_height\n};\n//geogebra_applet('susdzdmr') old ggb file\n\nvar result = Numbas.extensions.geogebra.createGeogebraApplet(params);\n\n// Once the applet has loaded, run some commands to manipulate the worksheet.\nresult.promise.then(function(d) {\n var app = d.app;\n question.applet = d;\n app.setGridVisible(false);\n \n function setGGBPoint(name) {\n // moves point in GGB to location of Numbas Vector Variable\n var pt = question.scope.evaluate(name).value\n app.setFixed(name,false,false);\n app.setCoords(name, pt[0], pt[1]);\n app.setFixed(name,true,true);\n }\n\n function setGGBNumber(name) {\n // Sets number in GGB to a Numbas Variable\n var n = question.scope.evaluate(name).value;\n app.setValue(name,n);\n }\n \n setGGBPoint(\"C\");\n setGGBPoint(\"D\");\n app.setValue('fbd',show_fbd);\n app.setAxesVisible(false,false);\n app.enableShiftDragZoom(false);\n setGGBNumber(\"w_A\");\n setGGBNumber(\"w_B\");\n \n \n \n \n});\n\n// This function returns the result of `createGeogebraApplet` as an object \n// with the JME data type 'ggbapplet', which can be substituted into the question's content.\nreturn new Numbas.jme.types.ggbapplet(result);"}, "showfbds": {"parameters": [], "type": "ggbapplet", "language": "javascript", "definition": "// Create the worksheet. \n// This function returns an object with a container `element` and a `promise` resolving to a GeoGebra applet.\nvar params = {\n material_id: 'susdzdmr',\n width: 500,\n height: 500\n};\n//geogebra_applet('susdzdmr') old ggb file\n\nvar result = Numbas.extensions.geogebra.createGeogebraApplet(params);\n\n// Once the applet has loaded, run some commands to manipulate the worksheet.\nresult.promise.then(function(d) {\n var app = d.app;\n question.applet = d;\n app.setGridVisible(false);\n \n function setGGBPoint(name) {\n // moves point in GGB to location of Numbas Vector Variable\n var pt = question.scope.evaluate(name).value\n app.setFixed(name,false,false);\n app.setCoords(name, pt[0], pt[1]);\n app.setFixed(name,true,true);\n }\n\n function setGGBNumber(name) {\n // Sets number in GGB to a Numbas Variable\n var n = question.scope.evaluate(name).value;\n app.setValue(name,n);\n }\n \n setGGBPoint(\"C\");\n setGGBPoint(\"D\");\n app.setValue('fbd',true);\n app.setAxesVisible(false,false);\n app.enableShiftDragZoom(false);\n setGGBNumber(\"w_A\");\n setGGBNumber(\"w_B\");\n \n \n \n \n});\n\n// This function returns the result of `createGeogebraApplet` as an object \n// with the JME data type 'ggbapplet', which can be substituted into the question's content.\nreturn new Numbas.jme.types.ggbapplet(result);"}, "trapezoid": {"parameters": [["a", "number"], ["b", "number"], ["w", "number"]], "type": "vector", "language": "jme", "definition": "[(a+b)/2 * w, (w/3)*(a + 2b)/(a+b)] // a = left height, b = right height, w = width.... returns area and xbar"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": true, "customName": "Reactions", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Determine the reactions at pin $A$ and roller $B$. Let positive values indicate upward forces.
\n$A$ = [[0]] $\\var{force(R_A)}$
\n$B$ = [[1]] $\\var{force(R_B)}$
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$R_A$", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "force(R_A)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$R_B$", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "Force(R_B)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "Internal Load", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Determine the internal shear and bending moment at a section passing through point $C$. Use the standard convention for the meaning of positive shears and bending moments.
\n$V_C$ = [[0]] $\\var{force(FV)}$
\n$M_C$ = [[1]] $\\var{moment(M_C)}$
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$V_C$", "marks": "15", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "force(FV)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$M_C$", "marks": "15", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "moment(M_C)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}], "resources": []}]}], "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}]}