|
3 | 3 |
|
4 | 4 | (defn get-context []
|
5 | 5 | (sv c (Box)
|
6 |
| - c.data-dir "data/" |
7 |
| - c.fig-dir "figs/" |
| 6 | + c.data-dir "data/mar21/" |
| 7 | + c.fig-dir "figs/drafts/" |
8 | 8 | c.odes (, "rotate" "divergent" "nondivergent")
|
9 | 9 | c.cdrs (, (, "none" "none") (, "caas-node" "caas") (, "caas" "caas"))
|
10 | 10 | c.nstepfacs (, 1 5)
|
|
14 | 14 | c.nes (, 5 10 20 40 80)
|
15 | 15 | c.nps (, 4 6 8 9 12) ;(, 4 5 6 7 8 9 10 11 12 13 16)
|
16 | 16 | c.ics (, "gau" "cos" "slo")
|
17 |
| - c.npclrs {4 "g" 5 "m" 6 "r" 7 "c" 8 "k" 9 "b" 10 "g" 11 "c" 12 "m" 13 "m" 16 "g"} |
| 17 | + c.npclrs {4 "g" 5 "m" 6 "r" 7 "c" 8 "k" 9 "b" 10 "g" 11 "c" 12 "r" 13 "m" 16 "g"} |
18 | 18 | c.npmarks {4 "o" 5 "x" 6 "s" 7 "x" 8 "p" 9 "+" 10 "." 11 "^" 12 "." 13 "*" 16 "."})
|
19 | 19 | c)
|
20 | 20 |
|
21 | 21 | (defn flow-short2long [flow]
|
22 | 22 | (get {"divergent" "divergent flow"
|
23 | 23 | "nondivergent" "nondivergent flow"
|
24 |
| - "rotate" "solid-body rotation"} flow)) |
| 24 | + "rotate" "solid-body rotation" |
| 25 | + "movingvortices" "moving vortices"} flow)) |
25 | 26 |
|
26 | 27 | (defn ic-short2long [ic]
|
27 | 28 | (get {"gau" "Gaussian hills"
|
28 | 29 | "cos" "cosine bells"
|
29 | 30 | "slo" "slotted cylinders"} ic))
|
30 | 31 |
|
31 |
| -(defn nes->degstrs [nes] |
| 32 | +(defn nes->degstrs [nes &optional [convert-all False]] |
32 | 33 | (sv x [] xstr [])
|
33 | 34 | (for [ne nes]
|
34 |
| - (sv deg (geton {5 6 10 3 20 "1.5" 40 "0.75" 80 "0.375" 160 "0.1875"} ne)) |
35 |
| - (when (none? deg) (continue)) |
| 35 | + (sv deg (geton {2 15 5 6 10 3 20 "1.5" 40 "0.75" 80 "0.375" 160 "0.1875"} ne)) |
36 | 36 | (.append x ne)
|
37 |
| - (.append xstr (.format "${}^{{\circ}}$" deg))) |
| 37 | + (if (none? deg) |
| 38 | + (do (sv deg (/ 30 ne)) |
| 39 | + (.append xstr (.format "${:1.4f}^{{\circ}}$" deg))) |
| 40 | + (.append xstr (.format "${}^{{\circ}}$" deg)))) |
38 | 41 | {:ne x :deg xstr})
|
39 | 42 |
|
40 | 43 | (defn cdr-name [short]
|
41 | 44 | (get {"caas" "CAAS-CAAS" "caas-node" "CAAS-point"} short))
|
42 | 45 |
|
| 46 | +;;; parse cmd, L, M, C slmmir output |
| 47 | + |
| 48 | +(defn acc-parse [fname &optional map-nstepfac] |
| 49 | + (sv txt (.split (readall fname) "\n") |
| 50 | + bo None d {}) |
| 51 | + (for [ln txt] |
| 52 | + (sv ln2 (cut ln 0 2)) |
| 53 | + (cond [(and (= "cm" ln2) (in "cmd>" ln)) |
| 54 | + (sv cmd ln c (parse-cmd ln :map-nstepfac map-nstepfac))] |
| 55 | + [(= ln2 "M ") |
| 56 | + (sv mp (parse-midpoint-check ln)) |
| 57 | + (unless (none? (geton d #*(+ (cmd->key-base c) |
| 58 | + (, (:ic mp) cyc (:ne c) :M)))) |
| 59 | + ;; handle repeated ic used for src-term OOA testing. |
| 60 | + (assoc mp :ic (+ (:ic mp) "-src"))) |
| 61 | + (assoc-nested d (+ (cmd->key-base c) (, (:ic mp) cyc (:ne c) :M)) |
| 62 | + {:l1 (:l1 mp) :l2 (:l2 mp)})] |
| 63 | + [(= ln2 "C ") |
| 64 | + (cond [(in "cycle" ln) (sv (, - - cyc) (sscanf ln "s,s,i"))] |
| 65 | + [(or (in "PASS" ln) (in "FAIL" ln)) |
| 66 | + (sv (, - pf) (sscanf ln "s,s")) |
| 67 | + (when (and (= pf "FAIL") (!= (:mono c) "none") (<= cyc 10)) |
| 68 | + (prf "FAIL {}" cmd))] |
| 69 | + [:else |
| 70 | + (sv cl (parse-C ln)) |
| 71 | + (unless (none? (geton d #*(+ (cmd->key-base c) |
| 72 | + (, (:ic cl) cyc (:ne c) :C)))) |
| 73 | + ;; handle repeated ic used for src-term OOA testing. |
| 74 | + (assoc cl :ic (+ (:ic cl) "-src"))) |
| 75 | + #_(print "found:" (+ (cmd->key-base c) (, (:ic cl) cyc (:ne c) :C))) |
| 76 | + (assoc-nested d (+ (cmd->key-base c) (, (:ic cl) cyc (:ne c) :C)) |
| 77 | + cl)])] |
| 78 | + [(= ln2 "L ") |
| 79 | + (cond [(in "L file" ln) |
| 80 | + (assoc-nested d (+ (cmd->key-base c) |
| 81 | + (, "cos" cyc (:ne c) :L :mixing-file)) |
| 82 | + (last (.split ln))) |
| 83 | + ;; If nothing else has marked bo as done, do it now. |
| 84 | + (unless (none? bo) |
| 85 | + (assoc bo :done True))] |
| 86 | + [(in "phimin" ln) |
| 87 | + (sv (, - ic - l1 - l2 - li - phimin - phimax) |
| 88 | + (sscanf ln "s,s,s,f,s,f,s,f,s,f,s,f")) |
| 89 | + (assoc-nested d (+ (cmd->key-base c) (, ic cyc (:ne c) :Lerr)) |
| 90 | + {:l1 l1 :l2 l2 :li li :phimin phimin :phimax phimax})] |
| 91 | + [:else |
| 92 | + (sv bo (parse-bakeoff-diag bo ln (:timeint c)))]) |
| 93 | + (when (and (not (none? bo)) (:done bo)) |
| 94 | + (for [(, k v) (.items bo)] |
| 95 | + (assoc-nested d (+ (cmd->key-base c) (, "cos" cyc (:ne c) :L k)) v)) |
| 96 | + (sv bo None))])) |
| 97 | + d) |
| 98 | + |
43 | 99 | ;;; slmmir I/O
|
44 | 100 |
|
45 | 101 | (defn read-slmmir-io-arrays [fname &optional beg end stride]
|
|
91 | 147 |
|
92 | 148 | ;;; parse slmmir text output
|
93 | 149 |
|
| 150 | +;; (map-nstepfac nstepfac-initial ne np) |
94 | 151 | (defn parse-cmd [cmd &optional map-nstepfac]
|
95 | 152 | (sv toks (.split cmd))
|
96 | 153 | (defn int-or-none [x]
|
|
105 | 162 | (for [e (.items keys)]
|
106 | 163 | (assoc d (keyword (first e)) ((second e) (get-key-val (first e)))))
|
107 | 164 | (sv nstepfac (/ (:nsteps d) (:ne d) 6))
|
108 |
| - (unless (none? map-nstepfac) (sv nstepfac (map-nstepfac nstepfac))) |
| 165 | + (unless (none? map-nstepfac) |
| 166 | + (sv nstepfac (map-nstepfac nstepfac (:ne d) (:np d)))) |
109 | 167 | (assoc d :nstepfac (int nstepfac))
|
110 | 168 | (when (= (:timeint d) "exact") (assoc d :prefine 0))
|
111 | 169 | d)
|
|
224 | 282 | (if (in " offst " ln)
|
225 | 283 | (parse-search-offset-nodal-subset-line ln)
|
226 | 284 | (parse-search-nodal-subset-line ln)))
|
| 285 | + |
| 286 | +;;; JCP manuscript revision utilities |
| 287 | + |
| 288 | +(defn jcp-context [c] |
| 289 | + (sv c.data-dir "data/feb24/" |
| 290 | + c.nps (, 4 6 8 11 13)) |
| 291 | + c) |
| 292 | + |
| 293 | +;; Compute ne for np given tne for np=4 such that (ne,np) has the maximal #DOF |
| 294 | +;; <= $DOF for (tne,4). |
| 295 | +(defn jcp-tne2ne [tne np] |
| 296 | + (// (* tne 3) (dec np))) |
| 297 | + |
| 298 | +;; The floating point actual value of resolution converted to np=4. |
| 299 | +(defn jcp-effective-tne [tne np] |
| 300 | + (/ (* (jcp-tne2ne tne np) (dec np)) 3)) |
| 301 | + |
| 302 | +(defn jcp-np4-ne [ne np] |
| 303 | + (/ (* ne (dec np)) 3)) |
| 304 | + |
| 305 | +;; Deduce nstepfac 1 or 5 from parse-cmd's internal values. |
| 306 | +(defn jcp-nenp2nstepfac [nstepfac ne np] |
| 307 | + (sv nsteps (* nstepfac ne 6) |
| 308 | + tne (/ (* ne (dec np)) 3) |
| 309 | + tnstepfac (/ nsteps tne 6)) |
| 310 | + (cond [(< tnstepfac 3) 1] |
| 311 | + [(< tnstepfac 8) 5] |
| 312 | + [:else (raisefmt "jcp-nenp2nstepfac failed: {} {} {} => {}" |
| 313 | + nstepfac ne np tnstepfac)])) |
0 commit comments