// Numbas version: finer_feedback_settings {"name": "Moment of inertia: built-up beam with angles", "extensions": ["geogebra", "weh", "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\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)\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

\n

1. replacing \"ohms\" with \"ohm\"  case insensitive

\n

2. replacing '-' with ' ' 

\n

3. replacing '°' with ' deg' 

\n

to 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.  

\n

If student_units are wrong  - replace with correct units

\n

If student_scalar has the wrong sign - replace with right sign

\n

If 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%,
99  N is accepted.", "input_type": "percent", "default_value": "75"}, {"name": "C2", "label": "No units or wrong sign", "help_url": "", "hint": "Partial credit for forgetting units or using wrong sign.
If the correct answer is 100 N, both 100 and -100 N are accepted.", "input_type": "percent", "default_value": "50"}, {"name": "C3", "label": "Close, no units.", "help_url": "", "hint": "Partial Credit for close value but forgotten units.
This value would be close if the expected units were provided.  If the correct answer is 100 N, and close is ±1%,
99 is accepted.", "input_type": "percent", "default_value": "25"}], "public_availability": "always", "published": true, "extensions": ["quantities"]}], "resources": [["question-resources/plate-angles.ggb", "/srv/numbas/media/question-resources/plate-angles.ggb"]], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"name": "Moment of inertia: built-up beam with angles", "tags": ["beam", "Mechanics", "mechanics", "moment of inertia", "neutral axis", "parallel axis theorem", "standard sections", "Statics", "statics"], "metadata": {"description": "

Find the centroid and the centroidal moments of inertia for a beam composed of a flat plate and two angle sections.

", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "

{geogebra_applet('vvcydmsb',['A': A,'d': scalar(depth),'C':[ definition: C, fixed: true]])}

\n

A built-up beam is made up of two {name} angles welded to a {b} $\\times$ {h} plate, as shown in cross section below.  

\n

\n

Use this table of properties for the angle sections.

", "advice": "

Let the rectangle be designated by subscript $R$, the rectangle by $L$, and the total composite shape by $T$.

\n

Find rectangle properties

\n

$b = \\var{b}, h = \\var{h}$

\n

$A_R = b \\cdot h = \\var{A_R}$

\n

$\\bar{y}_R = h/2 = \\var{ybar_R}$

\n

Find the angle properties

\n

From the table:

\n

$A_L= \\var{A_L}$,

\n

$\\bar{x}=\\var{xbar}, \\bar{y} = \\var{ybar}$,  

\n

$I_{xx} = \\var{Ixx}, I_{yy} = \\var{Iyy}$

\n

Find the centroid of the angle shapes

\n

Note that the angle shape is rotated 90° from the table diagram.

\n

Measuring from the bottom center of the rectangle:

\n

$\\bar{y}_L = h + \\bar{x} = \\var{ybar_L}$ 

\n

$\\bar{x}_L = \\pm (b/2 - \\bar{y}) = \\pm \\var{xbar_L}$

\n

Find the centroid of composite shape

\n

Measuring from the bottom center of the rectangle:

\n

$\\begin{align}A_T &=  A_R + 2\\, A_L \\\\&= \\var{A_R} + 2 \\,(\\var{A_L})\\\\ &=\\var{A_T}\\end{align}\\\\$

\n

       $\\bar{x}_T = 0$, by symmetry.

\n

$\\\\\\begin{align}  \\bar{y}_T &= \\dfrac{\\Sigma A_i \\bar{y}_i}{\\Sigma A_i}\\\\ &=\\dfrac{A_R \\bar{y}_R + 2\\, A_L \\bar{y}_L}{A_T}\\\\&= \\dfrac{(\\var{A_R}) (\\var{ybar_R}) + 2\\, (\\var{A_L}) (\\var{ybar_L})}{\\var{A_T} }\\\\&=\\var{disp(ybar_T)} = \\bar{y}\\end{align}$ 

\n

Find the moment of inertia about the centroidal y- axis

\n

$\\begin{align} \\bar{I}_y &= (I_y)_R + 2\\, (I_y)_L\\\\&= \\frac{h b^3}{12} + 2\\, [\\bar{I} + A d^2]_L\\\\ &=\\frac{h b^3}{12} + 2\\, [I_{xx} + A_L (\\bar{x}_L)^2]\\\\ &=\\frac{(\\var{h})(\\var{b})^3}{12} + 2\\, [\\var{Ixx} + (\\var{A_L}) (\\var{xbar_L})^2]\\\\&=\\var{disp(Iy_R)} + 2\\,[\\var{disp(Iy_L)}] \\\\&=\\var{disp(Iy_T)}\\end{align}$

\n

Find the moment of inertia about the x-axis

\n

