// Numbas version: exam_results_page_options {"name": "Moment of inertia: 2 angles forming box beam", "extensions": ["geogebra", "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/2boxbeams_aMoCPFM.ggb", "/srv/numbas/media/question-resources/2boxbeams_aMoCPFM.ggb"]], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "question_groups": [{"pickingStrategy": "all-ordered", "questions": [{"name": "Moment of inertia: 2 angles forming box beam", "tags": ["Mechanics", "mechanics", "moment of inertia", "radius of gyration", "standard sections", "Statics", "statics"], "metadata": {"description": "

Find centroidal moments of inertia and radius of gyration for a beam composed of  two angle sections forming a box beam.

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

{geogebra_applet('u9qngrny',[['h',h],['w',w],['t',t],['P',centroid]])}

\n

A built-up beam is made up of two {name} angles welded together to form a box beam.  

\n

Use this table of properties for the angle sections.

", "advice": "

Channel properties from table

\n

$\\begin{align}\\text{Area:}& &A&= \\var{A_L}\\\\\\text{Centroid:} & &\\bar{x} &= \\var{xbar} &  \\bar{y} &= \\var{ybar}\\\\\\text{MOI:} && \\bar{I}_{xx} &= \\var{ixx} & \\bar{I}_{yy} &= \\var{Iyy}\\end{align}$

\n

These properties are for angle sections oriented with the long side vertical.

\n

Find moment of inertia

\n

$\\bar{I}_y = 2 \\, [ \\bar{I} + A d^2]$ where,

\n

$\\bar{I} = \\var{latex(if(rotated,safe('\\\\bar{I}_{xx}'),safe('\\\\bar{I}_{yy}')))} =\\var{Ibar_y'}$

\n

$A =\\var{A_L}$, and

\n

$d = \\left(\\dfrac{w+t}{2}-\\var{latex(if(rotated,safe('\\\\bar{y}'),safe('\\\\bar{x}')))} \\right)= \\var{d_x}$, so

\n

$\\bar{I}_y = \\var{disp(Iy)}\\\\$

\n

$\\bar{I}_x = 2 \\, [ \\bar{I} + A d^2]$ where,

\n

$\\bar{I} = \\var{latex(if(rotated,safe('\\\\bar{I}_{yy}'),safe('\\\\bar{I}_{xx}')))} =\\var{Ibar_x'}$

\n

$A =\\var{A_L}$, and

\n

$d =\\left( \\dfrac{h}{2}-\\var{latex(if(rotated,safe('\\\\bar{x}'),safe('\\\\bar{y}')))}\\right) = \\var{d_y}$, so 

\n

$\\bar{I}_x = \\var{disp(Ix)}\\\\$

\n

Find Radii of gyration

\n

$k_x = \\sqrt{\\dfrac{\\bar{I}_x} {2 A}} = \\var{disp(kx)} \\qquad k_y = \\sqrt{\\dfrac{\\bar{I}_y} {2 A}} = \\var{disp(ky)}$

\n

", "rulesets": {}, "extensions": ["geogebra", "quantities"], "variables": {"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"}, "centroid": {"name": "centroid", "group": "Setup values", "definition": "if(rotated,\n vector(scalar(ybar),scalar(xbar)), \n vector(scalar(xbar),scalar(ybar)))", "description": "

true indicates long side is horizontal

", "templateType": "anything"}, "h": {"name": "h", "group": "Setup values", "definition": "dimensions[if(rotated,1,0)]", "description": "", "templateType": "anything"}, "t": {"name": "t", "group": "Setup values", "definition": "dimensions[2]", "description": "", "templateType": "anything"}, "kx": {"name": "kx", "group": "MOI", "definition": "qty(sqrt(scalar(Ix)/(2 scalar(A_L))),'in')", "description": "

k

", "templateType": "anything"}, "w": {"name": "w", "group": "Setup values", "definition": "dimensions[if(rotated,0,1)]", "description": "

w

", "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"}, "ky": {"name": "ky", "group": "MOI", "definition": "qty(sqrt(scalar(Iy)/(2 scalar(A_L))),'in')", "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"}, "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"}, "debug": {"name": "debug", "group": "Setup values", "definition": "false", "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"}, "Ix": {"name": "Ix", "group": "MOI", "definition": "2 (Ibar_x'+A_L d_y d_y)", "description": "

MOI of box around x axis

", "templateType": "anything"}, "rotated": {"name": "rotated", "group": "Setup values", "definition": " random(false,true)", "description": "", "templateType": "anything"}, "Iy": {"name": "Iy", "group": "MOI", "definition": "2(Ibar_y' + A_L d_x d_x)", "description": "

MOI of box around  y axis

", "templateType": "anything"}, "d_x": {"name": "d_x", "group": "MOI", "definition": "qty(w + t,'in')/2 - if(rotated,ybar,xbar)", "description": "

horizontal distance from centroid of angle to y axis

", "templateType": "anything"}, "Ibar_x'": {"name": "Ibar_x'", "group": "MOI", "definition": "if(rotated,Iyy,Ixx)", "description": "

centroidal MOI for angle about its centroid

", "templateType": "anything"}, "dimensions": {"name": "dimensions", "group": "angle properties", "definition": "[[9, 4, 1/2], [8, 6, 5/8], [8, 6, 1/2], [8, 4, 3/4], [8, 4, 1/2], [7, 4, 3/4], [7, 4, 5/8], [7, 4, 1/2], [7, 4, 3/8], [6, 4, 7/8], [6, 4, 3/4], [6, 4, 1/2], [6, 4, 3/8], [5, 3, 5/8], [5, 3, 1/2]][index]\n", "description": "", "templateType": "anything"}, "Ibar_y'": {"name": "Ibar_y'", "group": "MOI", "definition": "if(rotated,Ixx,Iyy)", "description": "

centroidal MOI for angle about its centroid 

", "templateType": "anything"}, "index": {"name": "index", "group": "Setup values", "definition": "random(0..14)", "description": "

i

", "templateType": "anything"}, "d_y": {"name": "d_y", "group": "MOI", "definition": "qty(h/2,'in')- if(rotated,xbar,ybar)", "description": "

vertical distance from centroid of angle to x axis

", "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"}, "applet": {"name": "applet", "group": "angle properties", "definition": "geogebra_file('resources/question-resources/2boxbeams_aMoCPFM.ggb',[['h',h],['w',w],['t',t],['P',centroid]])", "description": "", "templateType": "anything"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": [], "variable_groups": [{"name": "angle properties", "variables": ["name", "A_L", "Ixx", "Iyy", "xbar", "ybar", "dimensions", "applet"]}, {"name": "MOI", "variables": ["Ibar_y'", "Ibar_x'", "d_x", "d_y", "Ix", "Iy", "kx", "ky"]}, {"name": "Setup values", "variables": ["index", "debug", "rotated", "centroid", "h", "w", "t"]}], "functions": {"disp": {"parameters": [["q", "quantity"]], "type": "quantity", "language": "jme", "definition": "siground(q,4)"}, "applet": {"parameters": [], "type": "ggbapplet", "language": "javascript", "definition": ""}}, "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 moment of inertia and radius of gyration with respect to the x axis.

\n

$\\bar{I}_x = $[[0]] $\\quad k_x = $[[1]]

\n

Find the moment of inertial and radius of gyration with respect to the y axis.

\n

$\\bar{I}_y = $[[2]] $\\quad k_y = $[[3]]

\n

", "gaps": [{"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", "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"}}, {"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", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$k_y$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "ky", "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/"}]}]}], "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}]}