// Numbas version: finer_feedback_settings {"name": "Stiffness Method - CA", "metadata": {"description": "", "licence": "Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International"}, "duration": 0, "percentPass": "40", "showQuestionGroupNames": false, "shuffleQuestionGroups": false, "showstudentname": true, "question_groups": [{"name": "Group", "pickingStrategy": "all-ordered", "pickQuestions": 1, "questionNames": [""], "variable_overrides": [[]], "questions": [{"name": "Stiffness Matrix - Truss - CA", "extensions": [], "custom_part_types": [], "resources": [], "navigation": {"allowregen": true, "showfrontpage": false, "preventleave": false, "typeendtoleave": false}, "contributors": [{"name": "Louise Lynch", "profile_url": "https://numbas.mathcentre.ac.uk/accounts/profile/2197/"}], "tags": [], "metadata": {"description": "", "licence": "None specified"}, "statement": "
The truss shown below has the following properties:
\nUsing this problem solve the following.
", "advice": "", "rulesets": {}, "builtin_constants": {"e": true, "pi,\u03c0": true, "i": true, "j": false}, "constants": [], "variables": {"A": {"name": "A", "group": "Ungrouped variables", "definition": "random(20..40)*10", "description": "", "templateType": "anything", "can_override": false}, "P": {"name": "P", "group": "Ungrouped variables", "definition": "random(10..47)*5", "description": "", "templateType": "anything", "can_override": false}, "X": {"name": "X", "group": "Ungrouped variables", "definition": "random(20..40)*0.1", "description": "", "templateType": "anything", "can_override": false}, "Y": {"name": "Y", "group": "Ungrouped variables", "definition": "random(50..70)*0.1", "description": "", "templateType": "anything", "can_override": false}, "YM": {"name": "YM", "group": "Ungrouped variables", "definition": "random(200..210)", "description": "", "templateType": "anything", "can_override": false}, "EAL12": {"name": "EAL12", "group": "Stiffness", "definition": "precround(YM*A/diag_L,1)", "description": "kN/m
", "templateType": "anything", "can_override": false}, "diag_L": {"name": "diag_L", "group": "Stiffness", "definition": "precround(sqrt(X^2+Y^2),3)\n", "description": "", "templateType": "anything", "can_override": false}, "EAL23": {"name": "EAL23", "group": "Stiffness", "definition": "EAL12", "description": "", "templateType": "anything", "can_override": false}, "EAL45": {"name": "EAL45", "group": "Stiffness", "definition": "EAL12", "description": "", "templateType": "anything", "can_override": false}, "EAL24": {"name": "EAL24", "group": "Stiffness", "definition": "precround(YM*A/(2*x),1)", "description": "", "templateType": "anything", "can_override": false}, "ang": {"name": "ang", "group": "Stiffness", "definition": "precround(arctan(Y/X),3)", "description": "", "templateType": "anything", "can_override": false}, "K12": {"name": "K12", "group": "Stiffness", "definition": "EAL12 *matrix(\n [cos(ang)^2, cos(ang)*sin(ang)],\n [cos(ang)*sin(ang), sin(ang)^2]\n )", "description": "", "templateType": "anything", "can_override": true}, "K23": {"name": "K23", "group": "Stiffness", "definition": "EAL23 *matrix(\n [cos(-ang)^2, cos(-ang)*sin(-ang)],\n [cos(-ang)*sin(-ang), sin(-ang)^2]\n )", "description": "", "templateType": "anything", "can_override": false}, "K34": {"name": "K34", "group": "Stiffness", "definition": "EAL34 *matrix(\n [cos(ang)^2, cos(ang)*sin(ang)],\n [cos(ang)*sin(ang), sin(ang)^2]\n )", "description": "", "templateType": "anything", "can_override": false}, "K45": {"name": "K45", "group": "Stiffness", "definition": "EAL45 *matrix(\n [cos(-ang)^2, cos(-ang)*sin(-ang)],\n [cos(-ang)*sin(-ang), sin(-ang)^2]\n )", "description": "", "templateType": "anything", "can_override": false}, "EAL34": {"name": "EAL34", "group": "Stiffness", "definition": "EAL12", "description": "", "templateType": "anything", "can_override": false}, "K24": {"name": "K24", "group": "Stiffness", "definition": "EAL24*matrix(\n [1, -1],\n [-1, 1]\n )", "description": "", "templateType": "anything", "can_override": false}, "KR": {"name": "KR", "group": "Stiffness", "definition": "matrix(\n [K12[2,2]+K23[1,1]+K24[1,1], -1],\n [-1, 1]\n )", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": ["A", "P", "X", "Y", "YM"], "variable_groups": [{"name": "Stiffness", "variables": ["diag_L", "EAL12", "EAL23", "EAL34", "EAL45", "EAL24", "ang", "K12", "K23", "K34", "K45", "K24", "KR"]}], "functions": {}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "matrix", "useCustomName": true, "customName": "(a) ", "marks": 1, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Determine the Final Restricted Matrix in kN/m
\n", "correctAnswer": "", "correctAnswerFractions": false, "numRows": "2", "numColumns": "2", "allowResize": true, "tolerance": 0, "markPerCell": false, "allowFractions": false, "minColumns": 1, "maxColumns": 0, "minRows": 1, "maxRows": 0, "prefilledCells": ""}], "partsMode": "all", "maxMarks": 0, "objectives": [], "penalties": [], "objectiveVisibility": "always", "penaltyVisibility": "always"}]}, {"name": "Group", "pickingStrategy": "all-ordered", "pickQuestions": 1, "questionNames": [""], "variable_overrides": [[]], "questions": [{"name": "Stiffness Method Frame 2", "extensions": ["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%,Using the stiffness method, for the frame shown, calculate the following.
\n\n\nrandom(25..39)*0.1
", "templateType": "anything", "can_override": false}, "Y": {"name": "Y", "group": "Provided Data", "definition": "random(33..62)*0.1", "description": "random(33..62)*0.1
", "templateType": "anything", "can_override": false}, "PL": {"name": "PL", "group": "Provided Data", "definition": "random(15..20)*5", "description": "random(15..20)*5
", "templateType": "anything", "can_override": false}, "UDL": {"name": "UDL", "group": "Provided Data", "definition": "random(3..7)*5", "description": "", "templateType": "anything", "can_override": false}, "Theta_C": {"name": "Theta_C", "group": "Answers with Units", "definition": "qty(tC,\"rad\")", "description": "", "templateType": "anything", "can_override": false}, "Theta_B": {"name": "Theta_B", "group": "Answers with Units", "definition": "qty(tB,\"rad\")", "description": "", "templateType": "anything", "can_override": false}, "tA": {"name": "tA", "group": "Displacements", "definition": "0", "description": "", "templateType": "anything", "can_override": false}, "tB": {"name": "tB", "group": "Displacements", "definition": "siground(theta_BC[0][0],4)", "description": "", "templateType": "anything", "can_override": false}, "tC": {"name": "tC", "group": "Displacements", "definition": "siground(theta_BC[1][0],4)", "description": "", "templateType": "anything", "can_override": false}, "Z": {"name": "Z", "group": "Provided Data", "definition": "random(15..29)*0.1", "description": "random(15..29)*0.1
", "templateType": "anything", "can_override": false}, "tD": {"name": "tD", "group": "Displacements", "definition": "0", "description": "", "templateType": "anything", "can_override": false}, "EI_AB": {"name": "EI_AB", "group": "Initial Calculations", "definition": "EI", "description": "", "templateType": "anything", "can_override": false}, "EI_BC": {"name": "EI_BC", "group": "Initial Calculations", "definition": "m*EI", "description": "", "templateType": "anything", "can_override": false}, "EI_CD": {"name": "EI_CD", "group": "Initial Calculations", "definition": "n*EI", "description": "", "templateType": "anything", "can_override": false}, "K33_AB": {"name": "K33_AB", "group": "Stiffnesses", "definition": "round(4*EI_AB/LAB)", "description": "", "templateType": "anything", "can_override": false}, "LAB": {"name": "LAB", "group": "Initial Calculations", "definition": "X", "description": "", "templateType": "anything", "can_override": false}, "LBC": {"name": "LBC", "group": "Initial Calculations", "definition": "Y", "description": "", "templateType": "anything", "can_override": false}, "LCD": {"name": "LCD", "group": "Initial Calculations", "definition": "X+Z", "description": "", "templateType": "anything", "can_override": false}, "K33_BC": {"name": "K33_BC", "group": "Stiffnesses", "definition": "round(4*EI_BC/LBC)", "description": "", "templateType": "anything", "can_override": false}, "K33_CD": {"name": "K33_CD", "group": "Stiffnesses", "definition": "round(4*EI_CD/LCD)", "description": "", "templateType": "anything", "can_override": false}, "K36_CD": {"name": "K36_CD", "group": "Stiffnesses", "definition": "round(2*EI_CD/LCD)", "description": "", "templateType": "anything", "can_override": false}, "K36_AB": {"name": "K36_AB", "group": "Stiffnesses", "definition": "round(2*EI_AB/LAB)", "description": "", "templateType": "anything", "can_override": false}, "K36_BC": {"name": "K36_BC", "group": "Stiffnesses", "definition": "round(2*EI_BC/LBC)", "description": "", "templateType": "anything", "can_override": false}, "K_AB": {"name": "K_AB", "group": "Stiffnesses", "definition": "matrix(\n [K33_AB, K36_AB],\n [K36_AB, K33_AB]\n )", "description": "", "templateType": "anything", "can_override": false}, "K_BC": {"name": "K_BC", "group": "Stiffnesses", "definition": "matrix(\n [K33_BC, K36_BC],\n [K36_BC, K33_BC]\n )", "description": "", "templateType": "anything", "can_override": false}, "K_CD": {"name": "K_CD", "group": "Stiffnesses", "definition": "matrix(\n [K33_CD, k36_CD],\n [K36_CD, K33_CD]\n )", "description": "", "templateType": "anything", "can_override": false}, "K_r_11": {"name": "K_r_11", "group": "Stiffnesses", "definition": " K33_AB+K33_BC", "description": "", "templateType": "anything", "can_override": false}, "K_r_12": {"name": "K_r_12", "group": "Stiffnesses", "definition": "K36_BC", "description": "", "templateType": "anything", "can_override": false}, "K_r_22": {"name": "K_r_22", "group": "Stiffnesses", "definition": "K33_BC+K33_CD+K33_CE", "description": "", "templateType": "anything", "can_override": false}, "K_r": {"name": "K_r", "group": "Stiffnesses", "definition": "matrix(\n [K_r_11, K_r_12],\n [K_r_12, K_r_22]\n )", "description": "", "templateType": "anything", "can_override": false}, "Inv_Kr": {"name": "Inv_Kr", "group": "Stiffnesses", "definition": "inv(K_r)", "description": "", "templateType": "anything", "can_override": false}, "MAB_FEM": {"name": "MAB_FEM", "group": "Initial Moments", "definition": "matrix([0],[0])", "description": "", "templateType": "anything", "can_override": false}, "MBC_FEM": {"name": "MBC_FEM", "group": "Initial Moments", "definition": "matrix([siground(PL*Z^2*(Y-Z)/LBC^2,4)],[-siground(PL*(Y-Z)^2*Z/LBC^2,4)])", "description": "", "templateType": "anything", "can_override": false}, "MCD_FEM": {"name": "MCD_FEM", "group": "Initial Moments", "definition": "matrix([siground(UDL*X^2/(12*LCD^2)*(6*LCD^2-8*X*LCD+3*X^2),4)],[-siground(UDL*X^3/(12*LCD^2)*(4*LCD-3*X),4)])", "description": "", "templateType": "anything", "can_override": false}, "MA_Nodal": {"name": "MA_Nodal", "group": "Initial Moments", "definition": "0", "description": "", "templateType": "anything", "can_override": false}, "MB_Nodal": {"name": "MB_Nodal", "group": "Initial Moments", "definition": "0", "description": "", "templateType": "anything", "can_override": false}, "MD_Nodal": {"name": "MD_Nodal", "group": "Initial Moments", "definition": "0", "description": "", "templateType": "anything", "can_override": false}, "MB": {"name": "MB", "group": "Initial Moments", "definition": "MB_Nodal-(MAB_FEM[1][0]+MBC_FEM[0][0])", "description": "", "templateType": "anything", "can_override": false}, "MC_Nodal": {"name": "MC_Nodal", "group": "Initial Moments", "definition": "0", "description": "", "templateType": "anything", "can_override": false}, "MC_": {"name": "MC_", "group": "Initial Moments", "definition": "MC_Nodal-(MBC_FEM[1][0]+MCD_FEM[0][0]+MCE_FEM[0][0])", "description": "", "templateType": "anything", "can_override": false}, "theta_BC": {"name": "theta_BC", "group": "Displacements", "definition": "Inv_Kr*M_Mat", "description": "", "templateType": "anything", "can_override": false}, "M_Mat": {"name": "M_Mat", "group": "Initial Moments", "definition": "precround(matrix([MB],[MC_]),3)", "description": "", "templateType": "anything", "can_override": false}, "MAB": {"name": "MAB", "group": "BMD", "definition": "siground(MAB_FEM+K_AB*matrix([tA],[tB]),4)", "description": "", "templateType": "anything", "can_override": false}, "MBC": {"name": "MBC", "group": "BMD", "definition": "precround(MBC_FEM+K_BC*matrix([tB],[tC]),2)", "description": "", "templateType": "anything", "can_override": false}, "MCD": {"name": "MCD", "group": "BMD", "definition": "precround(MCD_FEM +K_CD*matrix([tC],[tD]),2)", "description": "", "templateType": "anything", "can_override": false}, "MB_Check": {"name": "MB_Check", "group": "BMD", "definition": "precround(MAB[1][0]+MBC[0][0],3)", "description": "", "templateType": "anything", "can_override": false}, "MC_Check": {"name": "MC_Check", "group": "BMD", "definition": "precround(MBC[1][0]+MCD[0][0]+MCE[0][0],3)", "description": "", "templateType": "anything", "can_override": false}, "VD": {"name": "VD", "group": "Reactions", "definition": "siground((-MCD[0][0]-MCD[1][0]+UDL*X^2/2)/LCD,4)\n", "description": "", "templateType": "anything", "can_override": false}, "HD": {"name": "HD", "group": "Reactions", "definition": "-(HA+HE)", "description": "Left is neg
", "templateType": "anything", "can_override": false}, "VA": {"name": "VA", "group": "Reactions", "definition": "PL-VC_L", "description": "", "templateType": "anything", "can_override": false}, "VC_L": {"name": "VC_L", "group": "Reactions", "definition": "siground((-MBC[0][0]-MBC[1][0]+PL*(Y-Z))/LBC,5)", "description": "", "templateType": "anything", "can_override": false}, "MB_ans": {"name": "MB_ans", "group": "Answers with Units", "definition": " qty(MBC[0][0],\"kN m\")", "description": "", "templateType": "anything", "can_override": false}, "Mc_ans": {"name": "Mc_ans", "group": "Answers with Units", "definition": " qty(precround(MBC[1][0],1),\"kN m\")", "description": "", "templateType": "anything", "can_override": false}, "Mbc_mid_ans": {"name": "Mbc_mid_ans", "group": "Answers with Units", "definition": "qty(precround(MBC_P,1),\"kN m\")", "description": "", "templateType": "anything", "can_override": false}, "VE": {"name": "VE", "group": "Reactions", "definition": "VC_L+VC_R", "description": "", "templateType": "anything", "can_override": false}, "m": {"name": "m", "group": "Provided Data", "definition": "random(11..19)*0.1", "description": "random(11..19)*0.1
", "templateType": "anything", "can_override": false}, "n": {"name": "n", "group": "Provided Data", "definition": "random(20..30)*0.1", "description": "random(20..30)*0.1
", "templateType": "anything", "can_override": false}, "VC_R": {"name": "VC_R", "group": "Reactions", "definition": "siground(UDL*X-VD,4)", "description": "", "templateType": "anything", "can_override": false}, "MBC_P": {"name": "MBC_P", "group": "BMD", "definition": "precround(VA*(Y-Z)-MBC[0][0],2)", "description": "", "templateType": "anything", "can_override": false}, "MCD_UDL": {"name": "MCD_UDL", "group": "BMD", "definition": "precround(VC_R^2/UDL-MCD[0][0]-UDL*(VC_R/UDL)^2/2,2)", "description": "", "templateType": "anything", "can_override": false}, "MCD_UDL_ans": {"name": "MCD_UDL_ans", "group": "Answers with Units", "definition": "qty(MCD_UDL,\"kN m\")", "description": "", "templateType": "anything", "can_override": false}, "HA": {"name": "HA", "group": "Reactions", "definition": "siground((-MAB[0][0]-MAB[1][0])/LAB,4)", "description": "", "templateType": "anything", "can_override": false}, "HE": {"name": "HE", "group": "Reactions", "definition": "siground((-MCE[0][0]-MCE[1][0])/LCE,3)", "description": "", "templateType": "anything", "can_override": false}, "YM": {"name": "YM", "group": "Provided Data", "definition": "random(30..39)", "description": "random(30..39)
", "templateType": "anything", "can_override": false}, "SMA": {"name": "SMA", "group": "Provided Data", "definition": "random(1000..1800)*50", "description": "random(1000..1800)*50
", "templateType": "anything", "can_override": false}, "EI_CE": {"name": "EI_CE", "group": "Initial Calculations", "definition": "EI", "description": "", "templateType": "anything", "can_override": false}, "LCE": {"name": "LCE", "group": "Initial Calculations", "definition": "X", "description": "", "templateType": "anything", "can_override": false}, "K33_CE": {"name": "K33_CE", "group": "Stiffnesses", "definition": "round(4*EI_CE/LCE)", "description": "", "templateType": "anything", "can_override": false}, "K36_CE": {"name": "K36_CE", "group": "Stiffnesses", "definition": "round(2*EI_CE/LCE)", "description": "", "templateType": "anything", "can_override": false}, "K_CE": {"name": "K_CE", "group": "Stiffnesses", "definition": "matrix(\n [K33_CE, k36_CE],\n [K36_CE, K33_CE]\n )", "description": "", "templateType": "anything", "can_override": false}, "MCE_FEM": {"name": "MCE_FEM", "group": "Initial Moments", "definition": "matrix([0],[0])", "description": "", "templateType": "anything", "can_override": false}, "MCE": {"name": "MCE", "group": "BMD", "definition": "precround(MCE_FEM +K_CE*matrix([tC],[tE]),2)", "description": "", "templateType": "anything", "can_override": false}, "tE": {"name": "tE", "group": "Displacements", "definition": "0", "description": "", "templateType": "anything", "can_override": false}}, "variablesTest": {"condition": "", "maxRuns": 100}, "ungrouped_variables": [], "variable_groups": [{"name": "Provided Data", "variables": ["UDL", "PL", "X", "Y", "Z", "m", "n", "YM", "SMA"]}, {"name": "Initial Calculations", "variables": ["EI", "EI_AB", "EI_BC", "EI_CD", "EI_CE", "LAB", "LBC", "LCD", "LCE"]}, {"name": "Displacements", "variables": ["tA", "tB", "tC", "tD", "tE", "theta_BC"]}, {"name": "Stiffnesses", "variables": ["Inv_Kr", "K33_AB", "K33_BC", "K33_CD", "K33_CE", "K36_AB", "K36_BC", "K36_CD", "K36_CE", "K_AB", "K_BC", "K_CD", "K_CE", "K_r", "K_r_11", "K_r_12", "K_r_22"]}, {"name": "Initial Moments", "variables": ["MAB_FEM", "MBC_FEM", "MCD_FEM", "MCE_FEM", "M_Mat", "MB", "MC_", "MA_Nodal", "MB_Nodal", "MC_Nodal", "MD_Nodal"]}, {"name": "BMD", "variables": ["MAB", "MB_Check", "MBC", "MCD", "MCE", "MC_Check", "MBC_P", "MCD_UDL"]}, {"name": "Reactions", "variables": ["VA", "VC_L", "VC_R", "VD", "HD", "VE", "HA", "HE"]}, {"name": "Answers with Units", "variables": ["MB_ans", "Mbc_mid_ans", "Mc_ans", "MCD_UDL_ans", "Theta_B", "Theta_C"]}], "functions": {"inv": {"parameters": [["m", "matrix"]], "type": "matrix", "language": "jme", "definition": "transpose(matrix([\n [m[1][1], -m[1][0]],\n [-m[0][1], m[0][0]]\n]))/det(m)"}}, "preamble": {"js": "", "css": ""}, "parts": [{"type": "gapfill", "useCustomName": true, "customName": "(a)", "marks": 0, "scripts": {}, "customMarkingAlgorithm": "", "extendBaseMarkingAlgorithm": true, "unitTests": [], "showCorrectAnswer": true, "showFeedbackIcon": true, "variableReplacements": [], "variableReplacementStrategy": "originalfirst", "nextParts": [], "suggestGoingBack": false, "adaptiveMarkingPenalty": 0, "exploreObjective": null, "prompt": "Apply the relevant boundary conditions and determine the final restricted matrix, include units in each cell.
\nKR = | \n[[0]] | \n[[1]] | \n
[[2]] | \n[[3]] | \n
Apply the relevant boundary conditions and determine the final force matrix, used to solve for displacement, include units in each cell.
\nFR = | \n[[0]] | \n
[[1]] | \n
Calculate the unknown displacement and rotations. Enter the values in the table below.
\nWhere displacement ($\\delta_x$ or $\\delta_y$) and rotational ($\\theta$) movement is restricted at that node, enter 0.
\nNote: anticlockwise rotation should be taken as positive, and clockwise as negative.
\nRemember that units should always be included, where relevant.
\n\u200b\u200b
\nNode | \n$\\delta_x$ | \n$\\delta_y$ | \n$\\theta$ | \n
---|---|---|---|
A | \n[[0]] | \n[[1]] | \n[[2]] | \n
B | \n[[3]] | \n[[4]] | \n[[5]] | \n
C | \n[[6]] | \n[[7]] | \n[[8]] | \n
D | \n[[9]] | \n[[10]] | \n[[11]] | \n
E | \n[[12]] | \n[[13]] | \n[[14]] | \n
Using the displacements/rotations calculated in part (c). Calculate the key moments in the system.
\nNote: Anticlockwise moments should be taken as positive, and clockwise as negative.
\nRemember that units should always be included, where relevant.
\n\nNode | \nMoment | \nAddition information | \n
---|---|---|
A | \n[[0]] | \n- | \n
B | \n[[1]] | \nIn column AB | \n
B | \n[[2]] | \nIn beam BC | \n
C | \n[[3]] | \nIn beam BC | \n
C | \n[[4]] | \nIn column CE | \n
C | \n[[5]] | \nIn beam CD | \n
D | \n[[6]] | \n\n |
E | \n[[7]] | \n\n |
Member | \nPeak Mid Span Moment | \n
---|---|
BC | \n[[8]] | \n
CD | \n[[9]] | \n
Using the values calculated above. Calculate the horizontal and vertical reactions at the supports and enter values, correct to 1 decimal place, into the table below.
\nNote: Reaction up and to the right should be taken as positive, down and left as negative.
\nRemember that units should always be included, where relevant.
\n\u200b
\nSupport | \nVertical Reaction | \nHorizontal Reaction | \n
---|---|---|
A | \n[[0]] | \n[[1]] | \n
D | \n[[2]] | \n[[3]] | \n
E | \n[[4]] | \n[[5]] | \n
As per the Specification on Brightspace you are required to submit the BMD and deflected shape (review the specification for more detail).
\n
Marks for the inputs above are ONLY part of your assignment, drawings and computer model are essential elements.
As per the Specification on Brightspace you are required to submit a computer output of this problem and compare the answers between the computer and hand model (review the specification for more detail).
\n
Marks for the inputs above are ONLY part of your assignment, drawings and computer model are essential elements.
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%,