簡體   English   中英

碳氫化合物合金模型

[英]alloy model for hydrocarbons

我需要使用合金模擬碳氫化合物結構基本上我需要設計烷烴,烯烴和炔烴基團我已經創建了以下簽名(烯烴示例)

sig Hydrogen{}
sig Carbon{}
sig alkenegrp{
    c:one Carbon,
    h:set Hydrogen,
    doublebond:lone alkenegrp
}
sig alkene{
    unit : set alkenegrp
}
fact{
    all a:alkenegrp|a not in a.doublebond.*doublebond
    all a:alkenegrp|#a.h=mul[#(a.c),2]
}
pred show_alkene{
    #alkene>1
}
run show_alkene

這可以從烯烴開始,但是當我嘗試通過改變像所有的事實來設計相同的烷烴或炔烴時:alkynegrp |#ah = minus [mul [#(ac),2],2]它不起作用。 任何人都可以建議我如何實現它?

我的問題陳述是在有機化學中,飽和烴是完全由單鍵組成並且被氫飽和的有機化合物。 飽和烴的通式為C n H 2n + 2 (假設為非環狀結構)。 也稱為烷烴。 不飽和烴在碳原子之間具有一個或多個雙鍵或三鍵。 具有雙鍵的那些被稱為烯烴。 具有一個雙鍵的那些具有式C n H 2n (假設非環狀結構)。 含有三鍵的那些被稱為炔烴,通式C n H 2n-2 模擬碳氫化合物並給出謂詞以生成烷烴,烯烴和炔烴的實例。 我們嘗試過:

sig Hydrogen{}
sig Carbon{}

sig alkane{
c:one Carbon,
h:set Hydrogen,
n:lone alkane
}

fact{
//(#h)=add [mul[(#c),2],2]
//all a:alkane|a not in a.*n
all a:alkane|#a.h=mul[#(a.c),2]
}
pred show_alkane(){}

run show_alkan

Ë

烷烴的通式是C n H 2n + 2 ,對於乘法,我們可以使用mul內置函數但是我們不能寫添加因為我們必須做C n H 2n + 2.我們應該寫什么它可以用於烷烴

我現在對烷烴,烯烴和炔烴的了解要好一些,但我仍然不明白為什么你認為你的Alloy模型不起作用。

要表達C n H 2n-2約束,您當然可以寫出您的建議

all a:alkynegrp |
   #a.h = minus[mul[#(a.c), 2], 2]

問題只是在你的alkane信號聲明中你說c: one Carbon ,它將碳原子的數量精確地固定為1,所以minus[mul[#(ac), 2], 2]總是會准確地評估為0.我假設您想要合成任意數量的碳(因為C n )所以您應該將其從c: one Carbon更改為c: set Carbon 如果然后運行show_alkane謂詞,則應該得到一些實例,其中碳的數量大於1,因此氫的數量大於0。

此外,對於烷烴配方

all a:alkynegrp |
   #a.h = plus[mul[#(a.c), 2], 2]

3的默認范圍是不夠的,因為當ac非空時你將需要至少4個氫原子,但你可以通過明確給出范圍來解決這個問題

run show_alkane for 8

如果這不是您所討論的問題,請更具體地說明為什么您認為“它不起作用”,即您期望Alloy做什么以及Alloy實際上做了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM