HydroGeoSphere/通用指南
在詳細介紹數值模擬所需的輸入資料之前,首先給出一些關於輸入資料格式和性質的通用資訊。
解決給定問題涉及兩個步驟。首先,為預處理器(稱為grok [1])準備一個數據檔案,然後執行該檔案以生成HydroGeoSphere的輸入資料檔案。其次,執行HydroGeoSphere以解決問題並生成輸出資料檔案。
grok輸入檔名由最多 40 個字元的有意義的字首組成,後面追加副檔名.grok該字首將確定輸入和輸出檔名。grok列表檔名將是問題字首,後面追加字母o和副檔名.eco例如,如果使用者指定的問題字首是test,則使用者建立的通用輸入檔案將為test.grok預處理器生成的輸出列表或回顯檔案將為testo.eco. 一些模擬將需要多個輸入檔案(例如,從檔案中讀取初始水頭),並將生成多個輸出檔案。一般來說,特定模擬中所需的所有輸入檔案將具有問題字首加上給定副檔名作為檔名,而所有生成的輸出檔案將具有問題字首、字母o,加上給定副檔名作為檔名。
在整個手冊中,我們將採用使用斜體表示問題相關、使用者定義的檔名部分(例如,字首、物質名稱等),以及打字機字型表示HydroGeoSphere生成的固定部分。例如,在檔名prefixo.conc.species.001中,prefix和species部分將是使用者定義的字首和溶質或物質的名稱,而o.conc.和.001部分將由HydroGeoSphere自動生成。
預處理器開始執行後,它會提示使用者從鍵盤互動式輸入問題字首。對於重複使用相同輸入檔案的案例,您可以建立一個名為batch.pfx的檔案,該檔案包含一行,其中包含問題字首。如果該檔案存在,則字首將自動從該檔案中讀取,並且不會提示您從鍵盤輸入。該檔案應放置在與prefix.grok檔案相同的目錄中。
簡而言之,預處理器按以下順序執行其任務
- 讀取並分配預設陣列大小
- 讀取問題識別資訊
- 讀取生成網格的指令
- 如有必要,執行網格修改
- 為所有引數生成預設屬性
- 讀取可選指令以修改預設引數
- 寫入HydroGeoSphere相容資料檔案
任務3和6由使用者在prefix.grok檔案中發出的指令指導。任務5生成一組完整的預設資料,這往往可以最大限度地減少使用者必須提供的資料量。
以下是一個示例指令和一些輸入資料,說明了將在整個手冊中使用的某些通用約定
- xl, nbx 域長度和x方向上的塊數
- xi(i),i=1,nx nx個節點的x座標。
- inode...end 節點編號。
- • • •
- • • •
每個預處理器指令都寫為它自身部分的標題,以便更容易地在包含目錄表的頁面中找到它。出現在文字其他位置的指令將使用較大的無襯線字型書寫。必須在prefix.grok檔案中完全按照顯示的方式鍵入指令,區別在於它不區分大小寫,指令之前和之後的空格是可選的。注意,指令中任何兩個詞之間只能有一個空格。
如果指令需要輸入資料,則會有一系列編號行,每行包含粗體的變數名和對要讀取內容的描述。每行編號對應一個或多個FORTRAN讀取語句。
通常,資料檔案中所需專案的數量由行中存在的粗體變數名數量決定。預設的FORTRAN變數命名約定有效。這意味著以字母 I--N(包括)開頭的變數需要整數值,而所有其他變數都需要實數值,除非字串或邏輯變數的情況另有說明。數值以自由格式讀取,因此整數和實數不需要按列對齊,並且可以用空格或逗號隔開。可以在讀取完行中最後一個數據值後新增內聯描述性註釋,但在讀取字元字串時應避免註釋(例如,檔名)。
在這個示例中,需要 3 個輸入項。第一個專案xl, nbx要求使用者在緊跟指令之後的第一個非空白或非註釋行中輸入一個實數值(即域長度)和一個整數值(即塊數)。
第二個專案xi(i),i=1,nx將nx個實數值讀取到陣列xi中。nx的大小取決於問題(例如,x中的節點數、物質數等),由使用者提供足夠的值來滿足讀取語句。這些值可以輸入在一行上,也可以按需要分散在多行上。如果它們輸入在一行上,則應以空格或逗號隔開。
最後,第三個專案inode...end表示要讀取的節點編號列表(在本例中),直到遇到結束卡。列表值必須每行輸入一個。
與特定指令相關的文件結尾由 3 個點表示
- • • •
因此,對於此示例指令,假設nx等於 5,則prefix.grok檔案中的以下語句將滿足輸入要求
Example instruction text
10.0 100
0.0 2.0 4.0 6.0 8.0 10.0
1
2
3
5
6
end
某些指令由具有自身輸入指令子集的輸入例程控制,其中一些或所有指令可能是可選的。例如,指令Solute用於定義新的溶質,其最簡單的形式為
Solute
end
在這種情況下,End指令緊跟在Solute指令之後,並且沒有發出可選指令。該End語句是必需的,以便grok知道何時退出溶質定義例程。此類指令將使用以下約定表示
- • • •
- • • •
其中文字...結束表示指令(例如Solute)後面將跟隨可選指令或輸入,並以End指令終止。
在grok處理prefix.grok或材料屬性檔案(參見第 5.8.1.6 節)中包含的指令之前,它首先建立一個工作副本,在該副本中,任何完全空白的行或以感嘆號 (!) 開頭的行都會被刪除,並且任何包含檔案的內容都會被複制。這允許您在需要時包含空白行和註釋,以提高輸入的可讀性和清晰度。
包含檔案可用於避免必須剪下和貼上或註釋和取消註釋大量的輸入指令。長的列表(例如,節點編號或邊界條件資料)以及嘗試使用各種不同網格生成方法的案例是應用包含功能的良好候選者。例如,如果我們想使用包含來向上面給出的示例提供資料,我們可以在prefix.grok:
Example instruction text
10.0 100
0.0 2.0 4.0 6.0 8.0 10.0
include my.node_list
中使用以下指令my.node_list檔案可能包含,例如
1
2
3
5
6
end
如果您現在想替換另一個節點列表,您可以,例如,在檔案my_other.node_list中提供不同的節點編號,然後只需更改包含指令中給出的檔名即可。
包含檔案可以包含指令和輸入組,或者只包含單個指令的輸入片段。只允許包含指令的單個級別,因此包含檔案本身不能包含包含指令。
當grok讀取和處理prefix.grok檔案的副本時,它還會建立prefixo.eco檔案。HydroGeoSphere資料生成過程的結果將寫入該檔案,因此,如果預處理器報告了任何問題,您應首先檢查該檔案以確定其性質以及如何解決它們。如果在讀取輸入資料時發生錯誤,則grok將停止執行併發出錯誤訊息(到螢幕和prefixo.eco檔案),形式為
INSTRUCTION: 500
**************************************
*** INPUT ERROR, HALTING EXECUTION ***
**************************************
GRID GENERATION: Unrecognized instruction
Press any key to continue
在這種情況下,最後一個指令(即500)由於某種原因導致了錯誤。您現在應該檢查輸入檔案以進一步調查問題的根源,從prefix.grok和材料屬性檔案開始。
- ↑ grok /grok/, var. /grohk/ vt. [來自羅伯特·A·海因萊因的小說“陌生人在一個陌生的土地”,其中它是一個火星語,字面意思是“喝”,比喻意思是“與……融為一體”] 強調形式是“grok in fullness”。1. 理解,通常在全球意義上。暗示著親密和詳盡的知識。對比禪,它類似於一種短暫的超凡理解。另請參見 glark。2. 用於程式,可能僅僅意味著足夠的理解。 “幾乎所有 C 編譯器現在都理解空型別。”