// Numbas version: finer_feedback_settings {"name": "Chapter 10 Exercises", "metadata": {"description": "
End of chapter exercises for Engineering Statics: Open and Interactive
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "duration": 0, "percentPass": 0, "showQuestionGroupNames": true, "shuffleQuestionGroups": false, "showstudentname": true, "question_groups": [{"name": "Common Shapes", "pickingStrategy": "all-ordered", "pickQuestions": 1, "questionNames": ["Basic Shapes from the MOI Table", "Rectangles", "", "Rectangles and triangles", "Semi and quarter circles"], "variable_overrides": [[], [], [], [], []], "questions": [{"name": "Moment of Inertia: Basic Shapes from the MOI Table", "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
\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%,Use a table of properties to find the Area Moment of inertia for simple shapes: rectangle, triangle, circle, semicircle, and quarter circle.
\nThe parallel axis theorem is not required for any of these shapes. One situation requires subtracting a triangle from a rectangle however.
\nDistinguish between centroidal and non-centroidal moments of inertia.
", "licence": "Creative Commons Attribution-ShareAlike 4.0 International"}, "statement": "{geogebra_applet('ndkfbkp9',['b': b, 'h': h, 'i': index, 'Z': Z])}
\nA {shape} ({dimensions}) and its centroid are shown.
", "advice": "\nUse the information in the table below.
\n", "rulesets": {}, "variables": {"b": {"name": "b", "group": "inputs", "definition": "random(-8..8 except 0)", "description": "horizontal dimension of rectangles and triangles
", "templateType": "anything"}, "h": {"name": "h", "group": "inputs", "definition": "random(-8..8 except 0)", "description": "vertical dimension of rectangles and triangles
", "templateType": "anything"}, "r": {"name": "r", "group": "inputs", "definition": "b", "description": "radius of circle or semicircles.
", "templateType": "anything"}, "index": {"name": "index", "group": "inputs", "definition": "random(1..14)", "description": "selects the shape -- see resources for diagram
", "templateType": "anything"}, "shape": {"name": "shape", "group": "Description", "definition": "if(index=1,'circle',if(index<=4,'rectangle',if(index <=10,'triangle',if(index<=12,'semicircle','quarter-circle'))))", "description": "", "templateType": "anything"}, "dimensions": {"name": "dimensions", "group": "Description", "definition": "if(isCircular,\n \"$r = \\\\var{abs(b units) }$\",\n \"$\\\\var{abs(b units)} \\\\times \\\\var{abs(h units)}$\"\n) ", "description": "", "templateType": "anything"}, "isCircular": {"name": "isCircular", "group": "Description", "definition": "index = 1 or index > 10", "description": "", "templateType": "anything"}, "units": {"name": "units", "group": "inputs", "definition": "qty(random(['in', 'ft', 'mm', 'cm','m']))", "description": "", "templateType": "anything"}, "Ix": {"name": "Ix", "group": "Solution", "definition": "siground([ 0,pir4/4, \n bh3/3, bh3/12, bh3/3, \n bh3/12, bh3/12, bh3/36, bh3/36, bh3/12,bh3/36,\n pir4/8,pir4/8,\n pir4/16,pir4/16][index],4)", "description": "0 is placeholder for zero-indexed array.
", "templateType": "anything"}, "PIR4": {"name": "PIR4", "group": "Solution", "definition": "pi r^4 * units * units * units * units", "description": "", "templateType": "anything"}, "bh3": {"name": "bh3", "group": "Solution", "definition": "abs(b h^3) * units * units * units * units", "description": "", "templateType": "anything"}, "hb3": {"name": "hb3", "group": "Solution", "definition": "abs(h b^3) * units * units * units * units", "description": "", "templateType": "anything"}, "Iy": {"name": "Iy", "group": "Solution", "definition": "siground([0, pir4/4,\n hb3/3, hb3/3, hb3/12,\n hb3/4, hb3/12, hb3/4, hb3/12, hb3/36, hb3/36,\n pir4/8,pir4/8,\n pir4/16,pir4/16][index],4)", "description": "", "templateType": "anything"}, "centroidalaxis": {"name": "centroidalaxis", "group": "Solution", "definition": "[[],both,neither, x, y, neither, neither, x, x, y, both, x, y, neither, neither][index]\n ", "description": "marking matrix for centroidal axis [x,y,both,neither]
", "templateType": "anything"}, "x": {"name": "x", "group": "Solution", "definition": "[10,0,0,0]", "description": "", "templateType": "anything"}, "y": {"name": "y", "group": "Solution", "definition": "[0,10,0,0]", "description": "", "templateType": "anything"}, "both": {"name": "both", "group": "Solution", "definition": "[0,0,10,0]", "description": "", "templateType": "anything"}, "neither": {"name": "neither", "group": "Solution", "definition": "[0,0,0,10]", "description": "", "templateType": "anything"}, "applet": {"name": "applet", "group": "Ungrouped variables", "definition": "\"applet()\"", "description": "disabled calling the javascript applet
", "templateType": "anything"}, "Z": {"name": "Z", "group": "inputs", "definition": "8", "description": "ZOOM
", "templateType": "anything"}}, "variablesTest": {"condition": "abs(b)> 2 and abs(h) > 2", "maxRuns": 100}, "ungrouped_variables": ["applet"], "variable_groups": [{"name": "inputs", "variables": ["h", "r", "b", "index", "units", "Z"]}, {"name": "Description", "variables": ["shape", "dimensions", "isCircular"]}, {"name": "Solution", "variables": ["Ix", "PIR4", "bh3", "hb3", "Iy", "centroidalaxis", "x", "y", "both", "neither"]}], "functions": {"NotUsed": {"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 filename: 'resources/question-resources/basicShapes.ggb',\n width: 250,\n height: 250\n}\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 \n function setGGBPoint(g_name, n_name = g_name) {\n // moves point in GGB to location of Numbas Vector Variable\n // g_name = geogebra point, n_name = numbas vector\n var pt = question.scope.evaluate(n_name).value\n app.setFixed(g_name,false,false);\n app.setCoords(g_name, pt[0], pt[1]);\n app.setFixed(g_name,true,true);\n }\n \n function setGGBNumber(g_name, n_name = g_name) {\n // Sets number in GGB to a Numbas Variable\n var n = question.scope.evaluate(n_name).value;\n app.setValue(g_name,n);\n }\n \n app.setValue(\"Z\",5); //zoom\n setGGBNumber(\"b\");\n setGGBNumber(\"h\");\n setGGBNumber(\"i\",\"index\")\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);"}}, "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": "Determine the moment of inertia of the {shape} with respect to the $x$ and $y$ axis.
\n$I_x$ = [[0]] $I_y$ = [[1]]
\nAre either of these values centroidal moments of inertia?
\n[[2]]
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "Ix", "marks": "20", "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": "80", "C2": "80", "C3": "60"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "Iy", "marks": "20", "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": "80", "C2": "80", "C3": "60"}}, {"type": "1_n_2", "useCustomName": true, "customName": "centroidal", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "minMarks": 0, "maxMarks": 0, "shuffleChoices": false, "displayType": "radiogroup", "displayColumns": "1", "showCellAnswerState": true, "choices": ["$I_x$", "$I_y$", "Both", "Neither"], "matrix": "centroidalaxis"}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question"}, {"name": "Moment of Inertia: rectangles", "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
\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%,Find moment of inertia wrt the x- and y- axes for a shape made up of two rectangles.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('b3fxtwx6',[['A',A],['B',B]])}
\nUse the formula below for the moment of inertia of a rectangle about an axis passing through its base to find the moment of inertia of the composite shape about both the x- and y- axes. Grid units are [{unit}]. \\[I = \\dfrac{b h^3}{3}\\]
", "advice": "To find $I_x$ consider the shape to be made of a $ (\\var{b_1} \\times \\var{h_1})$ rectangle and a $(\\var{b_2} \\times \\var{h_2})$ {if(removed_x,'removed','')} rectangle.
\n$ \\quad I_x = \\dfrac{ (\\var{b_1}) (\\var{h_1})^3}{3} \\, \\var{if(removed_x, '–' , '+')} \\,\\dfrac{ (\\var{b_2}) (\\var{h_2})^3}{3} = \\var{siground(ix units, 4)} \\\\$
\nTo find $I_y$ consider the shape to be made of a $ (\\var{b_3} \\times \\var{h_3})$ rectangle and a $(\\var{b_4} \\times \\var{h_4})$ {if(removed_y,'removed','')} rectangle.
\n$\\quad I_y = \\dfrac{ (\\var{b_3}) (\\var{h_3})^3}{3} \\, \\var{if(removed_y, '–' , '+')} \\,\\dfrac{ (\\var{b_4}) (\\var{h_4})^3}{3}= \\var{siground(Iy units,4)}$
", "rulesets": {}, "variables": {"Iy": {"name": "Iy", "group": "Unnamed group", "definition": "MOI(b_3,h_3) + if(removed_y,-1,1) MOI(b_4,h_4)", "description": "", "templateType": "anything"}, "removed_x": {"name": "removed_x", "group": "Unnamed group", "definition": "not(add)", "description": "remove
", "templateType": "anything"}, "add": {"name": "add", "group": "Ungrouped variables", "definition": "random(true,false)", "description": "", "templateType": "anything"}, "h_2": {"name": "h_2", "group": "Unnamed group", "definition": "B[1]", "description": "", "templateType": "anything"}, "b_4": {"name": "b_4", "group": "Unnamed group", "definition": "abs(b[1]-A[1])", "description": "", "templateType": "anything"}, "removed_y": {"name": "removed_y", "group": "Unnamed group", "definition": "add and (B[1]>A[1])", "description": "", "templateType": "anything"}, "h_4": {"name": "h_4", "group": "Unnamed group", "definition": "A[0]", "description": "", "templateType": "anything"}, "A": {"name": "A", "group": "Ungrouped variables", "definition": "vector(random(1..10),random(1..10))", "description": "", "templateType": "anything"}, "h_1": {"name": "h_1", "group": "Unnamed group", "definition": "A[1]", "description": "", "templateType": "anything"}, "unit": {"name": "unit", "group": "Ungrouped variables", "definition": "random('in', 'cm', 'ft', 'm')", "description": "", "templateType": "anything"}, "Ix": {"name": "Ix", "group": "Unnamed group", "definition": "MOI(b_1,h_1) + if(removed_x,-1,1) MOI(b_2,h_2)", "description": "", "templateType": "anything"}, "b_3": {"name": "b_3", "group": "Unnamed group", "definition": "B[1]", "description": "", "templateType": "anything"}, "units": {"name": "units", "group": "Ungrouped variables", "definition": "qty(1,unit+'^4')", "description": "", "templateType": "anything"}, "b_1": {"name": "b_1", "group": "Unnamed group", "definition": "A[0]", "description": "", "templateType": "anything"}, "h_3": {"name": "h_3", "group": "Unnamed group", "definition": "B[0]", "description": "", "templateType": "anything"}, "B": {"name": "B", "group": "Ungrouped variables", "definition": "vector(random(1..10),random(1..10))", "description": "", "templateType": "anything"}, "b_2": {"name": "b_2", "group": "Unnamed group", "definition": "abs(B[0]-A[0])", "description": "", "templateType": "anything"}}, "variablesTest": {"condition": "if(add, B[0]>A[0], B[0] B[1]", "maxRuns": 100}, "ungrouped_variables": ["A", "B", "add", "unit", "units"], "variable_groups": [{"name": "Unnamed group", "variables": ["b_1", "h_1", "b_2", "h_2", "b_3", "h_3", "b_4", "h_4", "Ix", "removed_x", "removed_y", "Iy"]}], "functions": {"MOI": {"parameters": [["b", "number"], ["h", "number"]], "type": "number", "language": "jme", "definition": "b * h * h * h /3"}}, "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": "$I_x$ = [[0]] $\\qquad I_y = $ [[1]]
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$I_x$", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "Ix units", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "$I_y$", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "Iy units", "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"}, {"name": "Parallel Axis Theorem: common shapes", "extensions": ["geogebra"], "custom_part_types": [], "resources": [["question-resources/MOI_table.pdf", "/srv/numbas/media/question-resources/MOI_table.pdf"], ["question-resources/MOI_table.png", "/srv/numbas/media/question-resources/MOI_table.png"]], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}], "tags": ["Mechanics", "mechanics", "moment of inertia", "parallel axis theorem", "second moment of area", "Statics", "statics"], "metadata": {"description": "Write expressions for the moment of inertia of simple shapes about various axes.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('j25dzmbq', [[\"A\",A],[\"shape\",index +1],[\"axis\",axis],[\"reference\",ref]])}
\nWrite an expression for the moment of inertia with respect to the {if(axis=1,\"centroidal \",\"\")}x axis for the {shape} with {description}.
", "advice": "Some cases are found in the table below. For others use the parallel axis theorem.
\n\\[I = \\bar{I} + A d^2\\]
\nwhere:
\n$\\bar{I}$ is the centroidal moment of inertia, i.e., the moment of inertia of the shape with respect to an axis which is parallel to the desired axis and passes throught the shape's centroid.
\n$A$ is the area of the shape.
\n$d$ is the distance between the desired axis and the parallel centroidal axis.
\n\n\n\n\n\n", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"distances": {"name": "distances", "group": "Ungrouped variables", "definition": "let(d,string(down),u,string(up),[[\"0\",\"0\",\"0\",\"0\"],\n [d,d,d,d],\n [u,u,u,u],\n [\"0\",\"c\",\"c+(\"+d+\")\",\"c-(\"+u+\")\"],\n [\"0\",\"c\",\"c-\"+d,\"c+\"+u]])", "description": "", "templateType": "anything", "can_override": false}, "names": {"name": "names", "group": "Ungrouped variables", "definition": "[\"rectangle\",\"triangle\",\"circle\",\"semicircle\",\"quarter circle\"]", "description": "", "templateType": "anything", "can_override": false}, "ref": {"name": "ref", "group": "Ungrouped variables", "definition": "if(axis>3,random(1..3),0)", "description": "The reference axis, needed for axis 4 and 5.
\n1 centroid
\n2 bottom of shape
\n3 top of shape
", "templateType": "anything", "can_override": false}, "shape": {"name": "shape", "group": "parts", "definition": "names[index]", "description": "", "templateType": "anything", "can_override": false}, "index": {"name": "index", "group": "Ungrouped variables", "definition": "random(0..4)", "description": "rectangle, triangle, circle, semicircle, quarter circle
", "templateType": "anything", "can_override": false}, "area": {"name": "area", "group": "parts", "definition": "expression(areas[index])", "description": "", "templateType": "anything", "can_override": false}, "areas": {"name": "areas", "group": "Ungrouped variables", "definition": "[\"b*h\", \"b h / 2\", \"pi r^2\", \"pi r^2 /2\" , \"pi r^2 /4\"]", "description": "", "templateType": "anything", "can_override": false}, "maximums": {"name": "maximums", "group": "Ungrouped variables", "definition": "[\"h/2\",\n if(quadrant<2,\"2 h/3\",\"h/3\")\n ,\"r\",\n if(quadrant=0,\"(r-(4 r)/(3 pi))\",if(quadrant=2,\"(4 r)/(3 pi)\",\"r\")),\n if(quadrant<=1,\"(r-(4 r)/(3 pi))\", \"(4 r)/(3 pi)\")]", "description": "Distance from centroid to the top of the shape.
\n\nmaximums = {abs(y(A) / 2), Max(2 / 3 y(A), (-y(A)) / 3), radius, If(quadrant \u225f 0, radius - ybar, quadrant \u225f 1, radius, quadrant \u225f 2, ybar, quadrant \u225f 3, radius), If(quadrant ≤ 1, radius - ybar, ybar)}
", "templateType": "anything", "can_override": false}, "quadrant": {"name": "quadrant", "group": "parts", "definition": "if(A[0]>0 and A[1]>0,0,\n if(A[0]<0 and A[1] > 0, 1,\n if(A[0]<0 and A[1]<0,2,3)))", "description": "Calculates which quadrant point A is in. Needed to determine orientation of the triangle, semi and quarter circles.
", "templateType": "anything", "can_override": false}, "even_quadrant": {"name": "even_quadrant", "group": "Ungrouped variables", "definition": "mod(quadrant,2)=0 ", "description": "usefull utility
", "templateType": "anything", "can_override": false}, "Ibars": {"name": "Ibars", "group": "Ungrouped variables", "definition": "[\"b*h^3/12\",\n \"b*h^3/36\", \n \"pi r^4/4\", \n if(even_quadrant,\"0.1098 r^4\",\"pi r^4/8\"),\n \"0.0549 r^4\"]", "description": "", "templateType": "anything", "can_override": false}, "minimums": {"name": "minimums", "group": "Ungrouped variables", "definition": "[\"h/2\",\n if(quadrant<2,\"h/3\",\"2 h/3\")\n ,\"r\",\n if(quadrant=0,\"(4 r)/(3 pi)\",if(quadrant=2,\"r-(4 r)/(3 pi)\",\"r\")),\n if(quadrant<=1,\"(4 r)/(3 pi)\", \"r-(4 r)/(3 pi)\")]", "description": "distance from centroid to bottom of the shape
", "templateType": "anything", "can_override": false}, "Ibar": {"name": "Ibar", "group": "parts", "definition": "expression(Ibars[index])", "description": "", "templateType": "anything", "can_override": false}, "axis": {"name": "axis", "group": "Ungrouped variables", "definition": "random(1..5)", "description": "1 through centroid
\n2 bottom of shape
\n3 top of shape
\n4 below shape
\n5 above shape
", "templateType": "anything", "can_override": false}, "down": {"name": "down", "group": "parts", "definition": "expression(minimums[index])", "description": "distance from centroid to bottom of shape
", "templateType": "anything", "can_override": false}, "up": {"name": "up", "group": "parts", "definition": "expression(maximums[index])", "description": "", "templateType": "anything", "can_override": false}, "d": {"name": "d", "group": "parts", "definition": "expression(distances[axis-1][ref])", "description": "", "templateType": "anything", "can_override": false}, "description": {"name": "description", "group": "parts", "definition": "if(index<2,\"base b and height h\", \"radius r\")", "description": "", "templateType": "anything", "can_override": false}, "Ix": {"name": "Ix", "group": "parts", "definition": "(string(Ibar) + \"+ \" + string(area) + \"*(\"+ string(d) + \")^2\")", "description": "", "templateType": "anything", "can_override": false}, "A": {"name": "A", "group": "Ungrouped variables", "definition": "vector(random([2,3],[3,2],[-3,2],[-2,3])) random(-1,1)\n", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["A", "index", "axis", "ref", "names", "areas", "Ibars", "maximums", "even_quadrant", "minimums", "distances"], "variable_groups": [{"name": "parts", "variables": ["shape", "area", "description", "Ibar", "up", "quadrant", "down", "d", "Ix"]}], "functions": {}, "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": "$\\var{if(axis=1,latex(\"\\\\bar\\{I\\}_x\"), latex(\"I_x\"))}= $ [[0]]
\nNote: If your answer produces an error message, try putting an asterisk before parentheses, like so: b h * (h/2)^2
\\[I_x=\\simplify{{expression(Ix)}}\\]
\n", "gaps": [{"type": "jme", "useCustomName": true, "customName": "MOI", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "answer": "{expression(Ix)}", "showPreview": true, "checkingType": "absdiff", "checkingAccuracy": 0.001, "failureRate": 1, "vsetRangePoints": 5, "vsetRange": [0, 1], "checkVariableNames": true, "singleLetterVariables": true, "allowUnknownFunctions": false, "implicitFunctionComposition": false, "caseSensitive": false, "valuegenerators": []}], "sortAnswers": false}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always", "type": "question"}, {"name": "Parallel Axis Theorem: rectangles and triangles", "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
\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%,Use the parallel axis theorem to find the area moment of inertia of a triangle and a rectangle about various axes.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('qqws9ffu', [['R1',R1],['R2',R2],['T1',T1],['T2',T2]])}
\nDetermine the moment of inertia of the rectangle and the triangle about the axes specified using the parallel axis theorem when necessary. 1 grid square = 1 {units}.
", "advice": "For the x-axis
\nRectangle:
\n$b = \\var{R_b} \\qquad h = \\var{R_h} \\qquad A = b \\cdot h = \\var{R_area}$
\n$\\bar{I}_x = \\frac{1}{12}b h^3 = \\var{display(R_Ibarx')}$
\n$I_x = \\bar{I}_x + A d^2$ where $d$ is the distance from the x-axis to the centroid of the rectangle: $d =\\var{qty(abs(R_c[1]),units)}$
\n$I_x = \\var{display(R_ibarx')} + (\\var{R_area}) (\\var{qty(abs(R_c[1]),units)})^2 = \\var{display(R_Ix)}$
\nTriangle:
\n$b = \\var{T_b} \\qquad h = \\var{T_h} \\qquad A = b \\cdot h/2 = \\var{T_area}$
\n$\\bar{I}_x = \\frac{1}{36}b h^3 = \\var{display(T_Ibarx')}$
\n$I_x = \\bar{I}_x + A d^2$ where $d$ is the distance from the x-axis to the centroid of the triangle: $d =\\var{qty(abs(T_c[1]),units)}$
\n$I_x = \\var{display(T_ibarx')} + (\\var{T_area}) (\\var{qty(abs(T_c[1]),units)})^2 = \\var{display(T_Ix)}$
\nFor the y-axis
\nFollow a similar procedure to find the moments of inertia with respect to the y-axis.
\nRectangle: $I_y = \\bar{I}_y + A d^2 = \\var{display(R_ibary')} + (\\var{R_area}) (\\var{qty(abs(R_c[0]),units)})^2 = \\var{display(R_Iy)}$
\nTriangle: $I_y = \\bar{I}_y + A d^2 = \\var{display(T_ibary')} + (\\var{T_area}) (\\var{qty(abs(T_c[0]),units)})^2 = \\var{display(T_Iy)}$
", "rulesets": {}, "variables": {"T_b": {"name": "T_b", "group": "derived ", "definition": "qty(abs(T1[0]-T2[0]),units)", "description": "", "templateType": "anything"}, "T_h": {"name": "T_h", "group": "derived ", "definition": "qty(abs(T1[1]-T2[1]) ,units)", "description": "", "templateType": "anything"}, "R2": {"name": "R2", "group": "inputs", "definition": "R1 + random(-1,1) vector(random(3..8),random(3..8))\n", "description": "", "templateType": "anything"}, "R_c": {"name": "R_c", "group": "derived ", "definition": "R1 + (R2-R1)/2", "description": "centroid
", "templateType": "anything"}, "R_xbar": {"name": "R_xbar", "group": "answers", "definition": "qty(R_c[0], units)\n", "description": "", "templateType": "anything"}, "R_Ibarx'": {"name": "R_Ibarx'", "group": "answers", "definition": "r_b r_h r_h r_h/12", "description": "", "templateType": "anything"}, "T1": {"name": "T1", "group": "inputs", "definition": "vector(random(-10..10),random(-10..10))", "description": "", "templateType": "anything"}, "R_area": {"name": "R_area", "group": "answers", "definition": "R_b R_h", "description": "", "templateType": "anything"}, "debug": {"name": "debug", "group": "inputs", "definition": "false", "description": "", "templateType": "anything"}, "units": {"name": "units", "group": "inputs", "definition": "'in'", "description": "", "templateType": "anything"}, "T_Ix": {"name": "T_Ix", "group": "answers", "definition": "T_ibarx' + T_area T_ybar T_ybar", "description": "", "templateType": "anything"}, "R_b": {"name": "R_b", "group": "derived ", "definition": "qty(abs(R1[0]-R2[0]) ,units)", "description": "", "templateType": "anything"}, "T_Ibarx'": {"name": "T_Ibarx'", "group": "answers", "definition": "t_b t_h t_h t_h/36", "description": "", "templateType": "anything"}, "T2": {"name": "T2", "group": "inputs", "definition": "T1 + random(-1,1) vector(random(3,6,9),random(3,6,9))\n\n", "description": "", "templateType": "anything"}, "R_Ibary'": {"name": "R_Ibary'", "group": "answers", "definition": "r_h r_b r_b r_b/12", "description": "", "templateType": "anything"}, "T_Ibary'": {"name": "T_Ibary'", "group": "answers", "definition": "t_h t_b t_b t_b/36", "description": "s
", "templateType": "anything"}, "R1": {"name": "R1", "group": "inputs", "definition": "vector(random(-10..10),random(-10..10))", "description": "", "templateType": "anything"}, "R_Iy": {"name": "R_Iy", "group": "answers", "definition": "R_ibary' + R_area R_xbar R_xbar", "description": "", "templateType": "anything"}, "R_ybar": {"name": "R_ybar", "group": "answers", "definition": "qty(R_c[1], units) ", "description": "", "templateType": "anything"}, "T_c": {"name": "T_c", "group": "derived ", "definition": "T1 + (T2-T1)/3", "description": "", "templateType": "anything"}, "T_xbar": {"name": "T_xbar", "group": "answers", "definition": "qty(T_c[0], units) ", "description": "", "templateType": "anything"}, "T_area": {"name": "T_area", "group": "answers", "definition": "T_b T_h / 2\n", "description": "", "templateType": "anything"}, "T_Iy": {"name": "T_Iy", "group": "answers", "definition": "T_ibary' + T_area T_xbar T_xbar", "description": "", "templateType": "anything"}, "R_Ix": {"name": "R_Ix", "group": "answers", "definition": "R_ibarx' + R_area R_ybar R_ybar", "description": "", "templateType": "anything"}, "T_ybar": {"name": "T_ybar", "group": "answers", "definition": "qty(T_c[1], units) ", "description": "", "templateType": "anything"}, "version": {"name": "version", "group": "inputs", "definition": "random('x','y')", "description": "v
", "templateType": "anything"}, "R_h": {"name": "R_h", "group": "derived ", "definition": "qty(abs(R1[1]-R2[1]) ,units)", "description": "", "templateType": "anything"}}, "variablesTest": {"condition": "not some(map(d=0,d,[R_c[0],R_c[1],T_c[0],T_c[1]]))\n// this prevents a centroid from landing on either axis", "maxRuns": 100}, "ungrouped_variables": [], "variable_groups": [{"name": "inputs", "variables": ["R1", "R2", "T1", "T2", "units", "version", "debug"]}, {"name": "derived ", "variables": ["R_b", "R_h", "T_b", "T_h", "R_c", "T_c"]}, {"name": "answers", "variables": ["R_area", "T_area", "R_xbar", "R_ybar", "T_xbar", "T_ybar", "R_Ibarx'", "R_Ibary'", "T_Ibary'", "T_Ibarx'", "R_Ix", "R_Iy", "T_Ix", "T_Iy"]}], "functions": {"display": {"parameters": [["q", "quantity"]], "type": "quantity", "language": "jme", "definition": "string(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 and centroidal coordinates of the rectangle.
\n$A$ = [[0]] $\\bar{x}$ = [[1]] $\\bar{y}$ = [[2]]
\n$A = \\var{R_area} \\qquad \\bar{x} = \\var{R_xbar} \\qquad \\bar{y} = \\var{R_ybar}$
\n", "gaps": [{"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "2", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "R_area", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "2", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "R_xbar", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "2", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "R_ybar", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"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 centroidal moments of inertia for the rectangle:
\n$\\bar{I}_{x'} = $ [[0]] $\\qquad \\bar{I}_{y'} =$ [[1]]
\n{display(R_ibarx')} {display(R_ibary')}
\n", "gaps": [{"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "3", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "R_ibarx'", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "3", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "R_ibary'", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"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": "Apply the parallel axis theorem:
\n$I = \\bar{I} + A d^2 $
\nto find the moments of inertia with respect to the x- and y- axes for the rectangle .
\n$I_x =$ [[0]] $\\qquad I_y =$ [[1]]
\n{display(R_iy)} {display(R_ix)}
", "gaps": [{"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "4", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "R_Ix", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "4", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "R_Iy", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"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": "Use a similar process to find the moment of inertia of the triangle with respect to the {version}-axis.
\n$I_\\var{version}$ = [[0]] {display(if(version='x',T_Ix,T_Iy))}
\n", "gaps": [{"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "if(version='x',T_Ix,T_Iy)", "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"}, {"name": "Parallel Axis Theorem: semi and quarter circles", "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
\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%,Find the moment of inertia of semi and quarter circles using the parallel axis theorem.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('emjtbcxv',ggb_points)}
\nDetermine the moment of inertia and radius of gyration about the {axis}-axis for the {lower(names[pts[0]])} and the {lower(names[pts[1]])} .
\nGrid units are [{units}].
\n\naxis | \nradius | \narea | \nibar | \nd | \nI | \nCentroid | \n
x | \n{r[\"A\"]} | \n{area[\"A\"]} | \n{ibarx[\"A\"]} | \n{d[\"x\"][\"A\"]} | \n{Ix[\"A\"]} | \n{siground(Centroid[\"A\"],3)} | \n
y | \n{r[\"A\"]} | \n{area[\"A\"]} | \n{ibary[\"A\"]} | \n{d[\"y\"][\"A\"]} | \n{Iy[\"A\"]} | \n\n |
axis | \nradius | \narea | \nibar | \nd | \nI | \nCentroid | \n
x | \n{r[\"B\"]} | \n{area[\"B\"]} | \n{ibarx[\"B\"]} | \n{d[\"x\"][\"B\"]} | \n{Ix[\"B\"]} | \n{siground(Centroid[\"B\"],3)} | \n
y | \n{r[\"B\"]} | \n{area[\"B\"]} | \n{ibary[\"B\"]} | \n{d[\"y\"][\"B\"]} | \n{Iy[\"B\"]} | \n\n |
axis | \nradius | \narea | \nibar | \nd | \nI | \nCentroid | \n
x | \n{r[\"C\"]} | \n{area[\"C\"]} | \n{ibarx[\"C\"]} | \n{d[\"x\"][\"C\"]} | \n{Ix[\"C\"]} | \n{siground(Centroid[\"C\"],3)} | \n
y | \n{r[\"C\"]} | \n{area[\"C\"]} | \n{ibary[\"C\"]} | \n{d[\"y\"][\"C\"]} | \n{Iy[\"C\"]} | \n\n |
For the circle:
\n$r = \\var{q(r[\"A\"],units)} \\qquad A = \\pi r^2 = \\var{q(area[\"A\"],units+'^2')}$
\n$\\bar{x} =\\var{q(centroid[\"A\"][0],units)} \\qquad \\bar{y} = \\var{q(centroid[\"A\"][1],units)}$
\nPlace a {if(axis=\"x\", \"horizontal\", \"vertical\" )} axis through the centroid of the {names[\"A\"]}. The centroidal moment of inertia with respect to this axis is:
\n$\\bar{I} = \\dfrac{\\pi r^4}{4} = \\var{q(Ibar[axis][\"A\"],units+'^4')}$
\nand the distance between the parallel axes is:
\n$d = \\var{q(abs(d[axis][\"A\"]),units)}$
\nApplying the parallel axis theorem and the definition of radius of gyration:
\n$I_{\\var{axis}} = \\bar{I} + A d^2 = \\var{q(I'[axis][\"A\"],units+'^4')}$
\n$k_{\\var{axis}} = \\sqrt{\\dfrac{I_{\\var{axis}}}{A}} = \\var{q(k[axis][\"A\"],units)}$
\n\nFor the semi-circle:
\n$r = \\var{q(r[\"B\"],units)} \\qquad A = \\dfrac{\\pi r^2}{2} = \\var{q(area[\"B\"],units+'^2')}$
\n$\\bar{x} = \\var{latex( offset(0,centers[\"B\"], radii[\"B\"]))} \\var{q(centroid[\"B\"][0],units)} \\qquad \\bar{y} = \\var{latex( offset(1,centers[\"B\"], radii[\"B\"]))} \\var{q(centroid[\"B\"][1],units)}$
\nPlace a {if(axis=\"x\", \"horizontal\", \"vertical\" )} axis through the centroid of the {names[\"B\"]}. The centroidal moment of inertia with respect to this axis is:
\n$\\bar{I} =\\var{ if(orientation=axis,latex(\"0.1098 r^4\"),latex(\"\\\\dfrac\\{\\\\pi r^4\\}\\{8\\}\")) }= \\var{q(Ibar[axis][\"B\"],units+'^4')}$
\nand the distance between the parallel axes is:
\n$d = \\var{q(abs(d[axis][\"B\"]),units)}$
\nApplying the parallel axis theorem and the definition of radius of gyration:
\n$I_{\\var{axis}} = \\bar{I} + A d^2 = \\var{q(I'[axis][\"B\"],units+'^4')}$
\n$k_{\\var{axis}} = \\sqrt{\\dfrac{I_{\\var{axis}}}{A}} = \\var{q(k[axis][\"B\"],units)}$
\n\nFor the quarter-circle:
\n$r = \\var{q(r[\"C\"],units)} \\qquad A = \\dfrac{\\pi r^2}{4} = \\var{q(area[\"C\"],units+'^2')}$
\n$\\bar{x} = \\var{latex( offset(0,centers[\"C\"], radii[\"C\"]))} \\var{q(centroid[\"C\"][0],units)} \\qquad \\bar{y} =\\var{latex( offset(1,centers[\"C\"], radii[\"C\"]))} \\var{q(centroid[\"C\"][1],units)}$
\nPlace a {if(axis=\"x\", \"horizontal\", \"vertical\" )} axis through the centroid of the {names[\"C\"]}. The centroidal moment of inertia with respect to this axis is:
\n$\\bar{I} = 0.0549 r^4= \\var{q(Ibar[axis][\"C\"],units+'^4')}$
\nand the distance between the parallel axes is:
\n$d = \\var{q(abs(d[axis][\"C\"]),units)}$
\nApplying the parallel axis theorem and the definition of radius of gyration:
\n$I_{\\var{axis}} = \\bar{I} + A d^2 = \\var{q(I'[axis][\"C\"],units+'^4')}$
\n$k_{\\var{axis}} = \\sqrt{\\dfrac{I_{\\var{axis}}}{A}} = \\var{q(k[axis][\"C\"],units)}$
\nrandomly located center points for the shapes
", "templateType": "anything", "can_override": false}, "k0": {"name": "k0", "group": "Unnamed group", "definition": "qty(k[axis][pts[0]],units)", "description": "", "templateType": "anything", "can_override": false}, "radii": {"name": "radii", "group": "Ungrouped variables", "definition": "[\"A\":centers[\"A\"] + random(1..5) * vector(0,1), \"B\":centers[\"B\"] + random(1..5) * vector(random([1,0],[-1,0],[0,-1],[0,1])), \"C\":centers[\"C\"] + random(1..5) / sqrt(2) * vector(random([1,1],[-1,1],[-1,-1],[-1,1]))]", "description": "This is a point which defines the radius. The centroid is on a line passing through center and this point.
\nThe actual radius is the distance between center and radii.
\n", "templateType": "anything", "can_override": false}, "names": {"name": "names", "group": "Ungrouped variables", "definition": "[\"A\":\"Circle\",\"B\":\"Semi-circle\",\"C\":\"Quarter-circle\"]\n", "description": "the names of the shapes
", "templateType": "anything", "can_override": false}, "centroid": {"name": "centroid", "group": "calculated", "definition": "[\"A\": centers[\"A\"], \"B\": centers[\"B\"] + 4 (radii[\"B\"] - centers[\"B\"]) /3 /pi, \"C\": centers[\"C\"] + 4 sqrt(2) (radii[\"C\"] - centers[\"C\"]) /3 /pi]", "description": "need sqrt(2) for quarter circle because of the way radii is defined
", "templateType": "anything", "can_override": false}, "axis": {"name": "axis", "group": "Ungrouped variables", "definition": "random('x','y')", "description": "random choice for question
", "templateType": "anything", "can_override": false}, "I'": {"name": "I'", "group": "calculated", "definition": "[\"x\":Ix,\"y\":Iy]", "description": "Cant call it I because I is a reserved variable
", "templateType": "anything", "can_override": false}, "k": {"name": "k", "group": "calculated", "definition": "[\"x\":kx,\"y\":ky]", "description": "", "templateType": "anything", "can_override": false}, "units": {"name": "units", "group": "Ungrouped variables", "definition": "random('in','cm','ft','mm')", "description": "", "templateType": "anything", "can_override": false}, "d": {"name": "d", "group": "calculated", "definition": "[\"x\": dict(map([p,centroid[p][1]],p,sort(pts))), \"y\": dict(map([p,centroid[p][0]],p,sort(pts)))]", "description": "d[\"x\"] gives distance from the y-axis
\nThis is the value needed for parallel axis theorem when calculating I_x
", "templateType": "anything", "can_override": false}, "Ix": {"name": "Ix", "group": "calculated", "definition": "dict(map([p,Ibarx[p] + Area[p] * \n d[\"x\"][p]^2],p,sort(pts)))", "description": "", "templateType": "anything", "can_override": false}, "orientation": {"name": "orientation", "group": "calculated", "definition": "if(centers[\"B\"][0] = radii[\"B\"][0],\"x\",\"y\")", "description": "This determines which axis the semicircle's diameter is parallel to.
", "templateType": "anything", "can_override": false}, "debug": {"name": "debug", "group": "Ungrouped variables", "definition": "false", "description": "", "templateType": "anything", "can_override": false}, "pts": {"name": "pts", "group": "Ungrouped variables", "definition": "shuffle([\"A\",\"B\",\"C\"])", "description": "this is where the randomizing of the shapes occurs.
", "templateType": "anything", "can_override": false}, "ggb_points": {"name": "ggb_points", "group": "Ungrouped variables", "definition": "map([p,centers[p]],p,pts) +\nmap(['R'+p,radii[p]],p,pts)[0..2]+\nmap(['R'+p,centers[p]],p,pts)[2..3]", "description": "The problem is about two shapes randomly selected, which are the first two values in the pts array.
\nThe first map is the center coordinates for all three shapes.
\nthe second map is the random radii for the first two shapes,
\nThe last map sets the radius of the third shapes to its center, which hides it in GGB.
\n\nmap([p,centers[p]],p,pts) +
map(['R'+p,radii[p]],p,pts)[0..2]+
map(['R'+p,centers[p]],p,pts)[2..3]
the radii of the three shapes
", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["pts", "axis", "ggb_points", "names", "centers", "radii", "units", "debug"], "variable_groups": [{"name": "calculated", "variables": ["r", "area", "centroid", "Ibarx", "Iy", "Ibary", "Ix", "ky", "kx", "Ibar", "k", "I'", "d", "orientation"]}, {"name": "Unnamed group", "variables": ["I0", "I1", "k0", "k1"]}], "functions": {"": {"parameters": [], "type": "number", "language": "jme", "definition": ""}, "q": {"parameters": [["q", "number"], ["u", "string"]], "type": "string", "language": "jme", "definition": "siground(qty(q,u),4)"}, "offset": {"parameters": [["way", "number"], ["c", "vector"], ["d", "vector"]], "type": "string", "language": "jme", "definition": "let(dir,sign(d[way]-c[way]),r,siground(abs(c-d),3),\n if(dir=0,'', c[way] + \"\\\\textrm{ \" + units + \"\\} \" + if(dir=1,\"+\",\"-\") + \n\"\\\\dfrac\\{4r\\}\\{3\\\\pi\\} =\"))"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": true, "customName": "{names[pts[0]]}", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "$I_\\var{axis}$ = [[0]] $k_\\var{axis}$ = [[1]]
\n{siground(I0,4)} {siground(k0,4)}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "I", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "I0", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "k", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "k0", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "{names[pts[1]]}", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "$I_\\var{axis}$ = [[0]] $k_\\var{axis}$ = [[1]]
\n{siground(I1,4)} {siground(k1,4)}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "I", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "I1", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "k", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": false, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "k1", "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"}]}, {"name": "Composite Shape", "pickingStrategy": "all-ordered", "pickQuestions": 1, "questionNames": ["Triangle and rectangles", "Composite shape: U or T", "Semicircle and hole", "", "Box beam"], "variable_overrides": [[], [], [], [], []], "questions": [{"name": "Moment of inertia of composite shape - triangle and rectangles", "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
\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%,Find moment of inertia of a composite shape consisting of a rectangle and two triangles with respect to the x-axis. Shapes rest on the x-axis so the parallel axis theorem is not required.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('wsef7939',[['A',A],['B',B],['C',C]])}
\nConsider the composite shape shown. Grid units are [{units}].
\nDetermine the total area of the shape, and its Moment of Inertia and Radius of Gyration with respect to the x-axis.
\n", "advice": "Consider the shape to be made of three parts.
\nArea:
\n$A_1 = b_1 h_1 = \\var{A1}$
\n$A_2 = \\frac{1}{2} b_2 h_2= \\var{A2}$
\n$A_3 = \\frac{1}{2} b_3 h_3= \\var{A3}$ {if(removed,'Removed','')}
\n$A = \\Sigma A_i = \\var{A_t}$
\nMoment of inertia wrt x-axis:
\n$\\begin{align}I_x &= \\Sigma I_x \\\\ &= \\frac{b_1 h_1^3}{3} + \\frac{b_2 h_2^3 }{12} + \\var{if(removed,'–','')} \\frac{b_3 h_3^3}{12}\\\\&= (\\var{siground(I1x,4)}) + (\\var{siground(I2x,4)}) + (\\var{if(removed,'–','')}\\var{ siground(I3x,4)})\\\\&= \\var{siground(I_t,4)}\\end{align}$
\nRadius of gyration wrt x-axis:
\n$k_x = \\sqrt{\\dfrac{I_x}{A}} = \\var{siground(kx,4)}$
", "rulesets": {}, "variables": {"A_t": {"name": "A_t", "group": "derived geometry", "definition": "A1+ A2 + if(removed,-1,1) A3", "description": "", "templateType": "anything"}, "A2": {"name": "A2", "group": "derived geometry", "definition": "B2 H2 /2", "description": "", "templateType": "anything"}, "h2": {"name": "h2", "group": "derived geometry", "definition": "qty(B[1],units)", "description": "part 2 left triangle
", "templateType": "anything"}, "expression": {"name": "expression", "group": "derived geometry", "definition": "random([\n \"\\\\frac\\{1\\}\\{2\\}\",\n \"\\\\sin(x)\",\n \"2 + \\\\hat\\{x\\}\"\n])", "description": "", "templateType": "anything"}, "b2": {"name": "b2", "group": "derived geometry", "definition": "qty(abs(C[0]),units)\n", "description": "base of left triangle x(c) is always < 0
", "templateType": "anything"}, "A3": {"name": "A3", "group": "derived geometry", "definition": "B3 h3/2", "description": "", "templateType": "anything"}, "units": {"name": "units", "group": "inputs", "definition": "random('in','ft','mm','cm','m')", "description": "", "templateType": "anything"}, "I3x": {"name": "I3x", "group": "answers", "definition": "(b3 * h3 * h3 * h3)/12", "description": "", "templateType": "anything"}, "C": {"name": "C", "group": "inputs", "definition": "vector(random(-9..-1),0)", "description": "this point determines the triangle to the left of the y axis
", "templateType": "anything"}, "debug": {"name": "debug", "group": "inputs", "definition": "false", "description": "", "templateType": "anything"}, "A": {"name": "A", "group": "inputs", "definition": "vector(random(C[0]..10 except B[0] ),random(1..B[1]))", "description": "This points sets the coordinates of the second triangle, at (x,0) and (x(b),y)
", "templateType": "anything"}, "I1x": {"name": "I1x", "group": "answers", "definition": "b1 * h1 * h1 * h1/3", "description": "", "templateType": "anything"}, "b1": {"name": "b1", "group": "derived geometry", "definition": "qty(B[0],units)", "description": "base of rectangle 1
", "templateType": "anything"}, "I_t": {"name": "I_t", "group": "answers", "definition": "I1x + I2x + if(removed,-1,1) I3x", "description": "total moment of inertia wrt x axis
", "templateType": "anything"}, "B": {"name": "B", "group": "inputs", "definition": "vector(random(1..8),random(1..9))", "description": "top right corner of the rectangle
", "templateType": "anything"}, "kx": {"name": "kx", "group": "answers", "definition": "qty(sqrt(scalar(I_t/A_t)),units)", "description": "", "templateType": "anything"}, "h3": {"name": "h3", "group": "derived geometry", "definition": "qty(A[1],units)", "description": "", "templateType": "anything"}, "h1": {"name": "h1", "group": "derived geometry", "definition": "qty(B[1],units)", "description": "height of rectangle 1
\n", "templateType": "anything"}, "axis": {"name": "axis", "group": "inputs", "definition": "random('x','y')", "description": "", "templateType": "anything"}, "I2x": {"name": "I2x", "group": "answers", "definition": "(b2 * h2 * h2 * h2)/12\n", "description": "", "templateType": "anything"}, "A1": {"name": "A1", "group": "derived geometry", "definition": "B1 H1", "description": "area of rectangle 1
", "templateType": "anything"}, "removed": {"name": "removed", "group": "derived geometry", "definition": "if(A[0]\n$A$ = [[0]] {A_t}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "Area", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "abs(A_t)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "Moment of Inertia", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "\n$I_x =$ [[0]] {siground(I_t,4)}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$I_x$", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "I_t", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "Radius of gyration", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "$k_x =$ [[0]] {siground(kx,4)}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$k_x$", "marks": "10", "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"}, {"name": "Moment of inertia of a composite shape: U or T", "extensions": ["geogebra", "quantities", "weh"], "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
\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 the moment of inertia of a composite shape consiting of two rectangles about the x or y-axis. Parallel axis theorem is often required.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "A composite shape is drawn to scale below. Grid units are [{units}].
\n{geogebra_applet('ez5xyd5w',[['A',A],['B',B]])}
\nDimensions:
\nRectangle 1: $b_1 = \\var{b1} \\qquad h_1 = \\var{h1}$
\nRectangle 2: $b_2 = \\var{b2}\\qquad h_2 = \\var{h2}$ {if(B[1]<A[1],'Removed','')}
\nArea:
\n$A_1 = b_1 h_1 = \\var{A1}$
\n$A_2 = b_2 h_2 = \\var{A2}$ {if(B[1]<A[1],'Removed','')}
\n$A_t = A_1 + A_2 = \\var{A1} + \\var{if(B[1]<A[1],'–','')} \\var{A2} = \\var{A_t}$
\nFor the x-axis:
\n$I_{1x} = \\frac{1}{3}b_1 h_1^3 = \\var{siground(I1x,4)}$
\n$I_{2x} = \\bar{I} + A d^2 = \\frac{1}{12} (\\var{B2}) (\\var{H2})^3 +(\\var{A2}) (\\var{dx})^2 = \\var{siground(I2x,4)} $ {if(B[1]<A[1],'Removed','')}
\n$I_x = I_{1x} + I_{2x} = \\var{siground(I1x,4)} + \\var{if(B[1]<A[1],'–','')} \\var{siground(I2x,4)} = \\var{siground(I_tx,4)}$
\n$k_x = \\sqrt{\\frac{I_x}{A}} = \\var{siground(kx,4)}$
\nFor the centroidal y'-axis:
\n$I_{1y'} = \\frac{1}{12}h_1 b_1^3 = \\var{siground(I1y,4)}$
\n$I_{2y'} = \\frac{1}{12}h_2 b_2^3 = \\var{siground(I2y,4)} $ {if(B[1]<A[1],'Removed','')}
\n$\\bar{I}_{y'} = I_{1y'} + I_{2y'} = \\var{siground(I1y,4)} + \\var{if(B[1]<A[1],'–','')} \\var{siground(I2y,4)} = \\var{siground(Ibar_y',4)}$
\nFor the y-axis, using the parallel axis theorem:
\n$I_y = \\bar{I}_{y'}+ A d^2 = \\var{siground(Ibar_y',4)} + (\\var{A_t}) (\\var{dy})^2 = \\var{siground(I_ty,4)}$
\n$k_y = \\sqrt{\\frac{I_y}{A}} = \\var{siground(ky,4)}$
\nDimensions:
\n$b_1 = \\var{b1} \\qquad h_1 = \\var{h1}\\\\b_2 = \\var{b2}\\qquad h_2 = \\var{h2}$
\nArea:
\n$A_1 = b_1 h_1 = \\var{A1}$
\n$A_2 = b_2 h_2 = \\var{A2}$ {if(B[1]<A[1],'Removed','')}
\n$A_t = A_1 + A_2 = \\var{A1} + \\var{if(B[1]<A[1],'–','')} \\var{A2} = \\var{A_t}$
\nFor the x-axis:
\n$I_{1x} = \\frac{1}{3}b_1 h_1^3 = \\var{siground(I1x,4)}$
\n$I_{2x} = \\bar{I} + A d^2 = \\frac{1}{12} (\\var{B2}) (\\var{H2})^3 +(\\var{A2}) (\\var{dx})^2 = \\var{siground(I2x,4)} $ {if(B[1]<A[1],'Removed','')}
\n$I_x = I_{1x} + I_{2x} = \\var{siground(I1x,4)} + \\var{if(B[1]<A[1],'–','')} \\var{siground(I2x,4)} = \\var{siground(I_tx,4)}$
\n$k_x = \\sqrt{\\frac{I_x}{A}} = \\var{siground(kx,4)}$
\nFor the centroidal y'-axis:
\n$I_{1y'} = \\frac{1}{12}h_1 b_1^3 = \\var{siground(I1y,4)}$
\n$I_{2y'} = \\frac{1}{12}h_2 b_2^3 = \\var{siground(I2y,4)} $ {if(B[1]<A[1],'Removed','')}
\n$\\bar{I}_{y'} = I_{1y'} + I_{2y'} = \\var{siground(I1y,4)} + \\var{if(B[1]<A[1],'–','')} \\var{siground(I2y,4)} = \\var{siground(Ibar_y',4)}$
\nFor the y-axis, using the parallel axis theorem:
\n$I_y = \\bar{I}_{y'}+ A d^2 = \\var{siground(Ibar_y',4)} + (\\var{A_t}) (\\var{dy})^2 = \\var{siground(I_ty,4)}$
\n$k_y = \\sqrt{\\frac{I_y}{A}} = \\var{siground(ky,4)}$
\nThis point is at the half width of rectangle 1
", "templateType": "anything", "can_override": false}, "b1": {"name": "b1", "group": "Ungrouped variables", "definition": "qty(2 A[0],units)", "description": "base of rectangle 1
", "templateType": "anything", "can_override": false}, "I2y": {"name": "I2y", "group": "Ungrouped variables", "definition": " h2 b2 b2 b2/12", "description": "", "templateType": "anything", "can_override": false}, "units": {"name": "units", "group": "inputs", "definition": "random('in','ft','mm','cm','m')", "description": "", "templateType": "anything", "can_override": false}, "debug": {"name": "debug", "group": "inputs", "definition": "false", "description": "", "templateType": "anything", "can_override": false}, "A_t": {"name": "A_t", "group": "Ungrouped variables", "definition": "A1+ if(B[1]>A[1],1,-1) A2", "description": "", "templateType": "anything", "can_override": false}, "b2": {"name": "b2", "group": "Ungrouped variables", "definition": "qty(2 B[0],units)\n", "description": "base of rectangle 2
", "templateType": "anything", "can_override": false}, "dy": {"name": "dy", "group": "Ungrouped variables", "definition": "qty(max(A[0],B[0]),units)", "description": "half width of shape - distance from centroid to y axis.
", "templateType": "anything", "can_override": false}, "ky": {"name": "ky", "group": "Ungrouped variables", "definition": "qty(sqrt(scalar(I_ty/A_t)),units)", "description": "", "templateType": "anything", "can_override": false}, "I_tx": {"name": "I_tx", "group": "Ungrouped variables", "definition": "I1x + if(B[1]>A[1],1,-1) I2x", "description": "total moment of inertia wrt
", "templateType": "anything", "can_override": false}, "Ibar_y'": {"name": "Ibar_y'", "group": "Ungrouped variables", "definition": "I1y + if(B[1]>A[1],1,-1) I2y", "description": "", "templateType": "anything", "can_override": false}, "h2": {"name": "h2", "group": "Ungrouped variables", "definition": "qty(abs(A[1]-B[1]),units)", "description": "height of rectangle 2
", "templateType": "anything", "can_override": false}, "I_ty": {"name": "I_ty", "group": "Ungrouped variables", "definition": "( I1y + if(B[1]>A[1],1,-1) I2y ) + A_t dy dy", "description": "I_bar_y + A d^2
", "templateType": "anything", "can_override": false}, "dx": {"name": "dx", "group": "Ungrouped variables", "definition": "qty((A[1]+B[1])/2,units)", "description": "distance to centroid of rectangle 2 for parallel axis theorem
", "templateType": "anything", "can_override": false}, "kx": {"name": "kx", "group": "Ungrouped variables", "definition": "qty(sqrt(scalar(I_tx/A_t)),units)", "description": "", "templateType": "anything", "can_override": false}, "B": {"name": "B", "group": "inputs", "definition": "vector(random(0.5..6#0.5),random(1..9))", "description": "This point is at the half width of rectangle 2.
", "templateType": "anything", "can_override": false}, "A1": {"name": "A1", "group": "Ungrouped variables", "definition": "B1 H1", "description": "area of rectangle 1
", "templateType": "anything", "can_override": false}, "I2x": {"name": "I2x", "group": "Ungrouped variables", "definition": "(b2 * h2 * h2 * h2)/12 + A2 dx dx\n", "description": "distance up to centroid of rectangle 2
", "templateType": "anything", "can_override": false}, "axis": {"name": "axis", "group": "inputs", "definition": "random('x','y')", "description": "", "templateType": "anything", "can_override": false}, "h1": {"name": "h1", "group": "Ungrouped variables", "definition": "qty(A[1],units)", "description": "height of rectangle 1
\n", "templateType": "anything", "can_override": false}, "I1x": {"name": "I1x", "group": "Ungrouped variables", "definition": "b1 * h1 * h1 * h1/3", "description": "", "templateType": "anything", "can_override": false}, "I1y": {"name": "I1y", "group": "Ungrouped variables", "definition": "(h1 b1 b1 b1)/12", "description": "", "templateType": "anything", "can_override": false}, "A2": {"name": "A2", "group": "Ungrouped variables", "definition": "B2 H2 ", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "not(B[0]>A[0] and B[1]Determine the total area of the shape.\n$A$ = [[0]] {A_t}
", "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": "abs(A_t)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "Moment of Inertia", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Determine the moment of inertia of the shape with respect to the {axis}-axis.
\n$I_\\var{axis} =$ [[0]] {siground(if(axis='x',I_tx,I_ty),4)}
\n", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$I_\\var{axis} $", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "if(axis='x',I_tx,I_ty)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "Radius of gyration", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Determine the radius of gyration of the shape with respect to the {axis}-axis.
\n$k_\\var{axis} =$ [[0]] {siground(if(axis='x',kx,ky),4)}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$k_\\var{axis}$", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "if(axis='x',kx,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", "type": "question"}, {"name": "Moment of inertia: semicircle and hole", "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
\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%,Find moment of inertia of a shape which requires the use of the parallel axis theorem for a semicircle.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('fqywxznp',{ggbArgs})}
\nDetermine the moment of inertia and radius of gyration of the composite shape with respect to the x- and y-axes knowing that $b$ = {b}, $h$ = {h}, $r_o$ = {r_o}, and $r_i$ = {display(r_i)}.
", "advice": "Number the parts:
\nPart 1 rectangle: $b$ = {b}, $h$ = {h}.
\nPart 2 semicircle: $r_o$ = {r_o}.
\nPart 3 circular hole: $r_i$ = {display(r_i)}.
\nCalculate the areas:
\n$\\begin{align} A_1 &= b h & A_2 &= \\tfrac{1}{2}\\pi r_o^2 &A_3 &= \\pi r_i^2&A&=A_1 +A_2 - A_3\\\\&=\\var{display(A1)} &&=\\var{display(A2)} &&=\\var{display(A3)}&&=\\var{display(A)}\\\\&&\\end{align}$
\nCalculate the moment of inertia with respect to the x-axis.
\n$\\begin{align} \\\\{I_1}_x &= \\tfrac{1}{3} b h^3 \\\\&= \\tfrac{1}{3}( \\var{b})(\\var{h})^3 \\\\&= \\var{display(Ix1)} \\\\\\\\{I_x}_2 &= [\\bar{I} + A d^2]_2\\\\ &= 0.1098 r_o^4 + \\left(\\frac{\\pi r_o^2}{2}\\right) \\left(h + \\frac{4 r_o}{3 \\pi}\\right)^2\\\\&= \\var{display(Ibarx2)} + (\\var{display(A2)}) (\\var{display(d2)})^2\\\\&=\\var{display(Ix2)} \\\\\\\\ {I_x}_3 &= [\\bar{I} + A d^2]_3 \\\\ &= \\frac{\\pi r_i^4}{4} + \\left(\\pi r_i^2\\right) \\left(h \\right)^2\\\\&= \\var{display(Ibarx3)} + (\\var{display(A3)}) (\\var{display(h)})^2\\\\&=\\var{display(Ix3)}\\\\\\\\I_x &= {I_x}_1+{I_x}_2-{I_x}_3\\\\&=\\var{display(Ix1)}+\\var{display(Ix2)}-\\var{display(Ix3)}\\\\&=\\var{display(Ix)}\\end{align}$
\nCalculate the moment of inertia with respect to the y-axis.
\n$\\begin{align} \\\\{I_y}_1 &= \\tfrac{1}{3} h b^3 \\\\&= \\tfrac{1}{3}( \\var{h})(\\var{b})^3 \\\\&= \\var{display(Iy1)} \\\\\\\\{I_y}_2 &= [\\bar{I} + A d^2]_2\\\\ &= \\frac{\\pi r_o^4}{8} + \\left(\\frac{\\pi r_o^2}{2}\\right) \\left(\\frac{b}{2}\\right)^2\\\\&= \\var{display(Ibary2)} + (\\var{display(A2)}) (\\var{display(b/2)})^2\\\\&=\\var{display(Iy2)} \\\\\\\\ {I_y}_3 &= [\\bar{I} + A d^2]_3 \\\\ &= \\frac{\\pi r_i^4}{4} + \\left(\\pi r_i^2\\right) \\left(\\frac{b}{2} \\right)^2\\\\&= \\var{display(Ibary3)} + (\\var{display(A3)}) (\\var{display(b/2)})^2\\\\&=\\var{display(Iy3)}\\\\\\\\I_y &= {I_y}_1+{I_y}_2-{I_y}_3\\\\&=\\var{display(Iy1)}+\\var{display(Iy2)}-\\var{display(Iy3)}\\\\&=\\var{display(Iy)}\\end{align}$
\nCalculate the radius of gyration with respect to the x- and y- axes.
\n$\\begin{align}\\\\k_x &= \\sqrt{\\dfrac{I_x}{A}}&k_y &= \\sqrt{\\dfrac{I_y}{A}}\\\\ &= \\sqrt{\\dfrac{\\var{display(Ix)}}{\\var{display(A)}}}&&= \\sqrt{\\dfrac{\\var{display(Iy)}}{\\var{display(A)}}}\\\\ &= \\var{display(kx)} &&=\\var{display(ky)} \\end{align}$
\n", "rulesets": {}, "variables": {"A3": {"name": "A3", "group": "Area", "definition": "3.14159 r_i r_i", "description": "", "templateType": "anything"}, "A2": {"name": "A2", "group": "Area", "definition": "3.14159 r_o r_o /2", "description": "", "templateType": "anything"}, "A1": {"name": "A1", "group": "Area", "definition": "b h", "description": "", "templateType": "anything"}, "r_i": {"name": "r_i", "group": "Inputs", "definition": "random(1/3, 0.5, 2/3,0.75) r_o ", "description": "", "templateType": "anything"}, "h": {"name": "h", "group": "Inputs", "definition": "qty(random(2..8),units)", "description": "", "templateType": "anything"}, "Iy": {"name": "Iy", "group": "Iy", "definition": "Iy1 + Iy2 - Iy3", "description": "", "templateType": "anything"}, "Ibary2": {"name": "Ibary2", "group": "Iy", "definition": "3.14159 r_o r_o r_o r_o /8", "description": "", "templateType": "anything"}, "Iy2": {"name": "Iy2", "group": "Iy", "definition": "Ibary2 + A2 b/2 b/2", "description": "", "templateType": "anything"}, "Ix2": {"name": "Ix2", "group": "Ix", "definition": "Ibarx2 + A2 d2 d2", "description": "", "templateType": "anything"}, "Ix1": {"name": "Ix1", "group": "Ix", "definition": "b h h h /3", "description": "rectangle
", "templateType": "anything"}, "kx": {"name": "kx", "group": "Ix", "definition": "qty(sqrt(scalar(Ix/A)),units)", "description": "", "templateType": "anything"}, "Ibary3": {"name": "Ibary3", "group": "Iy", "definition": "Ibarx3", "description": "", "templateType": "anything"}, "d2": {"name": "d2", "group": "Ix", "definition": "h + 4 r_o/3/3.14159", "description": "", "templateType": "anything"}, "b": {"name": "b", "group": "Inputs", "definition": "qty(random(4..12#2),units)", "description": "", "templateType": "anything"}, "ky": {"name": "ky", "group": "Iy", "definition": "qty(sqrt(scalar(Iy/A)),units)", "description": "", "templateType": "anything"}, "Ibarx2": {"name": "Ibarx2", "group": "Ix", "definition": "0.1098 r_o r_o r_o r_o", "description": "", "templateType": "anything"}, "Ibarx3": {"name": "Ibarx3", "group": "Ix", "definition": "3.14159 r_i r_i r_i r_i/4", "description": "", "templateType": "anything"}, "Iy3": {"name": "Iy3", "group": "Iy", "definition": "Ibary3 + A3 b/2 b/2", "description": "", "templateType": "anything"}, "ggbArgs": {"name": "ggbArgs", "group": "Inputs", "definition": "[['A',vector(scalar(b),scalar(h))],['R_o',scalar(r_o)],['R_i',scalar(r_i)]]", "description": "", "templateType": "anything"}, "A": {"name": "A", "group": "Area", "definition": "A1 + A2 - A3", "description": "", "templateType": "anything"}, "units": {"name": "units", "group": "Inputs", "definition": "random('in','cm')", "description": "", "templateType": "anything"}, "r_o": {"name": "r_o", "group": "Inputs", "definition": "qty(random(2..scalar(b)/2),units)", "description": "r
", "templateType": "anything"}, "debug": {"name": "debug", "group": "Inputs", "definition": "false", "description": "", "templateType": "anything"}, "Ix3": {"name": "Ix3", "group": "Ix", "definition": "Ibarx3 + A3 h h", "description": "", "templateType": "anything"}, "Iy1": {"name": "Iy1", "group": "Iy", "definition": "h b b b /3", "description": "", "templateType": "anything"}, "Ix": {"name": "Ix", "group": "Ix", "definition": "Ix1 + Ix2 - Ix3", "description": "", "templateType": "anything"}}, "variablesTest": {"condition": "r_i < h", "maxRuns": 100}, "ungrouped_variables": [], "variable_groups": [{"name": "Inputs", "variables": ["b", "h", "r_o", "r_i", "units", "debug", "ggbArgs"]}, {"name": "Ix", "variables": ["Ix1", "Ibarx2", "Ix2", "d2", "Ibarx3", "Ix3", "Ix", "kx"]}, {"name": "Area", "variables": ["A1", "A2", "A3", "A"]}, {"name": "Iy", "variables": ["Iy1", "Ibary2", "Iy2", "Ibary3", "Iy3", "Iy", "ky"]}], "functions": {"display": {"parameters": [["q", "quantity"]], "type": "string", "language": "jme", "definition": "string(siground(q,4))"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": true, "customName": "For the x-axis", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "$I_x$ = [[0]] $k_x$ = [[1]]
\n{display(Ix)} {display(kx)}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "I", "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", "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}, {"type": "gapfill", "useCustomName": true, "customName": "For the y axis", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "$I_y$ = [[0]] $k_y$ = [[1]]
\n{display(Iy)} {display(ky)}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "I", "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", "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", "type": "question"}, {"name": "Centroidal Moment of inertia: T shape", "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
\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%,Find the centroidal moment of inertia of a sideways T shape. This requires first locating the centroid, then applying the parallel axis theorem.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('wfhyktjn',['A':P1, 'B': P2])}
\nDetermine the moment of inertia of the T shape with respect to a vertical axis passing through the shape's centroid. Let this axis be designated $a$. Grid units are {units}.
", "advice": "\nNumber the parts:
\nPart 1 horizontal rectangle: $b_1$ = {qty(b1,units)}, $h_1$ = {qty(h1,units)}.
\nPart 2 vertical rectangle: $b_2$ = {qty(b2,units)}, $h_2$ = {qty(h2,units)}.
\n\nCalculate the areas:
\n$ A_1 = b_1 h_1=\\var{qty(A1,units+'^2')}$
\n$ A_2 = b_2 h_2 = \\var{qty(A2,units+'^2')}$
\nLocate the centroids of the parts.
\n$ \\bar{x}_1 = b_1/2 = \\var{qty(d1,units)} \\qquad \\bar{x}_2 = b_1 + b_2/2 = \\var{qty(d2,units)}$
\nLocate the centroid of the whole.
\n$\\bar{x} = \\dfrac{ A_1 \\bar{x}_1 + A_2 \\bar{x}_2} {A_1 + A_2} = \\var{qty(siground(xbar,4),units)}$
\n$\\bar{y} = \\var{qty(0, units)} $, by symmetry
\nCalculate the moment of inertia with respect to the y-axis for the parts and the whole.
\n$\\begin{align} \\\\{I_y}_1 &= \\tfrac{1}{3} h_1 b_1^3 \\\\&= \\tfrac{1}{3}( \\var{h1})(\\var{b1})^3 \\\\&= \\var{qty(display(Iy1),units+'^4')} \\\\\\\\{I_y}_2 &= [\\bar{I} + A d^2]_2\\\\ &= \\frac{1}{12} h_2 b_2^3 + A_2 d_2^2 \\\\&= \\var{display(Ibar2)} + (\\var{display(A2)}) (\\var{display(d2)})^2\\\\&=\\var{qty(display(Iy2),units+'^4')} \\\\\\\\I_y &= {I_y}_1+{I_y}_2\\\\&=\\var{display(Iy1)}+\\var{display(Iy2)}\\\\&=\\var{qty(display(Iy),units+'^4')}\\end{align}$
\nUse the parallel axis theorem $I = \\bar{I} + A d^2$ backwards to find the centroidal moment of inertia.
\n$\\begin{align} \\bar{I}_a &= I_y - A (\\bar{x})^2 \\\\&= \\var{display(Iy)} - \\var{display(A)} (\\var{display(xbar)})^2\\\\&=\\var{qty(display(I_a),units+'^4')}\\end{align}$
\n", "rulesets": {}, "variables": {"A2": {"name": "A2", "group": "Area", "definition": "b2 * h2 ", "description": "", "templateType": "anything"}, "A1": {"name": "A1", "group": "Area", "definition": "b1 h1", "description": "", "templateType": "anything"}, "Iy2": {"name": "Iy2", "group": "Iy", "definition": "h2 b2^3/12 + A2 * (b1 + b2/2)^2", "description": "", "templateType": "anything"}, "ky": {"name": "ky", "group": "Iy", "definition": "sqrt(Iy/A)", "description": "", "templateType": "anything"}, "applet": {"name": "applet", "group": "Inputs", "definition": "//geogebra_file('Tshape.ggb',['A':P1, 'B': P2])\ngeogebra_applet('wfhyktjn',['A':P1, 'B': P2])", "description": "", "templateType": "anything"}, "A": {"name": "A", "group": "Area", "definition": "A1 + A2", "description": "", "templateType": "anything"}, "units": {"name": "units", "group": "Inputs", "definition": "random('in','cm')", "description": "width of P1
", "templateType": "anything"}, "debug": {"name": "debug", "group": "Inputs", "definition": "false", "description": "true
", "templateType": "anything"}, "Iy1": {"name": "Iy1", "group": "Iy", "definition": "h1 b1^3/12 + A1 * (b1/2)^2", "description": "", "templateType": "anything"}, "P1": {"name": "P1", "group": "Inputs", "definition": "vector(random(5..12),random(1..2))", "description": "Point A in GGB
", "templateType": "anything"}, "P2": {"name": "P2", "group": "Inputs", "definition": "P1 + vector(random(1..3),random(4..6))", "description": "", "templateType": "anything"}, "b1": {"name": "b1", "group": "Inputs", "definition": "P1[0]", "description": "", "templateType": "anything"}, "h1": {"name": "h1", "group": "Inputs", "definition": "2 P1[1]", "description": "height of p1
", "templateType": "anything"}, "b2": {"name": "b2", "group": "Inputs", "definition": "p2[0]-p1[0]", "description": "width of p2
", "templateType": "anything"}, "h2": {"name": "h2", "group": "Inputs", "definition": "2 p2[1]", "description": "height of p2
", "templateType": "anything"}, "ibar1": {"name": "ibar1", "group": "check", "definition": "h1 b1^3/12", "description": "centroidal moi
", "templateType": "anything"}, "Ibar2": {"name": "Ibar2", "group": "check", "definition": "h2 b2^3/12", "description": "", "templateType": "anything"}, "d1": {"name": "d1", "group": "check", "definition": "b1/2", "description": "", "templateType": "anything"}, "d2": {"name": "d2", "group": "check", "definition": "b1 + b2/2", "description": "", "templateType": "anything"}, "Iy1'": {"name": "Iy1'", "group": "check", "definition": "ibar1 + A1 d1^2", "description": "alternate calculation of Iy
", "templateType": "anything"}, "Iy2'": {"name": "Iy2'", "group": "check", "definition": "Ibar2 + a2 d2^2", "description": "", "templateType": "anything"}, "Iy": {"name": "Iy", "group": "check", "definition": "Iy1' + Iy2'", "description": "Moment of intertia about y axis
", "templateType": "anything"}, "Qy": {"name": "Qy", "group": "check", "definition": "A1 d1 + A2 d2", "description": "", "templateType": "anything"}, "xbar": {"name": "xbar", "group": "check", "definition": "Qy/A", "description": "", "templateType": "anything"}, "I_a": {"name": "I_a", "group": "check", "definition": "Iy - A xbar^2", "description": "Centroidal moment of inertia of total shape
", "templateType": "anything"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": [], "variable_groups": [{"name": "Inputs", "variables": ["units", "debug", "applet", "P1", "P2", "b1", "h1", "b2", "h2"]}, {"name": "Area", "variables": ["A1", "A2", "A"]}, {"name": "Iy", "variables": ["Iy1", "Iy2", "ky"]}, {"name": "check", "variables": ["ibar1", "Ibar2", "d1", "d2", "Iy1'", "Iy2'", "Iy", "Qy", "xbar", "I_a"]}], "functions": {"display": {"parameters": [["q", "number"]], "type": "number", "language": "jme", "definition": "(siground(q,4))"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": true, "customName": "Centroid", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "$\\bar{x} = $ [[0]] $\\qquad \\bar{y} = $ [[1]]
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "xbar", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(xbar,units)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": true, "customName": "ybar", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(0,units)", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}], "sortAnswers": false}, {"type": "gapfill", "useCustomName": true, "customName": "For the $a$ axis", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "$\\bar{I}_a$ = [[0]] {display(I_a')}
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "$\\bar{I}_{a}$", "marks": "10", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "qty(I_a, units+'^4')", "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"}, {"name": "Centroidal moment of inertia: box beam", "extensions": ["geogebra", "quantities", "weh"], "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
\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 the centroidal moment of intertia of a rectangle with a excentric rectangular hole.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "{geogebra_applet('pv5edgwm',[[\"A\",A],[\"B\",B]])}
\nThe cross-section of a hollow box beam is shown. Grid units are [{units}].
", "advice": "Part 1: Big Rectangle:
\n$b_1$ = {b1}, $h_1$ = {h1}, $A_1$ = {A1}, $\\bar{y}_1$ = {ybar1}
\nPart 2: Small rectangle (removed):
\n$b_2$ = {b2}, $h_2$ = {h2}, $A_2$ = {A2}, $\\bar{y}_2$ = {ybar2}
\nTotal Area:
\n$A = \\Sigma A_i = A_1 - A_2 =$ {display(Area)}
\nCentroid:
\n$\\bar{y} = \\dfrac{\\Sigma A_i \\bar{y}_i}{\\Sigma A_i} = \\dfrac{A_1 \\bar{y}_1 - A_2 \\bar{y}_2}{ A_1 - A_2}$ = {display(ybar)}
\nMoments of inerta about the x axis:
\n$I_{x_1} = \\dfrac{b_1 (h_1)^3}{3} = $ {display(Ix1)}
\n$I_{x_2}= \\bar{I} + A d^2 = \\dfrac{b_2 (h_2)^3}{12} + A_2 (\\bar{y}_2)^2 = $ {display(Ix2)}
\n$I_x = I_{x_1} - I_{x_2}= $ {display(Ix)}
\nCentroidal Moment of inertia:
\nUsing the parallel axis theorem,
\n$I = \\bar{I} + A d^2 \\implies \\bar{I}_x= I_x - A (\\bar{y})^2$ = {display(Ibar)}
", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true}, "constants": [], "variables": {"Ix1": {"name": "Ix1", "group": "Unnamed group", "definition": "b1 h1 h1 h1/3", "description": "", "templateType": "anything", "can_override": false}, "b1": {"name": "b1", "group": "Unnamed group", "definition": "qty(A[0],units)", "description": "base for large rectangle
", "templateType": "anything", "can_override": false}, "A": {"name": "A", "group": "Ungrouped variables", "definition": "vector(random(4..20#2),random(8..18))", "description": "top right corner of large rectangle
", "templateType": "anything", "can_override": false}, "Area": {"name": "Area", "group": "Unnamed group", "definition": "A1-A2", "description": "", "templateType": "anything", "can_override": false}, "ybar": {"name": "ybar", "group": "Unnamed group", "definition": "(A1 ybar1 - A2 ybar2)/(A1-A2)", "description": "", "templateType": "anything", "can_override": false}, "A1": {"name": "A1", "group": "Unnamed group", "definition": "b1 h1", "description": "", "templateType": "anything", "can_override": false}, "debug": {"name": "debug", "group": "Ungrouped variables", "definition": "false", "description": "", "templateType": "anything", "can_override": false}, "Ibar": {"name": "Ibar", "group": "Unnamed group", "definition": "Ix - area ybar ybar", "description": "", "templateType": "anything", "can_override": false}, "t": {"name": "t", "group": "Ungrouped variables", "definition": "random(1..3)", "description": "thickness of sides and top
", "templateType": "anything", "can_override": false}, "Ix": {"name": "Ix", "group": "Unnamed group", "definition": "Ix1 - Ix2", "description": "", "templateType": "anything", "can_override": false}, "b2": {"name": "b2", "group": "Unnamed group", "definition": "qty(A[0] - 2 t,units)", "description": "", "templateType": "anything", "can_override": false}, "h2": {"name": "h2", "group": "Unnamed group", "definition": "qty(A[1]-t - B[1],units)", "description": "", "templateType": "anything", "can_override": false}, "ybar1": {"name": "ybar1", "group": "Unnamed group", "definition": "h1/2", "description": "", "templateType": "anything", "can_override": false}, "B": {"name": "B", "group": "Ungrouped variables", "definition": "vector(t, random(2..(A[1]-t-1)))", "description": "", "templateType": "anything", "can_override": false}, "h1": {"name": "h1", "group": "Unnamed group", "definition": "qty(A[1],units)", "description": "height of large rectangle
", "templateType": "anything", "can_override": false}, "Ix2": {"name": "Ix2", "group": "Unnamed group", "definition": "b2 h2 h2 h2 /12 + A2 ybar2 ybar2", "description": "", "templateType": "anything", "can_override": false}, "ybar2": {"name": "ybar2", "group": "Unnamed group", "definition": "qty(B[1] + scalar(h2/2),units)", "description": "", "templateType": "anything", "can_override": false}, "A2": {"name": "A2", "group": "Unnamed group", "definition": "b2 h2", "description": "", "templateType": "anything", "can_override": false}, "units": {"name": "units", "group": "Ungrouped variables", "definition": "random('in','mm','cm','ft')", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "B[0]ybar2", "maxRuns": 100}, "ungrouped_variables": ["t", "A", "B", "units", "debug"], "variable_groups": [{"name": "Unnamed group", "variables": ["b1", "h1", "b2", "h2", "A1", "A2", "ybar", "ybar1", "ybar2", "Ix1", "Ix2", "Ix", "Area", "Ibar"]}], "functions": {"display": {"parameters": [["q", "quantity"]], "type": "string", "language": "jme", "definition": "string(siground(q,5))"}}, "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": "Determine the vertical location of the centroid of the cross section.
\n$\\bar{y} = $ [[0]] {display(ybar)}
\nDetermine the moment of inertia of the shape about a horizontal ${x'}$ axis (the neutral axis) passing through the centroid.
\n${I_{x'} = }$ [[1]] {display(Ibar)}
", "gaps": [{"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "{ybar}", "right": "0.2", "close": "1.0", "C1": "75", "C2": "50", "C3": "25"}}, {"type": "engineering-answer", "useCustomName": false, "customName": "", "marks": "5", "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "settings": {"correctAnswer": "{Ibar}", "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"}]}, {"name": "Standard Sections", "pickingStrategy": "all-ordered", "pickQuestions": 1, "questionNames": ["Built-up beam with angles", "2 angles forming box beam", "2 channels and 2 plates"], "variable_overrides": [[], [], []], "questions": [{"name": "Moment of inertia: built-up beam with angles", "extensions": ["geogebra", "quantities", "weh"], "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
\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%,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]])}
\nA built-up beam is made up of two {name} angles welded to a {b} $\\times$ {h} plate, as shown in cross section below.
\n\nUse 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$.
\nFind 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}$
\nFind the angle properties
\nFrom 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}$
\nFind the centroid of the angle shapes
\nNote that the angle shape is rotated 90° from the table diagram.
\nMeasuring 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}$
\nFind the centroid of composite shape
\nMeasuring 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}$
\nFind 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}$
\nFind 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}$
\nUse 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}$
\nFind 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": {}, "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}
\nFind 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}
\nFind the moment of inertia of the composite shape about the centroidal $y$ axis.
\n$\\bar{I}_y = $ [[2]] {Iy_T}
\nFind the moment of inertia of the composite shape about the $x$-axis
\n$I_x=$ [[3]] {Ix_T}
\nUse 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'}
\nFind 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"}, {"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
\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%,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]])}
\nA built-up beam is made up of two {name} angles welded together to form a box beam.
\nUse 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}$
\nThese properties are for angle sections oriented with the long side vertical.
\nFind 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)}\\\\$
\nFind 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": {}, "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]]
\nFind 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", "type": "question"}, {"name": "Moment of inertia: 2 channels and 2 plates", "extensions": ["geogebra", "polynomials", "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
\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%,Find moment of inertia and radius of gyration for a built-up beam made of two channels and two plates.
", "licence": "Creative Commons Attribution-NonCommercial 4.0 International"}, "statement": "A built-up beam is constructed by welding two channels separated by a distance $b = \\var{b}$ to two ({w} $\\times$ {h}) plates.
\n{geogebra_applet('rgft4vzy',[\"b\":ggb(b),'bf': ggb(bf),'w': ggb(w) ,'d': ggb(d),'t': ggb(t),'h': ggb(h)])} | \n\n \n \nChannel properties: \n$\\begin{align}\\var{desc}\\\\\\text{Area}&= \\var{A_C} \\\\D &= \\var{d} \\\\b_f &= \\var{bf}\\\\\\bar{x} &= \\var{xbar}\\\\\\bar{I}_{xx} &= \\var{Ibarx_C} \\\\\\bar{I}_{yy} &= \\var{Ibary_C}\\end{align}$ \n | \n
Determine moment of inertia with respect to the x-axis
\nFor the channel, since the x-axis passes through its centroid:
\n$(I_x)_C = \\bar{I}_{xx} = \\var{Ibarx_C} $
\nFor the plate, the x-axis does not pass through its centroid so the parallel axis theorem must be used.
\n$(I_x)_R = [\\bar{I} + A d^2] $ where,
\n$\\bar{I} = \\dfrac{b h^3}{12} = \\dfrac{(\\var{w})(\\var{h})^3}{12} = \\var{siground(Ibarx_R,4)}$
\n$A = b h = (\\var{w})\\,(\\var{h}) = \\var{A_r}$
\n$d = D/2 + h/2 = \\dfrac{\\var{d}+ \\var{h}}{2} = \\var{d_y} $
\n$(I_x)_R = \\var{disp(Ix_R)}$
\nFor the composite shape,
\n$A = 2 [A_C + A_R] = \\var{disp(A_T)}$
\n$I_x = 2 [ (I_x)_C + (I_x)_R ] = \\var{disp(Ix)}$, and $k_x = \\sqrt{\\dfrac{I_x}{A}} = \\var{disp(kx)}$
\n\nDetermine moment of inertia with respect to the y-axis
\nFor the rectangle, since the y-axis passes through its centroid:
\n$(I_y)_R = \\dfrac{h b^3}{12} = \\dfrac{(\\var{h}) (\\var{w})^3}{12} = \\var{disp(Ibary_r)}$
\nFor the channel, the y-axis does not pass through its centroid so the parallel axis theorem must be used.
\n$(I_y)_C = [\\bar{I} + A d^2] $ where,
\n$\\bar{I} = \\bar{I}_{yy} = \\var{Ibary_C}$
\n$A = A_C = \\var{A_C}$
\n$d = b/2 + \\bar{x} = \\dfrac{\\var{b}}{2} + \\var{xbar}= \\var{d_x} $
\n$(I_y)_C = \\var{disp(Iy_C)}$
\nFor the composite shape,
\n$A = 2 [A_C + A_R] = \\var{disp(A_T)}$
\n$I_y = 2 [ (I_y)_C + (I_y)_R ] = \\var{disp(Iy)}$, and $k_y = \\sqrt{\\dfrac{I_y}{A}} = \\var{disp(ky)}$
\n\n", "rulesets": {}, "variables": {"xbar": {"name": "xbar", "group": "Channel Properties", "definition": "qty(C_data['x'][unit], if(unit=0,'in','mm'))", "description": "
horizontal distance to centroid from flange
", "templateType": "anything"}, "A_t": {"name": "A_t", "group": "Solution", "definition": "2(A_r+A_C)", "description": "", "templateType": "anything"}, "Ibarx_c": {"name": "Ibarx_c", "group": "Channel Properties", "definition": "C_data['Ix'][unit] * if(unit=0,qty('in^4'),qty(10^6,'mm^4'))", "description": "", "templateType": "anything"}, "ky": {"name": "ky", "group": "Solution", "definition": "sqrt(scalar(Iy/A_t)) units", "description": "", "templateType": "anything"}, "d_y": {"name": "d_y", "group": "Solution", "definition": "d/2 + h/2", "description": "", "templateType": "anything"}, "index": {"name": "index", "group": "Ungrouped variables", "definition": "random(0..length(data)-1)", "description": "random channel index
", "templateType": "anything"}, "A_r": {"name": "A_r", "group": "Solution", "definition": "w h", "description": "", "templateType": "anything"}, "C_data": {"name": "C_data", "group": "Channel Properties", "definition": "data[index]", "description": "hash of data for selected channel
", "templateType": "anything"}, "kx": {"name": "kx", "group": "Solution", "definition": "sqrt(scalar(Ix/A_t)) units", "description": "", "templateType": "anything"}, "A_C": {"name": "A_C", "group": "Channel Properties", "definition": "qty(C_data['A'][unit], if(unit=0,'in^2','mm^2'))", "description": "area of channel
", "templateType": "anything"}, "unit": {"name": "unit", "group": "Ungrouped variables", "definition": "random(0,1)", "description": "0 = inches, 1 = mm
", "templateType": "anything"}, "Iy_C": {"name": "Iy_C", "group": "Solution", "definition": "Ibary_C + A_c d_x d_x", "description": "", "templateType": "anything"}, "Ix": {"name": "Ix", "group": "Solution", "definition": "2 (Ibarx_c + Ix_r)", "description": "", "templateType": "anything"}, "bf": {"name": "bf", "group": "Channel Properties", "definition": "qty(C_data['bf'][unit], if(unit=0,'in','mm'))", "description": "flange width
", "templateType": "anything"}, "Iy": {"name": "Iy", "group": "Solution", "definition": "2 (Iy_C + Ibary_R)", "description": "", "templateType": "anything"}, "w": {"name": "w", "group": "Ungrouped variables", "definition": "round ((b/2 + bf + t ) 2 , if(unit=0,'1 in', '10 mm'))", "description": "width of plate a little longer than necessary
", "templateType": "anything"}, "t": {"name": "t", "group": "Channel Properties", "definition": "qty(C_data['tf'][unit], if(unit=0,'in','mm'))", "description": "", "templateType": "anything"}, "d_x": {"name": "d_x", "group": "Solution", "definition": "b/2 + xbar", "description": "", "templateType": "anything"}, "d": {"name": "d", "group": "Channel Properties", "definition": "qty(C_data['d'][unit], if(unit=0,'in','mm'))", "description": "depth of channel
", "templateType": "anything"}, "Ibary_c": {"name": "Ibary_c", "group": "Channel Properties", "definition": "C_data['Iy'][unit] * if(unit=0,qty('in^4'),qty(10^6,'mm^4'))", "description": "centroidal momentof inertia
", "templateType": "anything"}, "Desc": {"name": "Desc", "group": "Channel Properties", "definition": "C_data['DESC'][unit] ", "description": "designation
", "templateType": "anything"}, "Ix_R": {"name": "Ix_R", "group": "Solution", "definition": "Ibarx_r + A_r d_y d_y", "description": "", "templateType": "anything"}, "h": {"name": "h", "group": "Ungrouped variables", "definition": "round(random(1..3#0.1)t,if(unit=0,'0.125 in', '5 mm'))", "description": "width of plate
", "templateType": "anything"}, "Ibarx_r": {"name": "Ibarx_r", "group": "Solution", "definition": "w h h h /12", "description": "", "templateType": "anything"}, "units": {"name": "units", "group": "Channel Properties", "definition": "qty(if(unit=0,'in','mm'))", "description": "", "templateType": "anything"}, "Ibary_R": {"name": "Ibary_R", "group": "Solution", "definition": "h w w w /12", "description": "", "templateType": "anything"}, "data": {"name": "data", "group": "Channel Properties", "definition": "json_decode(safe(\"[\\n {\\n \\\"DESC\\\": [\\n \\\"C15$\\\\\\\\times$50\\\",\\n \\\"C380$\\\\\\\\times$74\\\"\\n ],\\n \\\"W\\\": [\\n 50,\\n 74\\n ],\\n \\\"A\\\": [\\n 14.7,\\n 9480\\n ],\\n \\\"d\\\": [\\n 15,\\n 381\\n ],\\n \\\"bf\\\": [\\n 3.72,\\n 94.5\\n ],\\n \\\"tw\\\": [\\n 0.716,\\n 18.2\\n ],\\n \\\"tf\\\": [\\n 0.65,\\n 16.5\\n ],\\n \\\"x\\\": [\\n 0.799,\\n 20.3\\n ],\\n \\\"Ix\\\": [\\n 404,\\n 168\\n ],\\n \\\"Iy\\\": [\\n 11,\\n 4.58\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C15$\\\\\\\\times$40\\\",\\n \\\"C380$\\\\\\\\times$60\\\"\\n ],\\n \\\"W\\\": [\\n 40,\\n 60\\n ],\\n \\\"A\\\": [\\n 11.8,\\n 7610\\n ],\\n \\\"d\\\": [\\n 15,\\n 381\\n ],\\n \\\"bf\\\": [\\n 3.52,\\n 89.4\\n ],\\n \\\"tw\\\": [\\n 0.52,\\n 13.2\\n ],\\n \\\"tf\\\": [\\n 0.65,\\n 16.5\\n ],\\n \\\"x\\\": [\\n 0.778,\\n 19.8\\n ],\\n \\\"Ix\\\": [\\n 348,\\n 145\\n ],\\n \\\"Iy\\\": [\\n 9.17,\\n 3.82\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C15$\\\\\\\\times$33.9\\\",\\n \\\"C380$\\\\\\\\times$50.4\\\"\\n ],\\n \\\"W\\\": [\\n 33.9,\\n 50.4\\n ],\\n \\\"A\\\": [\\n 10,\\n 6450\\n ],\\n \\\"d\\\": [\\n 15,\\n 381\\n ],\\n \\\"bf\\\": [\\n 3.4,\\n 86.4\\n ],\\n \\\"tw\\\": [\\n 0.4,\\n 10.2\\n ],\\n \\\"tf\\\": [\\n 0.65,\\n 16.5\\n ],\\n \\\"x\\\": [\\n 0.788,\\n 20\\n ],\\n \\\"Ix\\\": [\\n 315,\\n 131\\n ],\\n \\\"Iy\\\": [\\n 8.07,\\n 3.36\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C12$\\\\\\\\times$30\\\",\\n \\\"C310$\\\\\\\\times$45\\\"\\n ],\\n \\\"W\\\": [\\n 30,\\n 45\\n ],\\n \\\"A\\\": [\\n 8.81,\\n 5680\\n ],\\n \\\"d\\\": [\\n 12,\\n 305\\n ],\\n \\\"bf\\\": [\\n 3.17,\\n 80.5\\n ],\\n \\\"tw\\\": [\\n 0.51,\\n 13\\n ],\\n \\\"tf\\\": [\\n 0.501,\\n 12.7\\n ],\\n \\\"x\\\": [\\n 0.674,\\n 17.1\\n ],\\n \\\"Ix\\\": [\\n 162,\\n 67.4\\n ],\\n \\\"Iy\\\": [\\n 5.12,\\n 2.13\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C12$\\\\\\\\times$25\\\",\\n \\\"C310$\\\\\\\\times$37\\\"\\n ],\\n \\\"W\\\": [\\n 25,\\n 37\\n ],\\n \\\"A\\\": [\\n 7.34,\\n 4740\\n ],\\n \\\"d\\\": [\\n 12,\\n 305\\n ],\\n \\\"bf\\\": [\\n 3.05,\\n 77.5\\n ],\\n \\\"tw\\\": [\\n 0.387,\\n 9.83\\n ],\\n \\\"tf\\\": [\\n 0.501,\\n 12.7\\n ],\\n \\\"x\\\": [\\n 0.674,\\n 17.1\\n ],\\n \\\"Ix\\\": [\\n 144,\\n 59.9\\n ],\\n \\\"Iy\\\": [\\n 4.45,\\n 1.85\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C12$\\\\\\\\times$20.7\\\",\\n \\\"C310$\\\\\\\\times$30.8\\\"\\n ],\\n \\\"W\\\": [\\n 20.7,\\n 30.8\\n ],\\n \\\"A\\\": [\\n 6.08,\\n 3920\\n ],\\n \\\"d\\\": [\\n 12,\\n 305\\n ],\\n \\\"bf\\\": [\\n 2.94,\\n 74.7\\n ],\\n \\\"tw\\\": [\\n 0.282,\\n 7.16\\n ],\\n \\\"tf\\\": [\\n 0.501,\\n 12.7\\n ],\\n \\\"x\\\": [\\n 0.698,\\n 17.7\\n ],\\n \\\"Ix\\\": [\\n 129,\\n 53.7\\n ],\\n \\\"Iy\\\": [\\n 3.86,\\n 1.61\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C10$\\\\\\\\times$30\\\",\\n \\\"C250$\\\\\\\\times$45\\\"\\n ],\\n \\\"W\\\": [\\n 30,\\n 45\\n ],\\n \\\"A\\\": [\\n 8.81,\\n 5680\\n ],\\n \\\"d\\\": [\\n 10,\\n 254\\n ],\\n \\\"bf\\\": [\\n 3.03,\\n 77\\n ],\\n \\\"tw\\\": [\\n 0.673,\\n 17.1\\n ],\\n \\\"tf\\\": [\\n 0.436,\\n 11.1\\n ],\\n \\\"x\\\": [\\n 0.649,\\n 16.5\\n ],\\n \\\"Ix\\\": [\\n 103,\\n 42.9\\n ],\\n \\\"Iy\\\": [\\n 3.93,\\n 1.64\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C10$\\\\\\\\times$25\\\",\\n \\\"C250$\\\\\\\\times$37\\\"\\n ],\\n \\\"W\\\": [\\n 25,\\n 37\\n ],\\n \\\"A\\\": [\\n 7.35,\\n 4740\\n ],\\n \\\"d\\\": [\\n 10,\\n 254\\n ],\\n \\\"bf\\\": [\\n 2.89,\\n 73.4\\n ],\\n \\\"tw\\\": [\\n 0.526,\\n 13.4\\n ],\\n \\\"tf\\\": [\\n 0.436,\\n 11.1\\n ],\\n \\\"x\\\": [\\n 0.617,\\n 15.7\\n ],\\n \\\"Ix\\\": [\\n 91.1,\\n 37.9\\n ],\\n \\\"Iy\\\": [\\n 3.34,\\n 1.39\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C10$\\\\\\\\times$20\\\",\\n \\\"C250$\\\\\\\\times$30\\\"\\n ],\\n \\\"W\\\": [\\n 20,\\n 30\\n ],\\n \\\"A\\\": [\\n 5.87,\\n 3790\\n ],\\n \\\"d\\\": [\\n 10,\\n 254\\n ],\\n \\\"bf\\\": [\\n 2.74,\\n 69.6\\n ],\\n \\\"tw\\\": [\\n 0.379,\\n 9.63\\n ],\\n \\\"tf\\\": [\\n 0.436,\\n 11.1\\n ],\\n \\\"x\\\": [\\n 0.606,\\n 15.4\\n ],\\n \\\"Ix\\\": [\\n 78.9,\\n 32.8\\n ],\\n \\\"Iy\\\": [\\n 2.8,\\n 1.17\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C10$\\\\\\\\times$15.3\\\",\\n \\\"C250$\\\\\\\\times$22.8\\\"\\n ],\\n \\\"W\\\": [\\n 15.3,\\n 22.8\\n ],\\n \\\"A\\\": [\\n 4.48,\\n 2890\\n ],\\n \\\"d\\\": [\\n 10,\\n 254\\n ],\\n \\\"bf\\\": [\\n 2.6,\\n 66\\n ],\\n \\\"tw\\\": [\\n 0.24,\\n 6.1\\n ],\\n \\\"tf\\\": [\\n 0.436,\\n 11.1\\n ],\\n \\\"x\\\": [\\n 0.634,\\n 16.1\\n ],\\n \\\"Ix\\\": [\\n 67.3,\\n 28\\n ],\\n \\\"Iy\\\": [\\n 2.27,\\n 0.945\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C9$\\\\\\\\times$20\\\",\\n \\\"C230$\\\\\\\\times$30\\\"\\n ],\\n \\\"W\\\": [\\n 20,\\n 30\\n ],\\n \\\"A\\\": [\\n 5.87,\\n 3790\\n ],\\n \\\"d\\\": [\\n 9,\\n 229\\n ],\\n \\\"bf\\\": [\\n 2.65,\\n 67.3\\n ],\\n \\\"tw\\\": [\\n 0.448,\\n 11.4\\n ],\\n \\\"tf\\\": [\\n 0.413,\\n 10.5\\n ],\\n \\\"x\\\": [\\n 0.583,\\n 14.8\\n ],\\n \\\"Ix\\\": [\\n 60.9,\\n 25.3\\n ],\\n \\\"Iy\\\": [\\n 2.41,\\n 1\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C9$\\\\\\\\times$15\\\",\\n \\\"C230$\\\\\\\\times$22\\\"\\n ],\\n \\\"W\\\": [\\n 15,\\n 22\\n ],\\n \\\"A\\\": [\\n 4.4,\\n 2840\\n ],\\n \\\"d\\\": [\\n 9,\\n 229\\n ],\\n \\\"bf\\\": [\\n 2.49,\\n 63.2\\n ],\\n \\\"tw\\\": [\\n 0.285,\\n 7.24\\n ],\\n \\\"tf\\\": [\\n 0.413,\\n 10.5\\n ],\\n \\\"x\\\": [\\n 0.586,\\n 14.9\\n ],\\n \\\"Ix\\\": [\\n 51,\\n 21.2\\n ],\\n \\\"Iy\\\": [\\n 1.91,\\n 0.795\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C9$\\\\\\\\times$13.4\\\",\\n \\\"C230$\\\\\\\\times$19.9\\\"\\n ],\\n \\\"W\\\": [\\n 13.4,\\n 19.9\\n ],\\n \\\"A\\\": [\\n 3.94,\\n 2540\\n ],\\n \\\"d\\\": [\\n 9,\\n 229\\n ],\\n \\\"bf\\\": [\\n 2.43,\\n 61.7\\n ],\\n \\\"tw\\\": [\\n 0.233,\\n 5.92\\n ],\\n \\\"tf\\\": [\\n 0.413,\\n 10.5\\n ],\\n \\\"x\\\": [\\n 0.601,\\n 15.3\\n ],\\n \\\"Ix\\\": [\\n 47.8,\\n 19.9\\n ],\\n \\\"Iy\\\": [\\n 1.75,\\n 0.728\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C8$\\\\\\\\times$18.75\\\",\\n \\\"C200$\\\\\\\\times$27.9\\\"\\n ],\\n \\\"W\\\": [\\n 18.75,\\n 27.9\\n ],\\n \\\"A\\\": [\\n 5.51,\\n 3550\\n ],\\n \\\"d\\\": [\\n 8,\\n 203\\n ],\\n \\\"bf\\\": [\\n 2.53,\\n 64.3\\n ],\\n \\\"tw\\\": [\\n 0.487,\\n 12.4\\n ],\\n \\\"tf\\\": [\\n 0.39,\\n 9.91\\n ],\\n \\\"x\\\": [\\n 0.565,\\n 14.4\\n ],\\n \\\"Ix\\\": [\\n 43.9,\\n 18.3\\n ],\\n \\\"Iy\\\": [\\n 1.97,\\n 0.82\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C8$\\\\\\\\times$13.75\\\",\\n \\\"C200$\\\\\\\\times$20.5\\\"\\n ],\\n \\\"W\\\": [\\n 13.75,\\n 20.5\\n ],\\n \\\"A\\\": [\\n 4.03,\\n 2600\\n ],\\n \\\"d\\\": [\\n 8,\\n 203\\n ],\\n \\\"bf\\\": [\\n 2.34,\\n 59.4\\n ],\\n \\\"tw\\\": [\\n 0.303,\\n 7.7\\n ],\\n \\\"tf\\\": [\\n 0.39,\\n 9.91\\n ],\\n \\\"x\\\": [\\n 0.554,\\n 14.1\\n ],\\n \\\"Ix\\\": [\\n 36.1,\\n 15\\n ],\\n \\\"Iy\\\": [\\n 1.52,\\n 0.633\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C8$\\\\\\\\times$11.5\\\",\\n \\\"C200$\\\\\\\\times$17.1\\\"\\n ],\\n \\\"W\\\": [\\n 11.5,\\n 17.1\\n ],\\n \\\"A\\\": [\\n 3.37,\\n 2170\\n ],\\n \\\"d\\\": [\\n 8,\\n 203\\n ],\\n \\\"bf\\\": [\\n 2.26,\\n 57.4\\n ],\\n \\\"tw\\\": [\\n 0.22,\\n 5.59\\n ],\\n \\\"tf\\\": [\\n 0.39,\\n 9.91\\n ],\\n \\\"x\\\": [\\n 0.572,\\n 14.5\\n ],\\n \\\"Ix\\\": [\\n 32.5,\\n 13.5\\n ],\\n \\\"Iy\\\": [\\n 1.31,\\n 0.545\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C7$\\\\\\\\times$14.75\\\",\\n \\\"C180$\\\\\\\\times$22\\\"\\n ],\\n \\\"W\\\": [\\n 14.75,\\n 22\\n ],\\n \\\"A\\\": [\\n 4.33,\\n 2790\\n ],\\n \\\"d\\\": [\\n 7,\\n 178\\n ],\\n \\\"bf\\\": [\\n 2.3,\\n 58.4\\n ],\\n \\\"tw\\\": [\\n 0.419,\\n 10.6\\n ],\\n \\\"tf\\\": [\\n 0.366,\\n 9.3\\n ],\\n \\\"x\\\": [\\n 0.532,\\n 13.5\\n ],\\n \\\"Ix\\\": [\\n 27.2,\\n 11.3\\n ],\\n \\\"Iy\\\": [\\n 1.37,\\n 0.57\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C7$\\\\\\\\times$12.25\\\",\\n \\\"C180$\\\\\\\\times$18.2\\\"\\n ],\\n \\\"W\\\": [\\n 12.25,\\n 18.2\\n ],\\n \\\"A\\\": [\\n 3.59,\\n 2320\\n ],\\n \\\"d\\\": [\\n 7,\\n 178\\n ],\\n \\\"bf\\\": [\\n 2.19,\\n 55.6\\n ],\\n \\\"tw\\\": [\\n 0.314,\\n 7.98\\n ],\\n \\\"tf\\\": [\\n 0.366,\\n 9.3\\n ],\\n \\\"x\\\": [\\n 0.525,\\n 13.3\\n ],\\n \\\"Ix\\\": [\\n 24.2,\\n 10.1\\n ],\\n \\\"Iy\\\": [\\n 1.16,\\n 0.483\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C7$\\\\\\\\times$9.8\\\",\\n \\\"C180$\\\\\\\\times$14.6\\\"\\n ],\\n \\\"W\\\": [\\n 9.8,\\n 14.6\\n ],\\n \\\"A\\\": [\\n 2.87,\\n 1850\\n ],\\n \\\"d\\\": [\\n 7,\\n 178\\n ],\\n \\\"bf\\\": [\\n 2.09,\\n 53.1\\n ],\\n \\\"tw\\\": [\\n 0.21,\\n 5.33\\n ],\\n \\\"tf\\\": [\\n 0.366,\\n 9.3\\n ],\\n \\\"x\\\": [\\n 0.541,\\n 13.7\\n ],\\n \\\"Ix\\\": [\\n 21.2,\\n 8.82\\n ],\\n \\\"Iy\\\": [\\n 0.957,\\n 0.398\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C6$\\\\\\\\times$13\\\",\\n \\\"C150$\\\\\\\\times$19.3\\\"\\n ],\\n \\\"W\\\": [\\n 13,\\n 19.3\\n ],\\n \\\"A\\\": [\\n 3.82,\\n 2460\\n ],\\n \\\"d\\\": [\\n 6,\\n 152\\n ],\\n \\\"bf\\\": [\\n 2.16,\\n 54.9\\n ],\\n \\\"tw\\\": [\\n 0.437,\\n 11.1\\n ],\\n \\\"tf\\\": [\\n 0.343,\\n 8.71\\n ],\\n \\\"x\\\": [\\n 0.514,\\n 13.1\\n ],\\n \\\"Ix\\\": [\\n 17.3,\\n 7.2\\n ],\\n \\\"Iy\\\": [\\n 1.05,\\n 0.437\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C6$\\\\\\\\times$10.5\\\",\\n \\\"C150$\\\\\\\\times$15.6\\\"\\n ],\\n \\\"W\\\": [\\n 10.5,\\n 15.6\\n ],\\n \\\"A\\\": [\\n 3.07,\\n 1980\\n ],\\n \\\"d\\\": [\\n 6,\\n 152\\n ],\\n \\\"bf\\\": [\\n 2.03,\\n 51.6\\n ],\\n \\\"tw\\\": [\\n 0.314,\\n 7.98\\n ],\\n \\\"tf\\\": [\\n 0.343,\\n 8.71\\n ],\\n \\\"x\\\": [\\n 0.5,\\n 12.7\\n ],\\n \\\"Ix\\\": [\\n 15.1,\\n 6.29\\n ],\\n \\\"Iy\\\": [\\n 0.86,\\n 0.358\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C6$\\\\\\\\times$8.2\\\",\\n \\\"C150$\\\\\\\\times$12.2\\\"\\n ],\\n \\\"W\\\": [\\n 8.2,\\n 12.2\\n ],\\n \\\"A\\\": [\\n 2.39,\\n 1540\\n ],\\n \\\"d\\\": [\\n 6,\\n 152\\n ],\\n \\\"bf\\\": [\\n 1.92,\\n 48.8\\n ],\\n \\\"tw\\\": [\\n 0.2,\\n 5.08\\n ],\\n \\\"tf\\\": [\\n 0.343,\\n 8.71\\n ],\\n \\\"x\\\": [\\n 0.512,\\n 13\\n ],\\n \\\"Ix\\\": [\\n 13.1,\\n 5.45\\n ],\\n \\\"Iy\\\": [\\n 0.687,\\n 0.286\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C5$\\\\\\\\times$9\\\",\\n \\\"C130$\\\\\\\\times$13\\\"\\n ],\\n \\\"W\\\": [\\n 9,\\n 13\\n ],\\n \\\"A\\\": [\\n 2.64,\\n 1700\\n ],\\n \\\"d\\\": [\\n 5,\\n 127\\n ],\\n \\\"bf\\\": [\\n 1.89,\\n 48\\n ],\\n \\\"tw\\\": [\\n 0.325,\\n 8.26\\n ],\\n \\\"tf\\\": [\\n 0.32,\\n 8.13\\n ],\\n \\\"x\\\": [\\n 0.478,\\n 12.1\\n ],\\n \\\"Ix\\\": [\\n 8.89,\\n 3.7\\n ],\\n \\\"Iy\\\": [\\n 0.624,\\n 0.26\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C5$\\\\\\\\times$6.7\\\",\\n \\\"C130$\\\\\\\\times$10.4\\\"\\n ],\\n \\\"W\\\": [\\n 6.7,\\n 10.4\\n ],\\n \\\"A\\\": [\\n 1.97,\\n 1270\\n ],\\n \\\"d\\\": [\\n 5,\\n 127\\n ],\\n \\\"bf\\\": [\\n 1.75,\\n 44.5\\n ],\\n \\\"tw\\\": [\\n 0.19,\\n 4.83\\n ],\\n \\\"tf\\\": [\\n 0.32,\\n 8.13\\n ],\\n \\\"x\\\": [\\n 0.484,\\n 12.3\\n ],\\n \\\"Ix\\\": [\\n 7.48,\\n 3.11\\n ],\\n \\\"Iy\\\": [\\n 0.47,\\n 0.196\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C4$\\\\\\\\times$7.25\\\",\\n \\\"C100$\\\\\\\\times$10.8\\\"\\n ],\\n \\\"W\\\": [\\n 7.25,\\n 10.8\\n ],\\n \\\"A\\\": [\\n 2.13,\\n 1370\\n ],\\n \\\"d\\\": [\\n 4,\\n 102\\n ],\\n \\\"bf\\\": [\\n 1.72,\\n 43.7\\n ],\\n \\\"tw\\\": [\\n 0.321,\\n 8.15\\n ],\\n \\\"tf\\\": [\\n 0.296,\\n 7.52\\n ],\\n \\\"x\\\": [\\n 0.459,\\n 11.7\\n ],\\n \\\"Ix\\\": [\\n 4.58,\\n 1.91\\n ],\\n \\\"Iy\\\": [\\n 0.425,\\n 0.177\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C4$\\\\\\\\times$6.25\\\",\\n \\\"C100$\\\\\\\\times$9.3\\\"\\n ],\\n \\\"W\\\": [\\n 6.25,\\n 9.3\\n ],\\n \\\"A\\\": [\\n 1.84,\\n 1190\\n ],\\n \\\"d\\\": [\\n 4,\\n 102\\n ],\\n \\\"bf\\\": [\\n 1.65,\\n 41.9\\n ],\\n \\\"tw\\\": [\\n 0.247,\\n 6.27\\n ],\\n \\\"tf\\\": [\\n 0.296,\\n 7.52\\n ],\\n \\\"x\\\": [\\n 0.453,\\n 11.5\\n ],\\n \\\"Ix\\\": [\\n 4.19,\\n 1.74\\n ],\\n \\\"Iy\\\": [\\n 0.374,\\n 0.156\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C4$\\\\\\\\times$5.4\\\",\\n \\\"C100$\\\\\\\\times$8\\\"\\n ],\\n \\\"W\\\": [\\n 5.4,\\n 8\\n ],\\n \\\"A\\\": [\\n 1.58,\\n 1020\\n ],\\n \\\"d\\\": [\\n 4,\\n 102\\n ],\\n \\\"bf\\\": [\\n 1.58,\\n 40.1\\n ],\\n \\\"tw\\\": [\\n 0.184,\\n 4.67\\n ],\\n \\\"tf\\\": [\\n 0.296,\\n 7.52\\n ],\\n \\\"x\\\": [\\n 0.457,\\n 11.6\\n ],\\n \\\"Ix\\\": [\\n 3.85,\\n 1.6\\n ],\\n \\\"Iy\\\": [\\n 0.312,\\n 0.13\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C4$\\\\\\\\times$4.5\\\",\\n \\\"C100$\\\\\\\\times$6.7\\\"\\n ],\\n \\\"W\\\": [\\n 4.5,\\n 6.7\\n ],\\n \\\"A\\\": [\\n 1.34,\\n 865\\n ],\\n \\\"d\\\": [\\n 4,\\n 102\\n ],\\n \\\"bf\\\": [\\n 1.52,\\n 38.6\\n ],\\n \\\"tw\\\": [\\n 0.125,\\n 3.18\\n ],\\n \\\"tf\\\": [\\n 0.296,\\n 7.52\\n ],\\n \\\"x\\\": [\\n 0.473,\\n 12\\n ],\\n \\\"Ix\\\": [\\n 3.53,\\n 1.47\\n ],\\n \\\"Iy\\\": [\\n 0.265,\\n 0.11\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C3$\\\\\\\\times$6\\\",\\n \\\"C75$\\\\\\\\times$8.9\\\"\\n ],\\n \\\"W\\\": [\\n 6,\\n 8.9\\n ],\\n \\\"A\\\": [\\n 1.76,\\n 1140\\n ],\\n \\\"d\\\": [\\n 3,\\n 76.2\\n ],\\n \\\"bf\\\": [\\n 1.6,\\n 40.6\\n ],\\n \\\"tw\\\": [\\n 0.356,\\n 9.04\\n ],\\n \\\"tf\\\": [\\n 0.273,\\n 6.93\\n ],\\n \\\"x\\\": [\\n 0.455,\\n 11.6\\n ],\\n \\\"Ix\\\": [\\n 2.07,\\n 0.862\\n ],\\n \\\"Iy\\\": [\\n 0.3,\\n 0.125\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C3$\\\\\\\\times$5\\\",\\n \\\"C75$\\\\\\\\times$7.4\\\"\\n ],\\n \\\"W\\\": [\\n 5,\\n 7.4\\n ],\\n \\\"A\\\": [\\n 1.47,\\n 948\\n ],\\n \\\"d\\\": [\\n 3,\\n 76.2\\n ],\\n \\\"bf\\\": [\\n 1.5,\\n 38.1\\n ],\\n \\\"tw\\\": [\\n 0.258,\\n 6.55\\n ],\\n \\\"tf\\\": [\\n 0.273,\\n 6.93\\n ],\\n \\\"x\\\": [\\n 0.439,\\n 11.2\\n ],\\n \\\"Ix\\\": [\\n 1.85,\\n 0.77\\n ],\\n \\\"Iy\\\": [\\n 0.241,\\n 0.1\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C3$\\\\\\\\times$4.1\\\",\\n \\\"C75$\\\\\\\\times$6.1\\\"\\n ],\\n \\\"W\\\": [\\n 4.1,\\n 6.1\\n ],\\n \\\"A\\\": [\\n 1.2,\\n 774\\n ],\\n \\\"d\\\": [\\n 3,\\n 76.2\\n ],\\n \\\"bf\\\": [\\n 1.41,\\n 35.8\\n ],\\n \\\"tw\\\": [\\n 0.17,\\n 4.32\\n ],\\n \\\"tf\\\": [\\n 0.273,\\n 6.93\\n ],\\n \\\"x\\\": [\\n 0.437,\\n 11.1\\n ],\\n \\\"Ix\\\": [\\n 1.65,\\n 0.687\\n ],\\n \\\"Iy\\\": [\\n 0.191,\\n 0.0795\\n ]\\n },\\n {\\n \\\"DESC\\\": [\\n \\\"C3$\\\\\\\\times$3.5\\\",\\n \\\"C75$\\\\\\\\times$5.2\\\"\\n ],\\n \\\"W\\\": [\\n 3.5,\\n 5.2\\n ],\\n \\\"A\\\": [\\n 1.09,\\n 703\\n ],\\n \\\"d\\\": [\\n 3,\\n 76.2\\n ],\\n \\\"bf\\\": [\\n 1.37,\\n 34.8\\n ],\\n \\\"tw\\\": [\\n 0.132,\\n 3.35\\n ],\\n \\\"tf\\\": [\\n 0.273,\\n 6.93\\n ],\\n \\\"x\\\": [\\n 0.443,\\n 11.3\\n ],\\n \\\"Ix\\\": [\\n 1.57,\\n 0.653\\n ],\\n \\\"Iy\\\": [\\n 0.169,\\n 0.0703\\n ]\\n }\\n]\"))", "description": "AISC data for channels
", "templateType": "json"}, "b": {"name": "b", "group": "Ungrouped variables", "definition": "round( random(0.4.. 1.2) d, if(unit=0,'0.25 in', '10 mm'))", "description": "distance between channels
", "templateType": "anything"}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["unit", "index", "b", "w", "h"], "variable_groups": [{"name": "Channel Properties", "variables": ["data", "C_data", "Desc", "units", "Ibary_c", "Ibarx_c", "A_C", "xbar", "d", "bf", "t"]}, {"name": "Solution", "variables": ["Ibarx_r", "A_r", "d_y", "Ix_R", "Ix", "A_t", "kx", "Ibary_R", "d_x", "Iy_C", "Iy", "ky"]}], "functions": {"disp": {"parameters": [["q", "quantity"]], "type": "number", "language": "jme", "definition": "siground(q,4)"}, "ggb": {"parameters": [["q", "quantity"]], "type": "number", "language": "jme", "definition": "siground(scalar(q in 'in'),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": "Determine the moment of inertia and radii of gyration of the composite beam with respect to the $x$- and $y$-axes.
\n$I_x = $[[0]] $\\qquad k_x = $[[1]]
\n$I_y = $[[2]] $\\qquad k_y = $[[3]]
", "gaps": [{"type": "engineering-answer", "useCustomName": true, "customName": "Ix", "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": "kx", "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": "Iy", "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": "ky", "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", "type": "question"}]}], "allowPrinting": true, "navigation": {"allowregen": true, "reverse": true, "browse": true, "allowsteps": true, "showfrontpage": false, "showresultspage": "oncompletion", "navigatemode": "menu", "onleave": {"action": "none", "message": ""}, "preventleave": false, "startpassword": ""}, "timing": {"allowPause": true, "timeout": {"action": "none", "message": ""}, "timedwarning": {"action": "none", "message": ""}}, "feedback": {"showactualmark": true, "showtotalmark": true, "showanswerstate": true, "allowrevealanswer": true, "advicethreshold": 0, "intro": "", "end_message": "", "reviewshowscore": true, "reviewshowfeedback": true, "reviewshowexpectedanswer": true, "reviewshowadvice": true, "feedbackmessages": [], "enterreviewmodeimmediately": true, "showexpectedanswerswhen": "inreview", "showpartfeedbackmessageswhen": "always", "showactualmarkwhen": "always", "showtotalmarkwhen": "always", "showanswerstatewhen": "always", "showadvicewhen": "inreview"}, "diagnostic": {"knowledge_graph": {"topics": [], "learning_objectives": []}, "script": "diagnosys", "customScript": ""}, "type": "exam", "contributors": [{"name": "William Haynes", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2530/"}], "extensions": ["geogebra", "polynomials", "quantities", "weh"], "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
\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%,