github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/eecpprint.go (about) 1 package eeslism 2 3 import ( 4 "errors" 5 "fmt" 6 ) 7 8 func cmpprint(id, N int, cmp []COMPNT, Elout []*ELOUT, Elin []*ELIN) { 9 name, eqptype, envname := "name", "eqptype", "envname" 10 if id == 1 { 11 fmt.Printf("COMPNT\n n %-10s %-10s %-10s -c- nca neq Nout Nin nivr Elou Elin\n", name, eqptype, envname) 12 } 13 for i := 0; i < N; i++ { 14 c := &cmp[i] 15 var cEloutsIdx, cElinIdx int 16 for cEloutsIdx = 0; cEloutsIdx < len(Elout); cEloutsIdx++ { 17 if &c.Elouts[0] == &Elout[0] { 18 break 19 } 20 } 21 for cElinIdx = 0; cElinIdx < len(Elin); cElinIdx++ { 22 if &c.Elins[0] == &Elin[0] { 23 break 24 } 25 } 26 fmt.Printf("%2d %-10s %-10s %-10s %c %4d %3d %4d %3d %d %4d %4d\n", i, c.Name, c.Eqptype, c.Envname, c.Control, 27 c.Ncat, c.Neqp, c.Nout, c.Nin, c.Nivar, cEloutsIdx, cElinIdx) 28 } 29 } 30 31 func eloutprint(id int, E []*ELOUT, cmp []*COMPNT) { 32 if id == 1 { 33 fmt.Printf("ELOUT\n n name id fld contl sysld Cmp G cfo cfin\n") 34 } 35 for i := range E { 36 e := E[i] 37 var eCmpIdx int 38 for eCmpIdx = 0; eCmpIdx < len(cmp); eCmpIdx++ { 39 if e.Cmp == cmp[eCmpIdx] { 40 break 41 } 42 } 43 fmt.Printf("%3d (%-10s) %c %c %c %c %4d [%5.3f] %6.3f", 44 i, e.Cmp.Name, e.Id, e.Fluid, e.Control, e.Sysld, eCmpIdx, e.G, e.Coeffo) 45 46 for j := 0; j < e.Ni; j++ { 47 fmt.Printf(" %6.3f", e.Coeffin[j]) 48 } 49 50 fmt.Printf(" Co=%6.4f\n", e.Co) 51 } 52 } 53 54 func eloutfprint(id int, E []*ELOUT, cmp []*COMPNT) { 55 if id == 1 { 56 fmt.Fprintf(Ferr, "ELOUT\n n id fld contl sysld Cmp G cfo cfin\n") 57 } 58 for i := range E { 59 e := E[i] 60 cmp_idx := 0 61 for cmp_idx = 0; cmp_idx < len(cmp); cmp_idx++ { 62 if e.Cmp == cmp[cmp_idx] { 63 break 64 } 65 } 66 fmt.Fprintf(Ferr, "%3d (%-6s) %c %c %c %c %4d [%5.3f] %6.3f", 67 i, e.Cmp.Name, e.Id, e.Fluid, e.Control, e.Sysld, cmp_idx, e.G, e.Coeffo) 68 69 for j := 0; j < e.Ni; j++ { 70 fmt.Fprintf(Ferr, " %6.3f", e.Coeffin[j]) 71 } 72 73 fmt.Fprintf(Ferr, " Co=%6.4f\n", e.Co) 74 } 75 } 76 77 func elinprint(id int, C []*COMPNT, eo []*ELOUT, ei []*ELIN) { 78 79 if id == 1 { 80 fmt.Printf("ELIN\n n id upo upv\n") 81 } 82 83 for i := range C { 84 for ii := 0; ii < C[i].Nout; ii++ { 85 Eo := C[i].Elouts[ii] 86 87 for j := 0; j < Eo.Ni; j++ { 88 var o, v int 89 90 E := Eo.Elins[j] 91 92 if E.Upo != nil && eo != nil { 93 Upo_idx := 0 94 for Upo_idx = 0; Upo_idx < len(eo); Upo_idx++ { 95 if E.Upo == eo[Upo_idx] { 96 break 97 } 98 } 99 o = Upo_idx 100 } else { 101 o = -999 102 } 103 104 if E.Upv != nil && eo != nil { 105 Upv_idx := 0 106 for Upv_idx = 0; Upv_idx < len(eo); Upv_idx++ { 107 if E.Upv == eo[Upv_idx] { 108 break 109 } 110 } 111 v = Upv_idx 112 } else { 113 v = -999 114 } 115 116 var l int 117 for l = 0; l < len(ei); l++ { 118 if E == ei[l] { 119 break 120 } 121 } 122 fmt.Printf("%3d (%-6s) %c %3d %3d", 123 l, C[i].Name, E.Id, o, v) 124 if E.Upo != nil { 125 fmt.Printf(" upo=(%-6s)", E.Upo.Cmp.Name) 126 } 127 if E.Upv != nil { 128 fmt.Printf(" upv=(%-6s)", E.Upv.Cmp.Name) 129 } 130 fmt.Printf("\n") 131 } 132 } 133 } 134 } 135 136 func elinfprint(id int, C []*COMPNT, eo []*ELOUT, ei []*ELIN) { 137 var E *ELIN 138 var Eo *ELOUT 139 var o, v int 140 141 if id == 1 { 142 fmt.Fprintf(Ferr, "ELIN\n n id upo upv\n") 143 } 144 145 for i := range C { 146 Ci := C[i] 147 148 for ii := 0; ii < Ci.Nout; ii++ { 149 Eo = Ci.Elouts[ii] 150 151 for j := 0; j < Eo.Ni; j++ { 152 E = Eo.Elins[j] 153 154 if E.Upo != nil && eo != nil { 155 for o = 0; o < len(eo); o++ { 156 if E.Upo == eo[o] { 157 break 158 } 159 } 160 } else { 161 o = -999 162 } 163 164 if E.Upv != nil && eo != nil { 165 for v = 0; v < len(eo); v++ { 166 if E.Upv == eo[v] { 167 break 168 } 169 } 170 } else { 171 v = -999 172 } 173 174 var l int = 0 175 for l = 0; l < len(ei); l++ { 176 if E == ei[l] { 177 break 178 } 179 } 180 fmt.Fprintf(Ferr, "%3d (%-6s) %c %3d %3d", 181 l, Ci.Name, E.Id, o, v) 182 if E.Upo != nil { 183 fmt.Fprintf(Ferr, " upo=(%-6s)", E.Upo.Cmp.Name) 184 } 185 if E.Upv != nil { 186 fmt.Fprintf(Ferr, " upv=(%-6s)", E.Upv.Cmp.Name) 187 } 188 fmt.Fprintf(Ferr, "\n") 189 } 190 } 191 } 192 } 193 194 func plistprint(Mpath []*MPATH, Pe []*PELM, Eo []*ELOUT, Ei []*ELIN) { 195 fmt.Printf("xxx plistprint\n") 196 idx_0, _ := FindPELM(Pe, Mpath[0].Plist[0].Pelm[0]) 197 for i, Mpathi := range Mpath { 198 fmt.Printf("\nMpath=[%d] %s sys=%c type=%c fluid=%c Nlpath= %d Ncv=%d lvcmx=%d\n", 199 i, Mpathi.Name, Mpathi.Sys, Mpathi.Type, Mpathi.Fluid, len(Mpathi.Plist), 200 Mpathi.Ncv, Mpathi.Lvcmx) 201 202 for j, pl := range Mpathi.Plist { 203 // 要素のグローバルインデックスの取得 204 idx, _ := FindPELM(Pe[idx_0:], pl.Pelm[0]) 205 206 fmt.Printf("PLIST\n n type Nelm Npump Nvav lvc Pelm G \n") 207 fmt.Printf("%3d %c %3d %3d %3d %3d %6.3f\n", 208 j, pl.Type, len(pl.Pelm), pl.Nvav, pl.Lvc, idx, pl.G) 209 210 fmt.Printf(" PELM n co ci elin eout\n") 211 for _, p := range pl.Pelm { 212 pIdx, _ := FindPELM(pl.Pelm, p) 213 pInIdx, _ := FindELIN(Ei, p.In) 214 pOutIdx, _ := FindELOUT(Eo, p.Out) 215 fmt.Printf(" %3d %c %c %4d %4d %s\n", 216 pIdx, p.Co, p.Ci, pInIdx, pOutIdx, p.Cmp.Name) 217 } 218 } 219 } 220 } 221 222 func FindPELM(pl []*PELM, p *PELM) (int, error) { 223 for i := 0; i < len(pl); i++ { 224 if p == pl[i] { 225 return i, nil 226 } 227 } 228 return -1, errors.New("Not Found") 229 } 230 231 func FindELIN(elins []*ELIN, elin *ELIN) (int, error) { 232 for i := 0; i < len(elins); i++ { 233 if elin == elins[i] { 234 return i, nil 235 } 236 } 237 return -1, errors.New("Not Found") 238 } 239 240 func FindELOUT(elouts []*ELOUT, elout *ELOUT) (int, error) { 241 for i := 0; i < len(elouts); i++ { 242 if elout == elouts[i] { 243 return i, nil 244 } 245 } 246 return -1, errors.New("Not Found") 247 }