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  }