$\\begin{align} I_x &= (I_x)_R + 2\\, (I_x)_L\\\\&= \\frac{b h^3}{3} + 2\\, [\\bar{I} + A d^2]_L\\\\ &=\\frac{b h^3}{3} + 2\\, [I_{yy} + A_L (\\bar{y}_L)^2]\\\\ &=\\frac{(\\var{b})(\\var{h})^3}{3} + 2\\, [\\var{Iyy} + (\\var{A_L}) (\\var{ybar_L})^2]\\\\&= \\var{disp(Ix_r)} + 2\\, [\\var{disp(Ix_L)}]\\\\&=\\var{disp(Ix_T)}\\end{align}$

\n

Use the parallel axis theorem to find the moment of inertia about the centroidal x'-axis

\n

$\\begin{align} I &= \\bar{I} + A d^2 \\\\ \\bar{I}_{x'} &= I_x - A d^2\\\\ &=I_x - A_T (\\bar{y}_T)^2\\\\ &=\\var{disp(Ix_T)} - (\\var{A_T}) (\\var{disp(ybar_T)})^2\\\\&=\\var{disp(Ibarx')}\\end{align}$

\n

Find the radius of gyration with respect to the $x'$- axis.

\n

$\\begin{align} k_{x'} &= \\sqrt{\\dfrac{\\bar{I}_{x'}}{A_T}} \\\\&=\\sqrt{\\dfrac{\\var{disp(Ibarx')}}{\\var{A_T}}} \\\\&=\\var{disp(kx')}\\end{align}$ 

", "rulesets": {}, "extensions": ["geogebra", "quantities", "weh"], "variables": {"debug": {"name": "debug", "group": "Setup values", "definition": "false", "description": "", "templateType": "anything"}, "A": {"name": "A", "group": "Setup values", "definition": "vector(scalar(b)/2,scalar(h))", "description": "

coordinates of top right corner of rectangle

", "templateType": "anything"}, "Ibarx'": {"name": "Ibarx'", "group": "MOI", "definition": "Ix_T - A_T ybar_T ybar_T", "description": "", "templateType": "anything"}, "ybar_T": {"name": "ybar_T", "group": "centroid", "definition": "Qx/A_T", "description": "", "templateType": "anything"}, "index": {"name": "index", "group": "Setup values", "definition": "random(0..14)", "description": "

i

", "templateType": "anything"}, "h": {"name": "h", "group": "Setup values", "definition": "qty(random(0.5..2#0.5),'in')", "description": "

height of rectangle

", "templateType": "anything"}, "xbar_L": {"name": "xbar_L", "group": "centroid", "definition": "b/2 - ybar", "description": "", "templateType": "anything"}, "A_T": {"name": "A_T", "group": "centroid", "definition": "A_R + 2 A_L", "description": "", "templateType": "anything"}, "name": {"name": "name", "group": "angle properties", "definition": "[\"L9 $\\\\times$ 4 $\\\\times$ 1/2\",\"L8 $\\\\times$ 6 $\\\\times$ 5/8\",\"L8 $\\\\times$ 6 $\\\\times$ 1/2\",\"L8 $\\\\times$ 4 $\\\\times$ 3/4\",\"L8 $\\\\times$ 4 $\\\\times$ 1/2\",\"L7 $\\\\times$ 4 $\\\\times$ 3/4\",\"L7 $\\\\times$ 4 $\\\\times$ 5/8\",\"L7 $\\\\times$ 4 $\\\\times$ 1/2\",\"L7 $\\\\times$ 4 $\\\\times$ 3/8\",\"L6 $\\\\times$ 4 $\\\\times$ 7/8\",\"L6 $\\\\times$ 4 $\\\\times$ 3/4\",\"L6 $\\\\times$ 4 $\\\\times$ 1/2\",\"L6 $\\\\times$ 4 $\\\\times$ 3/8\",\"L5 $\\\\times$ 3 $\\\\times$ 5/8\",\"L5 $\\\\times$ 3 $\\\\times$ 1/2\"][index]", "description": "", "templateType": "anything"}, "Ix_L": {"name": "Ix_L", "group": "MOI", "definition": "Iyy + A_L ybar_L ybar_L", "description": "", "templateType": "anything"}, "C": {"name": "C", "group": "Setup values", "definition": "vector(0,scalar(ybar_T))", "description": "

centroid of composite shape as a point for geogebra

", "templateType": "anything"}, "Iy_L": {"name": "Iy_L", "group": "MOI", "definition": "Ixx + A_L xbar_L xbar_L", "description": "", "templateType": "anything"}, "kx'": {"name": "kx'", "group": "MOI", "definition": "qty(sqrt(scalar(Ibarx'/A_T)),'in')", "description": "", "templateType": "anything"}, "ybar": {"name": "ybar", "group": "angle properties", "definition": "qty([3.31,2.52,2.47,2.95,2.86,2.51,2.46,2.42,2.37,2.12,2.08,1.99,1.94,1.8,1.75][index],'in')", "description": "", "templateType": "anything"}, "Ixx": {"name": "Ixx", "group": "angle properties", "definition": "qty([53.2,54.1,44.3,54.9,38.5,37.8,32.4,26.7,20.6,27.7,24.5,17.4,13.5,11.4,9.45][index],'in^4')", "description": "", "templateType": "anything"}, "b": {"name": "b", "group": "Setup values", "definition": "qty(random(2..4#0.5) scalar(depth),'in')", "description": "

base width of rectangle

", "templateType": "anything"}, "Iy_T": {"name": "Iy_T", "group": "MOI", "definition": "Iy_R + 2 Iy_L", "description": "", "templateType": "anything"}, "ybar_R": {"name": "ybar_R", "group": "centroid", "definition": "h/2", "description": "", "templateType": "anything"}, "A_L": {"name": "A_L", "group": "angle properties", "definition": "qty([6.25,8.36,6.75,8.44,5.75,7.69,6.48,5.25,3.98,7.98,6.94,4.75,3.61,4.61,3.75][index],'in^2')", "description": "", "templateType": "anything"}, "Qx": {"name": "Qx", "group": "centroid", "definition": "A_R ybar_R + 2 A_L ybar_L", "description": "", "templateType": "anything"}, "Iy_R": {"name": "Iy_R", "group": "MOI", "definition": "h b b b/12", "description": "", "templateType": "anything"}, "depth": {"name": "depth", "group": "angle properties", "definition": "qty([9,8,8,8,8,7,7,7,7,6,6,6,6,5,5][index],'in')", "description": "", "templateType": "anything"}, "Ix_R": {"name": "Ix_R", "group": "MOI", "definition": "b h h h/3", "description": "", "templateType": "anything"}, "ybar_L": {"name": "ybar_L", "group": "centroid", "definition": "h + xbar", "description": "", "templateType": "anything"}, "Iyy": {"name": "Iyy", "group": "angle properties", "definition": "qty([6.92,26.3,21.7,9.36,6.74,9.05,7.84,6.53,5.1,9.75,8.68,6.27,4.9,3.06,2.58][index],'in^4')", "description": "", "templateType": "anything"}, "Ix_T": {"name": "Ix_T", "group": "MOI", "definition": "Ix_R + 2 Ix_L", "description": "", "templateType": "anything"}, "xbar": {"name": "xbar", "group": "angle properties", "definition": "qty([0.81,1.52,1.47,0.953,0.859,1.01,0.963,0.917,0.87,1.12,1.08,0.987,0.941,0.796,0.75][index],'in')", "description": "", "templateType": "anything"}, "A_R": {"name": "A_R", "group": "centroid", "definition": "b h", "description": "", "templateType": "anything"}, "applet": {"name": "applet", "group": "Setup values", "definition": "geogebra_file('resources/question-resources/plate-angles.ggb',[\n 'A': A,\n 'd': scalar(depth),\n 'C':[definition: C, fixed: true]\n ]\n)", "description": "", "templateType": "anything"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": [], "variable_groups": [{"name": "angle properties", "variables": ["name", "depth", "A_L", "Ixx", "ybar", "Iyy", "xbar"]}, {"name": "centroid", "variables": ["A_R", "A_T", "ybar_R", "ybar_L", "xbar_L", "Qx", "ybar_T"]}, {"name": "MOI", "variables": ["Ix_R", "Ix_L", "Ix_T", "Iy_R", "Iy_L", "Iy_T", "Ibarx'", "kx'"]}, {"name": "Setup values", "variables": ["index", "b", "h", "A", "C", "debug", "applet"]}], "functions": {"disp": {"parameters": [["q", "quantity"]], "type": "quantity", "language": "jme", "definition": "siground(q,4)"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": false, "customName": "", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "

Find the area of the composite shape.

\n

$A_T = $ [[0]] {A_T}

\n

Find the distance between the $x$ axis at the bottom of the plate and the parallel $x'$ axis passing through the centroid of the composite shape.

\n

$\\bar{y} = $ [[1]] {ybar_T}

\n

Find the moment of inertia of the composite shape about the centroidal $y$ axis.

\n

$\\bar{I}_y = $ [[2]] {Iy_T}

\n

Find the moment of inertia of the composite shape about the $x$-axis 

\n

$I_x=$ [[3]] {Ix_T}

\n

Use the parallel axis theorem to find the moment of inertia of the composite shape about the centroidal $x'$-axis.

\n

$\\bar{I}_{x'}= $ [[4]] {Ibarx'}

\n

Find the corresponding radius of gyration

\n

$k_{x'} = $ [[5]] {kx'}

", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$A$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "A_T", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$\\bar{y}$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "ybar_T", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$\\bar{I}_y$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "Iy_T", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$\\bar{I}_x$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "Ix_T", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$\\bar{I}_{x'}$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "Ibarx'", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$k_{x'}$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "kx'", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question", "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}]}]}], "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}]}