github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/eenvptr.go (about) 1 package eeslism 2 3 import ( 4 "fmt" 5 "strconv" 6 "strings" 7 ) 8 9 // システム要素周囲条件(温度など)のポインター 10 func envptr(s string, Simc *SIMCONTL, Compnt []*COMPNT, Wd *WDAT, Exsf *EXSFS) *float64 { 11 var err error 12 var vptr VPTR 13 var dmy []*MPATH 14 var val *float64 15 16 if isStrDigit(s) { 17 // 固定値へのポインタを作成 18 num, err2 := readFloat(s) 19 if err2 != nil { 20 panic(err2) 21 } 22 val = CreateConstantValuePointer(num) 23 } else { 24 vptr, _, err = kynameptr(s, Simc, Compnt, dmy, Wd, Exsf) 25 if err == nil && vptr.Type == VAL_CTYPE { 26 val = vptr.Ptr.(*float64) 27 } else { 28 fmt.Println("<*envptr>", s) 29 } 30 } 31 32 if val == nil { 33 fmt.Printf("xxxx %s\n", s) 34 } 35 36 return val 37 } 38 39 func roomptr(s string, Compnt []*COMPNT) *ROOM { 40 var rm *ROOM 41 42 for i := range Compnt { 43 if s != "" && Compnt[i].Name != "" && strings.Compare(s, Compnt[i].Name) == 0 { 44 rm, _ = Compnt[i].Eqp.(*ROOM) 45 break 46 } 47 } 48 49 return rm 50 } 51 52 func isStrDigit(s string) bool { 53 _, err := strconv.ParseFloat(s, 64) 54 return err == nil 55 } 56 57 /*********** Satoh Create 2001/5/3 ********************/ 58 func hccptr(c byte, s string, Compnt []*COMPNT, m *rune) interface{} { 59 var i int 60 var h interface{} 61 62 h = nil 63 64 for i = range Compnt { 65 if s != "" && s == Compnt[i].Name { 66 if c == 'c' && Compnt[i].Eqptype == HCCOIL_TYPE { 67 h = Compnt[i].Eqp.(*HCC) 68 *m = 'c' 69 return h 70 } else if c == 'h' && Compnt[i].Eqptype == HCLOADW_TYPE { 71 h = Compnt[i].Eqp.(*HCLOAD) 72 *m = 'h' 73 return h 74 } 75 } 76 } 77 78 return h 79 } 80 81 /*********** Satoh Create 2003/5/17 ********************/ 82 /* 放射パネルの検索 */ 83 84 func rdpnlptr(s string, Compnt []*COMPNT) *RDPNL { 85 var i int 86 var h *RDPNL 87 88 h = nil 89 90 for i = range Compnt { 91 if s == Compnt[i].Name { 92 if Compnt[i].Eqptype == RDPANEL_TYPE { 93 h = Compnt[i].Eqp.(*RDPNL) 94 return h 95 } 96 } 97 } 98 99 return h 100 }