home *** CD-ROM | disk | FTP | other *** search
- /*
-
-
- M I N I - S A C O N K N O W L E D G E B A S E
-
- Version 1.1
- November 5, 1984
-
- This knowledge base is a subset of the SACON knowledge base.
- It contains just enough knowledge to run the wing-analysis
- typescript.
-
- The knowledge is organized alphabetically by expression name.
- Capitalized words are variables.
-
- This knowledge base uses the 'whenfound', 'presupposition', and
- 'cached' facilities of M.1.
-
- */
-
-
- /*
- The top level goal is "initialdata" because it is a "dummy goal"
- whose value should not be printed by show. Print-out of conclusions
- is explicit in this kb.
- */
-
-
- initialdata = [idata, consultation_over].
-
-
- /* _____________ ALPHA_GAMMA ______________________________________________ */
-
- rule-1:
- if length_width_ratio(SS) = X
- and X < 1.0
- then alpha_gamma(SS) = [0.0479, 0.0443].
-
- rule-2:
- if length_width_ratio(SS) = X
- and 1.0 =< X
- and X < 1.2
- then alpha_gamma(SS)= [0.0626, 0.0616].
-
- rule-3:
- if length_width_ratio(SS) = X
- and 1.2 =< X
- and X < 1.4
- then alpha_gamma(SS)= [0.0753, 0.077].
-
- rule-4:
- if length_width_ratio(SS) = X
- and 1.4 =< X
- and X < 1.6
- then alpha_gamma(SS)= [0.0862, 0.0906].
-
- rule-5:
- if length_width_ratio(SS) = X
- and 1.6 =< X
- and X < 1.8
- then alpha_gamma(SS)= [0.0948, 0.1017].
-
- rule-6:
- if length_width_ratio(SS) = X
- and 1.8 =< X
- and X < 2.0
- then alpha_gamma(SS)= [0.1017, 0.1106].
-
- rule-7:
- if length_width_ratio(SS) = X
- and 2.0 =< X
- and X < 3.0
- then alpha_gamma(SS)= [0.1189, 0.1336].
-
- rule-8:
- if length_width_ratio(SS) = X
- and 3.0 =< X
- and X < 4.0
- then alpha_gamma(SS)= [0.1235, 0.14].
-
- rule-9:
- if length_width_ratio(SS) = X
- and 4.0 =< X
- then alpha_gamma(SS)= [0.125, 0.1422].
-
-
- /* _____________ ALUMINUM ___________________________________________ */
-
- fact-1: aluminum(high-strength-aluminum).
- fact-2: aluminum(upgraded-aluminum).
- fact-3: aluminum(structural-aluminum).
- fact-4: aluminum(concrete) = no.
- fact-5: aluminum(high-strength-concrete) = no.
-
-
- /* _____________ ANALYSIS_CLASS _____________________________________ */
-
- multivalued(analysis_class(STRUCTURE)).
-
- rule-10:
- if nonlinearity(STRUCTURE) is unknown and
- not(any_nonlinearsupport(STRUCTURE))
- then analysis_class(STRUCTURE) = linear_analysis.
-
- rule-11:
- if any_nonlinearsupport(STRUCTURE)
- then analysis_class(STRUCTURE) = nonlinear_boundary_condition.
-
- rule-12:
- if nonlinearity(STRUCTURE) = material and
- deflection(STRUCTURE) is unknown and
- listof(stress(STRUCTURE)) = [cracking_potential]
- then analysis_class(STRUCTURE) = inelastic_crack_growth.
- rule-13:
- if nonlinearity(STRUCTURE) = material and
- stress(STRUCTURE) is known and
- deflection(STRUCTURE) is known
- then analysis_class(STRUCTURE) = general_inelastic.
-
-
- /* _________________ ANALYSIS_RECS ________________________________________ */
-
- multivalued(analysis_recs(STRUCTURE)).
-
- rule-14:
- if listof(nonlinearity(STRUCTURE)) = [material]
- then analysis_recs(STRUCTURE) = [nl,
- 'Activate incremental stress-incremental strain analysis.',nl, nl,
- 'Model nonlinear stress-strain relations of the material.', nl, nl,
- 'Solution will be based on a mix of gradient and Newton methods.'].
-
- rule-15:
-
- if not(nonlinearity(STRUCTURE) is unique)
- then analysis_recs(STRUCTURE) = [nl,
- 'Use large displacement formulation for stress and strain.',nl,nl,
- 'Consider whether forces retain orientation to structure',nl,
- ' or a fixed direction in space.',nl,nl,
- 'Solution will be based on a modified Newton-Raphson approach.',nl,
- ' Perform incremental stress and incremental strain analyses.',nl,nl,
- 'Model nonlinear stress-strain relation of the material.'].
-
- rule-16:
- if stress(STRUCTURE) = fatigue
- then analysis_recs(STRUCTURE) = [nl,
- 'Special code should be written to scan peak stress at each step,',nl,
- ' and evaluate fatigue.', nl,nl,
- 'A single cycle of loading is sufficient for fatigue estimates.'].
-
- rule-17:
- if stress(STRUCTURE) = stress_exceedence
- then analysis_recs(STRUCTURE) = [nl,
- 'Special code should be written to scan stresses, smooth stresses,',nl,
- ' and compare with allowable stresses (with appropriate safety factors).'].
-
- rule-18: if deflection(STRUCTURE) = excessive_deflection
- then analysis_recs(STRUCTURE) = [nl,
- 'Special code should be written to scan deflections, calculate',nl,
- ' relative values, and compare with engineering code limits.'].
-
- rule-19:
- if deflection(STRUCTURE) = kinematic_collapse
- then analysis_recs(STRUCTURE) = [nl,
- 'Special code should be written to evaluate kinematic collapse mode',nl,
- ' when stiffness degenerates to zero.'].
-
- rule-20:
- if deflection(STRUCTURE) = incremental_strain_failure
- then analysis_recs(STRUCTURE) = [nl,
- 'Cumulative strain damage should be calculated.', nl, nl,
- 'Analysis should include two or more load cycles (if cyclic)', nl,
- ' with extrapolation for strain accumulation.', nl, nl,
- 'Special code should be written to perform shakedown extrapolation.'].
-
-
- /* ______________ ANY_NONLINEARSUPPORT ____________________________________ */
-
- question(any_nonlinearsupport(STRUCTURE)) = [
- 'Do the supports of the ', STRUCTURE, ' involve Coulomb friction,',nl,
- 'nonlinear springs, and/or gapping? (Answer yes or no.)'].
-
- legalvals(any_nonlinearsupport(STRUCTURE)) = [yes,no].
-
-
- /* ______________ AVERAGE_LONGEST_DIMENSION ______________________________ */
-
- question(average_longest_dimension(SS)) = [
- 'Enter the average longest dimension of the ', SS, ' in inches.',nl,
- '(Use the format: xxx.x.)'].
-
- legalvals(average_longest_dimension(SS)) = number.
-
-
- /* _____________ CANNOT-PROVIDE-ADVICE ________________________________ */
-
- rule-21:
- if time_dependent(STRUCTURE) = yes or
- temp_dependent(STRUCTURE) = yes
- then cannot-provide-advice(STRUCTURE).
-
- rule-22:
- if analysis_class(STRUCTURE) is unknown
- then cannot-provide-advice(STRUCTURE).
-
-
- /* ______________ COMPOSITION ____________________________________________ */
-
- question(composition(SS)) =
- ['What is the material composing most of the ', SS, '?'].
-
- legalvals(composition(SS)) =
- [high-strength-aluminum, upgraded-aluminum, structural-aluminum,
- high-strength-steel, upgraded-steel, structural-steel, concrete,
- high-strength-concrete].
-
-
- /* ______________ CONCLUSIONS_PRINTED ____________________________________ */
-
- rule-23:
- if sname = STRUCTURE and
- analysis_class(STRUCTURE) is known and
- analysis_recs(STRUCTURE) is known and
- displayac(STRUCTURE) and
- displayar(STRUCTURE)
- then conclusions_printed.
-
- rule-24:
- if sname = STRUCTURE and
- analysis_class(STRUCTURE) is known and
- analysis_recs(STRUCTURE) is unknown and
- displayac(STRUCTURE)
- then conclusions_printed.
-
-
- /* ______________ CONSTRUCTION ____________________________________________ */
-
- question(construction(SUBSTRUCTURE)) =
- ['Would you describe the construction of the ', SUBSTRUCTURE, ' to be a',nl,
- ' * network. (truss and/or frame elements)',nl,
- ' * continuum. (sheets and/or blocks of material), or ',nl,
- ' * network and continuum. (a combination)?'].
-
- legalvals(construction(SUBSTRUCTURE)) = [network, continuum].
-
- multivalued(construction(SUBSTRUCTURE)).
-
-
- /* _____________ CONSULTATION_OVER ________________________________________ */
-
- rule-25:
- if sname = STRUCTURE and
- cannot-provide-advice(STRUCTURE) and
- display('Unfortunately, SACON cannot handle your case.')
- then consultation_over.
-
- rule-26:
- if sname = STRUCTURE and
- analysis_class(STRUCTURE) is known and
- analysis_recs(STRUCTURE) is sought and
- conclusions_printed
- then consultation_over.
-
-
- /* _____________ CYCLES ___________________________________________________ */
-
- question(cycles(LOADING)) = [
- 'Enter the number of cycles of ', LOADING, ' that will be applied.',nl,
- '(Use the format: xxx.x.)'].
-
- legalvals(cycles(LOADING)) = number.
-
-
- /* _______________ DEFLECTION _____________________________________________ */
-
- multivalued(deflection(STRUCTURE)).
-
- rule-27:
- if substructure(STRUCTURE) = SS and
- ss_deflection(SS) = X
- then deflection(STRUCTURE) = X.
-
-
- /* ____________ DEFLECTION_BOUND __________________________________________ */
-
- rule-28:
- if listof(X, (loading_component(LOADING) = LOADCOMPONENT and
- deflection_stress_magnitudes(LOADCOMPONENT) =[X,S])) = DMS and
- sum(DMS) = SB
- then deflection_bound(LOADING) = SB.
-
-
- /* _____________ DEFLECTION_STRESS_MAGNITUDES _____________________________ */
-
- rule-29:
- if distribution(LOADCOMP) = point
- and cached(loading_component(LOADING) = LOADCOMP)
- and cached(loading(SS) = LOADING)
- and support_configuration(SS) = one-side
- and shape(SS) = beam
- and site(LOADCOMP) = near-free-edge
- and direction(LOADCOMP) = width-length
- and point_mag(LOADCOMP) = PM
- and average_longest_dimension(SS) = LE
- and depth(SS) = DEPTH
- and youngs_modulus(SS) = YO
- and einertia(SS) = EI
- and (3.0 * PM * DEPTH * LE) / (8.0 * EI) = STRESSMAG
- and (3.0 * PM * LE * LE)/(16.0 * YO * EI) = DEFLECTMAG
- then deflection_stress_magnitudes(LOADCOMP) = [DEFLECTMAG, STRESSMAG].
-
- rule-30:
- if distribution(LOADCOMP) = point
- and cached(loading_component(LOADING) = LOADCOMP)
- and cached(loading(SS) = LOADING)
- and support_configuration(SS) = one-side
- and shape(SS) = beam
- and site(LOADCOMP) = near-centroid
- and direction(LOADCOMP) = width-length
- and point_mag(LOADCOMP) = POINTMAG
- and youngs_modulus(SS)= YO
- and average_longest_dimension(SS) = LE
- and depth(SS) = DE
- and einertia(SS) = EI
- and (POINTMAG * DE * LE) / (4.0 * EI) = STRESSMAG
- and (POINTMAG * LE * LE) / (12.0 * YO * EI) = DEFLECTMAG
- then deflection_stress_magnitudes(LOADCOMP) = [DEFLECTMAG, STRESSMAG].
-
- rule-31:
- if distribution(LOADCOMP) = point
- and cached(loading_component(LOADING) = LOADCOMP)
- and cached(loading(SS) = LOADING)
- and support_configuration(SS) = one-side
- and shape(SS) = beam
- and site(LOADCOMP) = near-support
- and direction(LOADCOMP) = width-length
- and point_mag(LOADCOMP) = PM
- and youngs_modulus(SS) = YO
- and average_longest_dimension(SS) = LE
- and depth(SS) = DE
- and einertia(SS) = EI
- and (PM * DE * LE) / (8.0 * EI) = STRESSMAG
- and (PM * LE * LE) / (48.0 * YO * EI) = DEFLECTMAG
- then deflection_stress_magnitudes(LOADCOMP) = [DEFLECTMAG, STRESSMAG].
-
- rule-32:
- if sm_and_dm_parms(LC) = [EI, DM, L, D, YM] and
- ((D * DM * (L * L)) / (4 * EI)) = STRESSMAG and
- ((DM * (L * L * L))/ (24.0 * YM * EI)) = DEFLECTIONMAG
- then deflection_stress_magnitudes(LC) = [DEFLECTIONMAG, STRESSMAG].
-
-
- rule-33:
- if direction(LOADCOMP) = width-length
- and distribution(LOADCOMP) = distributed
- and cached(loading_component(LOADING) = LOADCOMP)
- and cached(loading(SS) = LOADING)
- and support_configuration(SS) = four-sides
- and shape(SS) = SHAPE
- and surface_shape(SHAPE)
- and average_longest_dimension(SS) = LE
- and depth(SS) = DEPTH
- and dist_mag(LOADCOMP) = DIST
- and alpha_gamma(SS)= [ALPHA, GAMMA]
- and einertia(SS) = EI
- and youngs_modulus(SS) = YO
- and ALPHA * DEPTH * DIST * LE * LE / (2.0 * EI) = STRESSMAG
- and GAMMA * DIST * LE * LE * LE / (6.0 * YO * EI) = DEFLECTMAG
- then deflection_stress_magnitudes(LOADCOMP) = [DEFLECTMAG, STRESSMAG].
-
-
- /* _____________ DENSITY _________________________________________________ */
-
- rule-34:
- if composition(SS) = X and
- aluminum(X)
- then density(SS) = 0.1.
-
- rule-35:
- if composition(SS) = concrete
- then density(SS) = 0.0868055.
-
-
- rule-36:
- if composition(SS) = high-strength-concrete
- then density(SS) = 0.0868055.
-
-
- /* _______________ DEPTH _________________________________________________ */
-
- question(dept(SUBSTRUCTURE)) = [
- 'Enter the average depth of the ', SUBSTRUCTURE, ' in inches.',nl,
- '(Use the format: xxx.x.)'].
-
- legalvals(depth(SUBSTRUCTURE)) = number.
-
-
- /* ________________ DIRECTION _____________________________________________ */
-
- question(direction(LOADCOMP)) =
- ['Which surface of the substructure does ', LOADCOMP, ' act normal to?'].
-
- legalvals(direction(LOADCOMP)) =
- [thickness-length, thickness-width, width-length].
-
-
- /* ________________ DISPLAYAC _____________________________________________ */
-
- multivalued(displayac(STRUCTURE)).
-
- rule-37:
- if display([nl,nl,
- 'The following analysis classes are relevant to the analysis of',nl,
- 'your structure:', nl, nl]) and
- analysis_class(STRUCTURE) = X and
- display([X,nl,nl])
- then displayac(STRUCTURE).
-
-
- /* ________________ DISPLAYAR ____________________________________________ */
-
- multivalued(displayar(STRUCTURE)).
-
- rule-38:
- if display(['The following are specific analysis recommendations',nl,
- 'you should follow when performing the structure', nl,
- 'analysis:', nl]) and
- analysis_recs(STRUCTURE) = X and
- display(X) and
- display([nl])
- then displayar(STRUCTURE).
-
-
- /* _________________ DIST_MAG ____________________________________________ */
-
- question(dist_mag(LC)) = [
- 'Enter the magnitude of the distributed load (in psi).',nl,
- '(Use the format: xxx.x.)'].
-
- legalvals(dist_mag(LC)) = number.
-
-
- /* __________________ DISTRIBUTION _______________________________________ */
-
- question(distribution(LOADCOMP)) = [
- 'Would you describe ', LOADCOMP, ' as being distributed over most of',nl,
- 'the substructure or as acting at a point of the substructure?',nl,
- ' * distributed.',nl,
- ' * point.'].
-
- legalvals(distribution(LOADCOMP)) = [distributed, point].
-
-
- /* ________________ EINERTIA _____________________________________________ */
-
- rule-39:
- if shape(SS) = X and
- surface_shape(X) and
- thin_walled_or_solid(SS) = thin-walled and
- wall_thickness(SS) = THICKNESS and
- depth(SS) = DEPTH and
- weight(SS) = WEIGHT and
- density(SS) = DENSITY and
- average_longest_dimension(SS) = LENGTH and
- (THICKNESS * (DEPTH * DEPTH)) / 2.0 = EI
- then einertia(SS) = EI.
-
- rule-40:
- if shape(SS) = SHAPE
- and surface_shape(SHAPE)
- /*the above two lines mean shape must be one of the surface shapes*/
- and thin_walled_or_solid(SS) = solid
- and depth(SS) = DEPTH
- /* and weight(SS) = WEIGHT
- and density(SS) = DENSITY (used by 106_b) */
- and average_longest_dimension(SS) = LENGTH
- and (DEPTH * DEPTH * DEPTH) / 12.0 = EINERTIA
- then einertia(SS) = EINERTIA.
-
- rule-41:
- if shape(SS) = beam
- and thin_walled_or_solid(SS) = thin-walled
- and wall_thickness(SS) = THICKNESS
- and ewidth(SS) = EWIDTH
- and depth(SS) = DEPTH
- and (THICKNESS * EWIDTH * DEPTH * DEPTH) / 2.0 = EINERTIA
- then einertia(SS) = EINERTIA.
-
-
- /* _______________ ERROR ________________________________________________ */
-
- question(error(STRUCTURE)) = [
- 'Assuming that your characterization of the ',STRUCTURE, ' in terms',nl,
- 'of its geometry, material characteristics, and boundary conditions',nl,
- 'are accurate, how much error (in percent) is tolerable for the',nl,
- 'analysis? (Enter a number between 5 and 30.)'].
-
- legalvals(error(STRUCTURE)) = number(0,100).
-
-
- /* ________________ ERRORCLASS __________________________________________ */
-
- rule-42:
- if sname = STRUCTURE and
- error(STRUCTURE) = E and
- E >= 5.0 and
- E =< 30.0
- then errorclass = moderate.
-
-
- /* _______________ EWIDTH _________________________________________________ */
-
- rule-43:
- if shape(SS) = X and
- surface_shape(X) and
- thin_walled_or_solid(SS) = thin-walled and
- wall_thickness(SS) = THICKNESS and
- depth(SS) = DEPTH and
- weight(SS) = WEIGHT and
- density(SS) = DENSITY and
- average_longest_dimension(SS) = LENGTH and
- WEIGHT / (2.0 * LENGTH * THICKNESS * DENSITY) = EWIDTH
- then ewidth(SS) = EWIDTH.
-
- rule-44:
- if shape(SS) = SHAPE
- and surface_shape(SHAPE)
- /*the above two lines mean shape must be one of the surface shapes*/
- and thin_walled_or_solid(SS) = solid
- and depth(SS) = DEPTH
- and weight(SS) = WEIGHT
- and density(SS) = DENSITY
- and average_longest_dimension(SS) = LENGTH
- and WEIGHT/(LENGTH * DEPTH * DENSITY) = EWIDTH
- then ewidth(SS) = EWIDTH.
-
- rule-45:
- if shape(SS) = beam
- and thin_walled_or_solid(SS) = thin-walled
- and wall_thickness(SS) = THICKNESS
- and weight(SS) = WEIGHT
- and density(SS) = DENSITY
- and average_longest_dimension(SS) = LENGTH
- and WEIGHT / (2.0 * LENGTH * THICKNESS * DENSITY) = EWIDTH
- then ewidth(SS) = EWIDTH.
-
-
- /* _________________ GEOMETRY _____________________________________________ */
-
- question(geometry(SUBSTRUCTURE)) =
- ['Is the overall geometry of the ', SUBSTRUCTURE, ' curved or planar?'].
-
- legalvals(geometry(SUBSTRUCTURE)) = [curved, planar].
-
-
- /* ________________ IDATA ________________________________________________ */
-
- /*
- This rule is used to find the structure name, the allowable error,
- and the integrity goal (rather than in an initialdata specification)
- so that the questions for those expressions can contain the actual
- structure name provided by the user.
- */
-
- rule-46:
- if sname = STRUCTURE and
- error(STRUCTURE) is sought and
- integrity_goal(STRUCTURE) is sought
- then idata = found.
-
-
- /* ________________ INTEGRITY_GOAL ________________________________________ */
-
- question(integrity_goal(STRUCTURE)) = [
- 'Do you want to examine the responses of the ', STRUCTURE, ',', nl,
- 'evaluate its instability, or both?
- * examine.
- * evaluate.
- * examine and evaluate.'].
-
- legalvals(integrity_goal(STRUCTURE)) =
- [examine_responses, evaluate_instability].
-
- multivalued(integrity_goal(STRUCTURE)).
-
-
- /* _________________ LENGTH _______________________________________________*/
-
- fact-6: length([]) = 0.
- fact-7: length([A]) = 1.
- fact-8: length([A,B]) = 2.
- fact-9: length([A,B,C]) = 3.
- fact-10: length([A,B,C,D]) = 4.
- fact-11: length([A,B,C,D,E]) = 5.
-
- rule-47:
- if length(L) = N and
- N + 1 = M
- then length([X|L]) = M.
-
-
- /* _______________ LENGTH_WIDTH_RATIO ____________________________________ */
-
- if average_longest_dimension(SS) = LENGTH
- and ewidth(SS) = EWIDTH
- and EWIDTH/LENGTH = RATIO1
- and LENGTH/EWIDTH = RATIO2
- and maximum(RATIO1,RATIO2) = MRATIO
- then length_width_ratio(SS) = MRATIO.
-
-
- /* ________________ LOADING _______________________________________________ */
-
- question(loading(SS)) = [
- 'What are the names of the loadings on the ', SS, '?',nl,
- '(Enter a name, or names separated by commas.)'].
-
- multivalued(loading(SS)).
-
- metafact-1:
- whenfound(loading(SS) = LOADING) =
- [cycles(LOADING),
- stress_bound(LOADING),
- deflection_bound(LOADING)].
-
-
- /* _______________ LOADING_COMPONENT _____________________________________ */
-
- asknumber(loading_component(L))
- = ['How many components are there to ', L, '?'].
-
- nameof(loading_component(L), N) = L-component-N.
-
- multivalued(loading_component(L)).
-
- metafact-2:
- whenfound(loading_component(LOADING) = LOADCOMP) =
- [distribution(LOADCOMP),
- direction(LOADCOMP),
- deflection_stress_magnitudes(LOADCOMP)].
-
-
- /* _________________ MAXIMUM _____________________________________________ */
-
- rule-48:
- if A >= B
- then maximum(A,B) = A.
-
- rule-49:
- if A < B
- then maximum(A,B) = B.
-
-
- /* _________________ METAL _______________________________________________ */
-
- fact-12: metal(high-strength-aluminum).
- fact-13: metal(high-strength-steel).
- fact-14: metal(upgraded-aluminum).
- fact-15: metal(upgraded-steel).
- fact-16: metal(structural-aluminum).
- fact-17: metal(structural-steel).
- fact-18: metal(concrete) = no.
- fact-19: metal(high-strength-concrete) = no.
-
-
- /* _________________ MODELLING_DIMENSIONALITY ____________________________ */
-
- question(modelling_dimensionality(SUBSTRUCTURE)) =
- ['Is the ', SUBSTRUCTURE, ' to be modelled as a 1, 2, or 3 dimensional', nl,
- 'system?'].
-
- legalvals(modelling_dimensionality(SUBSTRUCTURE)) = integer(1,3).
-
-
- /* ______________ ND_DEFLECTION ___________________________________________ */
-
- rule-50:
- if listof(DB, loading(SS) = L and
- deflection_bound(L) = DB) = DBSET and
- rms(DBSET) = NDDEFLECTION
- then nd_deflection(SS) = NDDEFLECTION.
-
-
- /* _______________ ND_STRESS ______________________________________________ */
-
- rule-51:
- if stress_criterion(SS) = SC and
- listof(SB, loading(SS) = L and stress_bound(L) = SB) = SBSET and
- rms(SBSET) = RMSSTRESSBOUNDS and
- ((RMSSTRESSBOUNDS)/SC) = NDSTRESS
- then nd_stress(SS) = NDSTRESS.
-
-
- /* ________________ NONLINEARITY __________________________________________ */
-
- rule-52:
- if substructure(STRUCTURE) = SS and
- ssnonlinearity(SS) = material
- then nonlinearity(STRUCTURE) = material.
-
-
- /* ________________________ POINT_MAG _____________________________________ */
-
- question(point_mag(LC)) = [
- 'Enter the magnitude of the point load (in pounds)',nl,
- '(Use the format: xxx.x.)'].
-
- legalvals(point_mag(LC)) = number.
-
-
- /* __________________ RMS _________________________________________________ */
-
- fact-20: rms([]) = 0.
- fact-21: rms([N])= N.
-
- rule-53:
- if sumsquares(NUMLIST) = SQ and
- length(NUMLIST) = L and
- SQ/L = MS and
- sqrt(MS) = X
- then rms(NUMLIST) = X.
-
-
- /* ___________________ SHAPE ______________________________________________ */
-
- rule-54:
- if modelling_dimensionality(SUBSTRUCTURE) = 1 and
- construction(SUBSTRUCTURE) = network
- then shape(SUBSTRUCTURE) = beam.
-
- rule-55:
- if construction(SUBSTRUCTURE) is unique and
- modelling_dimensionality(SUBSTRUCTURE) = 2 and
- geometry(SUBSTRUCTURE) = planar
- then shape(SUBSTRUCTURE) = plate.
-
- rule-56:
- if construction(SUBSTRUCTURE) is unique and
- modelling_dimensionality(SUBSTRUCTURE) = MD and
- MD >= 2 and
- geometry(SUBSTRUCTURE) = curved
- then shape(SUBSTRUCTURE) = shell.
-
-
- /* __________________________ SITE _______________________________________ */
-
- question(site(LOADCOMP)) = ['Describe where on the substructure ',LOADCOMP,
- ' is applied.'].
- legalvals(site(LOADCOMP)) = [near-centroid, near-support, near-free-edge].
-
-
- /* _____________ SM_AND_DM_PARMS __________________________________________ */
-
- rule-57:
- if direction(LC) = width-length and
- distribution(LC) = distributed and
- cached(loading_component(LOADING) = LOADCOMP) and
- cached(loading(SS) = LOADING) and
- support_configuration(SS) = one-side and
- /* actually shape must be one of surface shapes */
- shape(SS) = X and
- surface_shape(X) and
- einertia(SS) = EI and
- dist_mag(LC) = DM and
- average_longest_dimension(SS) = L and
- depth(SS) = D and
- youngs_modulus(SS) = YM
- then sm_and_dm_parms(LC) = [EI, DM, L, D, YM].
-
-
- /* ________________ SNAME _________________________________________________ */
-
- question(sname) =
- 'What is the name of the structure you wish to analyze?'.
-
-
- /* ________________ SS_DEFLECTION _________________________________________ */
-
- multivalued(ss_deflection(SUBSTRUCTURE)).
-
- rule-58:
- if sname = STRUCTURE
- and integrity_goal(STRUCTURE) = evaluate_instability
- then ss_deflection(SS) = kinematic_collapse.
-
- rule-59:
- if errorclass = moderate and
- nd_deflection(SS) = ND and
- ND >= 0.01111111
- then ss_deflection(SS) = excessive_deflection.
-
- rule-60:
- if errorclass = moderate and
- nd_stress(SS) = ND and
- ND > 0.7 and
- loading(SS) = L and
- cycles(L) = C and
- C >= 2.0
- then ss_deflection(SS) = incremental_strain_failure.
-
-
- /* ____________ SSNONLINEARITY ___________________________________________ */
-
- multivalued(ssnonlinearity(SS)).
-
- rule-61:
- if errorclass = moderate and
- nd_stress(SS) = ND and
- ND >= 0.7
- then ssnonlinearity(SS) = material.
-
- /*
- The purpose of the following presupposition is to allow the
- subsequent question to be asked ONLY if the above rule could
- not establish a value for ssnonlinearity(SS). If the rule above
- succeeded, the presupposition will be false and M.1 won't ask
- the question.
- */
-
- metafact-3:
- presupposition(ssnonlinearity(SS)) = ssnonlinearity(SS) is unknown.
-
- question(ssnonlinearity(SS)) =
- ['What types of nonlinearity exist in the ', SS, '?'].
-
-
- /* ___________ SS_STRESS __________________________________________________ */
-
- multivalued(ss_stress(SS)).
-
- rule-62:
- if composition(SS) = X and
- metal(X) and
- errorclass = moderate and
- nd_stress(SS) = NDSTRESS and
- NDSTRESS > 0.7 and
- loading(SS) = L and
- cycles(L) = C and
- C >= 10000.0 and
- C =< 1000000.0
- then ss_stress(SS) = fatigue.
-
- rule-63:
- if errorclass = moderate and
- nd_stress(SS) = ND and
- ND >= 0.7
- then ss_stress(SS) = stress_exceedence.
-
-
- /* ___________ STRESS _____________________________________________________ */
-
- multivalued(stress(STRUCTURE)).
-
- rule-64:
- if substructure(STRUCTURE) = SS and
- ss_stress(SS) = STRESS
- then stress(STRUCTURE) = STRESS.
-
-
- /* ____________ STRESS_BOUND _____________________________________________ */
-
- rule-65:
- if listof(X, (loading_component(LOADING) = LOADCOMPONENT and
- deflection_stress_magnitudes(LOADCOMPONENT) = [D, X]))= SMS and
- sum(SMS) = SB
- then stress_bound(LOADING) = SB.
-
- question(stress_bound(LOADING)) = [
- 'Enter the maximum stress bound at a point, due to all components',nl,
- 'of the ', LOADING, ' (in psi.)'].
-
- legalvals(stress_bound(LOADING)) = number.
-
-
- /* ____________ STRESS_CRITERION _________________________________________ */
-
- rule-66:
- if composition(SUBSTRUCTURE) = high-strength-aluminum
- then stress_criterion(SUBSTRUCTURE) = 70000.0 .
-
-
- rule-67:
- if composition(SUBSTRUCTURE) = concrete
- then stress_criterion(SUBSTRUCTURE) = 3000.0.
-
- rule-68:
- if composition(SUBSTRUCTURE) = high-strength-concrete
- then stress_criterion(SUBSTRUCTURE) = 4000.0.
-
-
- /* _____________ SUBSTRUCTURE _____________________________________________ */
-
- multivalued(substructure(STRUCTURE)).
-
- metafact-4:
- whenfound(substructure(STRUCTURE) = SS) =
- [composition(SS),
- average_longest_dimension(SS),
- weight(SS),
- thin_walled_or_solid(SS),
- support_configuration(SS),
- shape(SS),
- nd_stress(SS),
- nd_deflection(SS)].
-
- question(substructure(STRUCTURE)) = [
- 'What are the names of the substructures of the ', STRUCTURE, '?',nl,
- '(Enter a single name if there is only one substructure. If there is
- more than one, enter the names separated by commas.)'].
-
-
- /* _______________ SUM ____________________________________________________ */
-
- fact-22: sum([N]) = N.
-
- rule-69:
- if sum(REST) = RSUM and
- FIRST + RSUM = SUM
- then sum([FIRST | REST]) = SUM.
-
-
- /* _______________ SUMSQUARES ______________________________________________ */
-
- rule-70:
- if N * N = NSQ
- then sumsquares([N]) = NSQ.
-
- rule-71:
- if sumsquares(REST) = RSQS and
- FIRST * FIRST = FSQ and
- FSQ + RSQS = SSQS
- then sumsquares([FIRST | REST]) = SSQS.
-
-
- /* ________________ SUPPORT_CONFIGURATION _________________________________ */
-
- question(support_configuration(SUBSTRUCTURE)) = [
- 'What is the configuration of support<!s¿ ├┐╣