aboutsummaryrefslogtreecommitdiffstats
path: root/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.xtend
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-02-16 00:43:11 +0100
committerLibravatar Kristóf Marussy <kris7topher@gmail.com>2019-02-19 19:18:25 +0100
commitd90bedacaafe87e06fddaa05a6ff9b7b796e97e7 (patch)
tree3631e27854b40de3bce7606f60113054c77bd391 /Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.xtend
parentEcore2Cft transformation (diff)
downloadVIATRA-Generator-d90bedacaafe87e06fddaa05a6ff9b7b796e97e7.tar.gz
VIATRA-Generator-d90bedacaafe87e06fddaa05a6ff9b7b796e97e7.tar.zst
VIATRA-Generator-d90bedacaafe87e06fddaa05a6ff9b7b796e97e7.zip
Two-valued fault tree analyzer WIP
Diffstat (limited to 'Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.xtend')
-rw-r--r--Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.xtend56
1 files changed, 56 insertions, 0 deletions
diff --git a/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.xtend b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.xtend
new file mode 100644
index 00000000..732d9fed
--- /dev/null
+++ b/Stochastic/hu.bme.mit.inf.dslreasoner.faulttree.transformation/src/hu/bme/mit/inf/dslreasoner/faulttree/transformation/ft2galileo/Ft2GalileoTransformation.xtend
@@ -0,0 +1,56 @@
1package hu.bme.mit.inf.dslreasoner.faulttree.transformation.ft2galileo
2
3import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.AndGate
4import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.BasicEvent
5import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.ConstantDistribution
6import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.Distribution
7import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.ExponentialDistribution
8import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.FaultTree
9import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.Gate
10import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.KOfMGate
11import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.OrGate
12import hu.bme.mit.inf.dslreasoner.faulttree.model.ft.RandomEvent
13import org.eclipse.xtend2.lib.StringConcatenationClient
14
15class Ft2GalileoTransformation {
16 def toGalileo(FaultTree faultTree) '''
17 toplevel «faultTree.topEvent.name»;
18 «FOR event : faultTree.events»
19 «event.name» «defineEvent(event)»;
20 «ENDFOR»
21 '''
22
23 protected dispatch def defineEvent(BasicEvent basicEvent) {
24 defineDistribution(basicEvent.distribution)
25 }
26
27 protected dispatch def StringConcatenationClient defineDistribution(ConstantDistribution distribution) {
28 '''p=«distribution.p»'''
29 }
30
31 protected dispatch def StringConcatenationClient defineDistribution(ExponentialDistribution distribution) {
32 '''lambda=«distribution.lambda»'''
33 }
34
35 protected dispatch def StringConcatenationClient defineDistribution(Distribution distribution) {
36 throw new IllegalArgumentException("Unknown distribution: " + distribution)
37 }
38
39 protected dispatch def StringConcatenationClient defineEvent(Gate gate) {
40 '''«defineGate(gate)» «FOR input : gate.inputEvents SEPARATOR " "»«input.name»«ENDFOR»'''
41 }
42
43 protected dispatch def StringConcatenationClient defineGate(AndGate gate) '''and'''
44
45 protected dispatch def StringConcatenationClient defineGate(OrGate gate) '''or'''
46
47 protected dispatch def StringConcatenationClient defineGate(KOfMGate gate) '''«gate.k»of«gate.inputEvents.size»'''
48
49 protected dispatch def StringConcatenationClient defineGate(Gate gate) {
50 throw new IllegalArgumentException("Unknown gate: " + gate)
51 }
52
53 protected dispatch def StringConcatenationClient defineEvent(RandomEvent randomEvent) {
54 throw new IllegalArgumentException("Unknown random even: " + randomEvent)
55 }
56}