Skip to content

Commit 883c78f

Browse files
committed
GlassBR: Move code-oriented QDefs forced into SRS to Choices as
hand-wired QDefs.
1 parent 21c6ae7 commit 883c78f

File tree

26 files changed

+273
-939
lines changed

26 files changed

+273
-939
lines changed

code/drasil-example/glassbr/lib/Drasil/GlassBR/Choices.hs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
module Drasil.GlassBR.Choices where
22

3+
import Language.Drasil (mkQuantDef, SimpleQDef, ExprC(..), LiteralC(..))
34
import Language.Drasil.Code (Choices(..), defaultChoices, Comments(..),
45
Verbosity(..), ConstraintBehaviour(..), ImplementationType(..), Lang(..),
56
Logging(..), Modularity(..), Structure(..), ConstantStructure(..),
67
ConstantRepr(..), AuxFile(..), Visibility(..), makeArchit,
78
makeData, makeConstraints, makeDocConfig, makeLogConfig, makeOptFeats)
89

10+
import Drasil.GlassBR.Unitals (aspectRatio, standOffDist, stressDistFac,
11+
demand, eqTNTWeight, dimlessLoad, interpY, interpZ)
12+
913
choices :: Choices
1014
choices = defaultChoices {
1115
lang = [Python, Cpp, CSharp, Java, Swift],
@@ -15,5 +19,14 @@ choices = defaultChoices {
1519
(makeDocConfig [CommentFunc, CommentClass, CommentMod] Quiet Hide)
1620
(makeLogConfig [LogVar, LogFunc] "log.txt")
1721
[SampleInput "../../datafiles/glassbr/sampleInput.txt", ReadME],
18-
srsConstraints = makeConstraints Exception Exception
22+
srsConstraints = makeConstraints Exception Exception,
23+
handWiredDefs = [strDisFacQD, calofDemandQD]
1924
}
25+
26+
strDisFacQD :: SimpleQDef
27+
strDisFacQD = mkQuantDef stressDistFac
28+
$ apply interpZ [str "SDF.txt", sy aspectRatio, sy dimlessLoad]
29+
30+
calofDemandQD :: SimpleQDef
31+
calofDemandQD = mkQuantDef demand
32+
$ apply interpY [str "TSD.txt", sy standOffDist, sy eqTNTWeight]

code/drasil-example/glassbr/lib/Drasil/GlassBR/DataDefs.hs

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
module Drasil.GlassBR.DataDefs (dataDefs, aspRat, glaTyFac, glaTyFacQD, gtfRef,
2-
hFromt, hFromtQD, loadDFDD, standOffDis, eqTNTWDD, calofDemand, aGrtrThanB,
2+
hFromt, hFromtQD, loadDFDD, standOffDis, eqTNTWDD, aGrtrThanB,
33
arRef, hRef, configFp, stdVals) where
44

5-
import Control.Lens ((^.))
65
import Prelude hiding (log, exp, sqrt)
76

87
import Drasil.Database (HasUID)
@@ -11,12 +10,10 @@ import Theory.Drasil (DataDefinition, ddE)
1110
import qualified Language.Drasil.Sentence.Combinators as S
1211
import Drasil.Sentence.Combinators (definedIn', definedIn)
1312

14-
import Data.Drasil.Concepts.Math (parameter)
1513
import Data.Drasil.Concepts.PhysicalProperties (dimension)
1614

1715
import Drasil.GlassBR.Assumptions (assumpSV, assumpLDFC)
1816
import Drasil.GlassBR.Concepts (annealed, fullyT, glass, heatS)
19-
import Drasil.GlassBR.LabelledContent (demandVsSDFig)
2017
import Drasil.GlassBR.References (astm2009)
2118
import Drasil.GlassBR.Unitals
2219

@@ -25,7 +22,7 @@ import Drasil.GlassBR.Unitals
2522
----------------------
2623

2724
dataDefs :: [DataDefinition]
28-
dataDefs = [hFromt, loadDFDD, glaTyFac, standOffDis, aspRat, eqTNTWDD, calofDemand]
25+
dataDefs = [hFromt, loadDFDD, glaTyFac, standOffDis, aspRat, eqTNTWDD]
2926

3027
{--}
3128

@@ -103,17 +100,6 @@ eqTNTWQD = mkQuantDef eqTNTWeight eqTNTWEq
103100
eqTNTWDD :: DataDefinition
104101
eqTNTWDD = ddE eqTNTWQD [dRef astm2009] Nothing "eqTNTW" []
105102

106-
{--}
107-
108-
calofDemandEq :: Expr
109-
calofDemandEq = apply interpY [str "TSD.txt", sy standOffDist, sy eqTNTWeight]
110-
111-
calofDemandQD :: SimpleQDef
112-
calofDemandQD = mkQuantDef demand calofDemandEq
113-
114-
calofDemand :: DataDefinition
115-
calofDemand = ddE calofDemandQD [dRef astm2009] Nothing "calofDemand" [calofDemandDesc]
116-
117103
-- Additional Notes --
118104
aGrtrThanB :: Sentence
119105
aGrtrThanB = ch plateLen `S.and_` ch plateWidth `S.are`
@@ -128,15 +114,6 @@ hsGlass = glassTypeHelper heatS
128114
glassTypeHelper :: CI -> Sentence
129115
glassTypeHelper t = short t `S.is` phrase t +:+. phrase glass
130116

131-
calofDemandDesc :: Sentence
132-
calofDemandDesc =
133-
foldlSent [ch demand `sC` EmptyS `S.or_` phrase demandq `sC` EmptyS `S.isThe`
134-
(demandq ^. defn), S "obtained from", refS demandVsSDFig,
135-
S "by interpolation using", phrase standOffDist, sParen (ch standOffDist)
136-
`S.and_` ch eqTNTWeight, S "as" +:+. plural parameter, ch eqTNTWeight,
137-
S "is defined in" +:+. refS eqTNTWDD, ch standOffDist `S.isThe`
138-
phrase standOffDist, S "as defined in", refS standOffDis]
139-
140117
hMin :: Sentence
141118
hMin = ch nomThick `S.is` S "a function that maps from the nominal thickness"
142119
+:+. (sParen (ch minThick) `S.toThe` phrase minThick)

code/drasil-example/glassbr/lib/Drasil/GlassBR/IMods.hs

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ import Data.Drasil.Citations (campidelli)
1515
import Data.Drasil.Concepts.Documentation (goal, user, datum)
1616
import Data.Drasil.SI_Units
1717

18-
import Drasil.GlassBR.DataDefs (aGrtrThanB, arRef, calofDemand, glaTyFac,
18+
import Drasil.GlassBR.DataDefs (aGrtrThanB, arRef, glaTyFac,
1919
gtfRef, hRef, loadDFDD, stdVals)
2020
import Drasil.GlassBR.LabelledContent (dimlessloadVsARFig)
2121
import Drasil.GlassBR.Goals (willBreakGS)
2222
import Drasil.GlassBR.References (astm2009, beasonEtAl1998)
2323
import Drasil.GlassBR.Unitals
2424

2525
iMods :: [InstanceModel]
26-
iMods = [risk, strDisFac, nonFL, dimLL, tolPre, tolStrDisFac, probOfBreak,
26+
iMods = [risk, nonFL, dimLL, tolPre, tolStrDisFac, probOfBreak,
2727
calofCapacity, pbIsSafe, lrIsSafe]
2828

2929
symb :: [UnitalChunk]
@@ -47,7 +47,7 @@ risk = imNoDeriv (equationalModelN (riskFun ^. term) riskQD)
4747
(qwUC modElas : qwUC loadDF : qwUC stressDistFac :
4848
map qwUC [sflawParamK, sflawParamM, minThick] ++ abInputConstraints)
4949
riskFun [] [dRef astm2009, dRefInfo beasonEtAl1998 $ Equation [4, 5],
50-
dRefInfo campidelli $ Equation [14]] "riskFun" [aGrtrThanB, hRef, ldfRef, jRef]
50+
dRefInfo campidelli $ Equation [14]] "riskFun" [aGrtrThanB, hRef, ldfRef]
5151

5252
-- FIXME [4] !!!
5353
riskQD :: SimpleQDef
@@ -57,23 +57,6 @@ riskQD = mkQuantDef riskFun ((sy sflawParamK $/
5757

5858
{--}
5959

60-
strDisFac :: InstanceModel
61-
strDisFac = imNoDeriv (equationalModelN (stressDistFac ^. term) strDisFacQD)
62-
(qwC aspectRatio aspectRatioConstraint : [qwUC dimlessLoad]) (dqdWr stressDistFac)
63-
[Bounded (Inc, sy stressDistFacMin) (Inc, sy stressDistFacMax)]
64-
[dRef astm2009] "stressDistFac"
65-
[interpolating stressDistFac dimlessloadVsARFig, arRef, qHtRef]
66-
67-
strDisFacQD :: SimpleQDef
68-
strDisFacQD = mkQuantDef stressDistFac strDisFacEq
69-
70-
strDisFacEq :: Expr
71-
-- strDisFacEq = apply (sy stressDistFac)
72-
-- [sy dimlessLoad, sy aspectRatio]
73-
strDisFacEq = apply interpZ [str "SDF.txt", sy aspectRatio, sy dimlessLoad]
74-
75-
{--}
76-
7760
nonFL :: InstanceModel
7861
nonFL = imNoDeriv (equationalModelN (nonFactorL ^. term) nonFLQD)
7962
(qwUC tolLoad : qwUC modElas : qwUC minThick : abInputConstraints)
@@ -93,7 +76,7 @@ dimLL :: InstanceModel
9376
dimLL = imNoDeriv (equationalModelN (dimlessLoad ^. term) dimLLQD)
9477
(qwUC demand : qwUC modElas : qwUC minThick : qwUC gTF : abInputConstraints)
9578
dimlessLoad [] [dRef astm2009, dRefInfo campidelli $ Equation [7]]
96-
"dimlessLoad" [qRef, aGrtrThanB, stdVals [modElas], hRef, gtfRef]
79+
"dimlessLoad" [aGrtrThanB, stdVals [modElas], hRef, gtfRef]
9780

9881
dimLLEq :: Expr
9982
dimLLEq = sy demand $* square (sy plateLen $* sy plateWidth)
@@ -169,7 +152,7 @@ lrIsSafe = imNoDeriv (equationalModelN (nounPhraseSP "Safety Req-LR") lrIsSafeQD
169152
[qwC lRe $ UpFrom (Exc, exactDbl 0), qwC demand $ UpFrom (Exc, exactDbl 0)]
170153
isSafeLR []
171154
[dRef astm2009] "isSafeLR"
172-
[lrIsSafeDesc, capRef, qRef]
155+
[lrIsSafeDesc, capRef]
173156

174157
lrIsSafeQD :: SimpleQDef
175158
lrIsSafeQD = mkQuantDef isSafeLR (sy lRe $> sy demand)
@@ -191,9 +174,6 @@ lrCap = ch lRe +:+. S "is also called capacity"
191174
pbTolUsr :: Sentence
192175
pbTolUsr = ch pbTol `S.is` S "entered by the" +:+. phrase user
193176

194-
qRef :: Sentence
195-
qRef = ch demand `S.isThe` (demandq ^. defn) `sC` S "as given in" +:+. refS calofDemand
196-
197177
lrIsSafeDesc :: Sentence
198178
lrIsSafeDesc = iModDesc isSafeLR
199179
(ch isSafePb +:+ fromSource pbIsSafe `S.and_` ch isSafeLR)
@@ -202,15 +182,12 @@ pbIsSafeDesc :: Sentence
202182
pbIsSafeDesc = iModDesc isSafePb
203183
(ch isSafePb `S.and_` ch isSafeLR +:+ fromSource lrIsSafe)
204184

205-
capRef, jRef, jtolRef, ldfRef, nonFLRef, probBRRef, qHtRef, qHtTlTolRef,
206-
riskRef :: Sentence
185+
capRef, jtolRef, ldfRef, nonFLRef, probBRRef, qHtTlTolRef, riskRef :: Sentence
207186
capRef = definedIn' calofCapacity (S "and is also called capacity")
208-
jRef = definedIn strDisFac
209187
jtolRef = definedIn tolStrDisFac
210188
ldfRef = definedIn loadDFDD
211189
nonFLRef = definedIn nonFL
212190
probBRRef = definedIn probOfBreak
213-
qHtRef = definedIn dimLL
214191
qHtTlTolRef = definedIn tolPre
215192
riskRef = definedIn risk
216193

0 commit comments

Comments
 (0)