github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/mceqcadat.go (about)

     1  //This file is part of EESLISM.
     2  //
     3  //Foobar is free software : you can redistribute itand /or modify
     4  //it under the terms of the GNU General Public License as published by
     5  //the Free Software Foundation, either version 3 of the License, or
     6  //(at your option) any later version.
     7  //
     8  //Foobar is distributed in the hope that it will be useful,
     9  //but WITHOUT ANY WARRANTY; without even the implied warranty of
    10  //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
    11  //GNU General Public License for more details.
    12  //
    13  //You should have received a copy of the GNU General Public License
    14  //along with Foobar.If not, see < https://www.gnu.org/licenses/>.
    15  
    16  /*  eqcadat.c  */
    17  
    18  package eeslism
    19  
    20  import (
    21  	"fmt"
    22  	"strings"
    23  )
    24  
    25  /* ----------------------------------------- */
    26  
    27  // 機器仕様入力
    28  func Eqcadata(f *EeTokens, Eqcat *EQCAT) {
    29  	var (
    30  		s  string
    31  		ce int
    32  		E  string
    33  	)
    34  
    35  	dsn := "Eqcadata"
    36  
    37  	// 各種別のカタログの領域を初期化
    38  	Eqcat.Hccca = make([]*HCCCA, 0)
    39  	Eqcat.Boica = make([]*BOICA, 0)
    40  	Eqcat.Refaca = make([]*REFACA, 0)
    41  	Eqcat.Collca = make([]*COLLCA, 0)
    42  	Eqcat.PVca = make([]*PVCA, 0)
    43  	Eqcat.Pipeca = make([]*PIPECA, 0)
    44  	Eqcat.Stankca = make([]*STANKCA, 0)
    45  	Eqcat.Hexca = make([]*HEXCA, 0)
    46  	Eqcat.Pumpca = make([]*PUMPCA, 0)
    47  	Eqcat.Vavca = make([]*VAVCA, 0)
    48  	Eqcat.Stheatca = make([]*STHEATCA, 0)
    49  	Eqcat.Thexca = make([]*THEXCA, 0)
    50  	Eqcat.OMvavca = make([]*OMVAVCA, 0)
    51  	Eqcat.Desica = make([]*DESICA, 0)
    52  	Eqcat.Evacca = make([]*EVACCA, 0)
    53  
    54  	// 圧縮機特性リストを reflist.efl から読み取る
    55  	Eqcat.Rfcmp = Refcmpdat()
    56  
    57  	// ポンプ・ファンの部分負荷特性の近似式係数 を pumpfanlst.efl から読み取る
    58  	Eqcat.Pfcmp = PFcmpdata()
    59  
    60  	E = fmt.Sprintf(ERRFMT, dsn)
    61  
    62  	for f.IsEnd() == false {
    63  		s = f.GetToken()
    64  		if s[0] == '*' {
    65  			break
    66  		}
    67  
    68  		eqpType := EqpType(s)
    69  
    70  		if eqpType == HCCOIL_TYPE {
    71  			Hccca := new(HCCCA)
    72  			Hccca.name = ""
    73  			for f.IsEnd() == false {
    74  				s = f.GetToken()
    75  				if s[0] == ';' {
    76  					break
    77  				}
    78  				if ce = strings.IndexRune(s, ';'); ce != -1 {
    79  					s = s[:ce]
    80  				}
    81  				if Hccdata(s, Hccca) != 0 {
    82  					fmt.Printf("%s %s\n", E, s)
    83  				}
    84  				if ce != -1 {
    85  					break
    86  				}
    87  			}
    88  
    89  			Eqcat.Hccca = append(Eqcat.Hccca, Hccca)
    90  		} else if eqpType == BOILER_TYPE {
    91  			Boica := new(BOICA)
    92  			Boica.name = ""
    93  			for f.IsEnd() == false {
    94  				s = f.GetToken()
    95  				if s[0] == ';' {
    96  					break
    97  				}
    98  				if ce = strings.IndexRune(s, ';'); ce != -1 {
    99  					s = s[:ce]
   100  				}
   101  				if Boidata(s, Boica) != 0 {
   102  					fmt.Printf("%s %s\n", E, s)
   103  				}
   104  				if ce != -1 {
   105  					break
   106  				}
   107  			}
   108  			Eqcat.Boica = append(Eqcat.Boica, Boica)
   109  		} else if eqpType == COLLECTOR_TYPE || eqpType == ACOLLECTOR_TYPE {
   110  			Collca := new(COLLCA)
   111  			Collca.name = ""
   112  			Collca.Fd = 0.9
   113  			ReadCatalogData(f, func(ss string) int { return Colldata(eqpType, ss, Collca) }, s, E)
   114  			Eqcat.Collca = append(Eqcat.Collca, Collca)
   115  		} else if eqpType == PV_TYPE {
   116  			PVca := new(PVCA)
   117  			PVca.Name = ""
   118  			ReadCatalogData(f, func(ss string) int { return PVcadata(ss, PVca) }, s, E)
   119  			Eqcat.PVca = append(Eqcat.PVca, PVca)
   120  		} else if eqpType == REFACOMP_TYPE {
   121  			Refaca := new(REFACA)
   122  			Refaca.name = ""
   123  			ReadCatalogData(f, func(ss string) int { return Refadata(ss, Refaca, Eqcat.Rfcmp) }, s, E)
   124  			Eqcat.Refaca = append(Eqcat.Refaca, Refaca)
   125  		} else if eqpType == PIPEDUCT_TYPE || eqpType == DUCT_TYPE {
   126  			Pipeca := new(PIPECA)
   127  			Pipeca.name = ""
   128  			ReadCatalogData(f, func(ss string) int { return Pipedata(eqpType, ss, Pipeca) }, s, E)
   129  			Eqcat.Pipeca = append(Eqcat.Pipeca, Pipeca)
   130  		} else if eqpType == STANK_TYPE {
   131  			Stankca := new(STANKCA)
   132  			Stankca.name = ""
   133  			ReadCatalogData(f, func(ss string) int { return Stankdata(f, ss, Stankca) }, s, E)
   134  			Eqcat.Stankca = append(Eqcat.Stankca, Stankca)
   135  		} else if eqpType == HEXCHANGR_TYPE {
   136  			Hexca := new(HEXCA)
   137  			Hexca.Name = ""
   138  			ReadCatalogData(f, func(ss string) int { return Hexdata(ss, Hexca) }, s, E)
   139  			Eqcat.Hexca = append(Eqcat.Hexca, Hexca)
   140  		} else if eqpType == PUMP_TYPE || eqpType == FAN_TYPE {
   141  			Pumpca := new(PUMPCA)
   142  			Pumpca.name = ""
   143  			Pumpca.Type = ""
   144  			Pumpca.val = nil
   145  			Pumpca.pfcmp = nil
   146  			ReadCatalogData(f, func(ss string) int { return Pumpdata(eqpType, ss, Pumpca, Eqcat.Pfcmp) }, s, E)
   147  			Eqcat.Pumpca = append(Eqcat.Pumpca, Pumpca)
   148  		} else if eqpType == VAV_TYPE || eqpType == VWV_TYPE {
   149  			vavca := new(VAVCA)
   150  			vavca.dTset = -999.0
   151  			vavca.Name = ""
   152  			ReadCatalogData(f, func(ss string) int { return VAVdata(eqpType, ss, vavca) }, s, E)
   153  			Eqcat.Vavca = append(Eqcat.Vavca, vavca)
   154  		} else if eqpType == OMVAV_TYPE || eqpType == OAVAV_TYPE {
   155  			OMvavca := new(OMVAVCA)
   156  			OMvavca.Name = ""
   157  			OMvavca.Gmax = -999.0
   158  			OMvavca.Gmin = -999.0
   159  			ReadCatalogData(f, func(ss string) int { return OMVAVdata(ss, OMvavca) }, s, E)
   160  			Eqcat.OMvavca = append(Eqcat.OMvavca, OMvavca)
   161  		} else if eqpType == STHEAT_TYPE {
   162  			stheatca := new(STHEATCA)
   163  			stheatca.Name = ""
   164  			stheatca.PCMName = ""
   165  			ReadCatalogData(f, func(ss string) int { return Stheatdata(ss, stheatca) }, s, E)
   166  			Eqcat.Stheatca = append(Eqcat.Stheatca, stheatca)
   167  		} else if eqpType == THEX_TYPE {
   168  			Thexca := new(THEXCA)
   169  			Thexca.Name = ""
   170  			Thexca.et = -999.0
   171  			ReadCatalogData(f, func(ss string) int { return Thexdata(ss, Thexca) }, s, E)
   172  			Eqcat.Thexca = append(Eqcat.Thexca, Thexca)
   173  		} else if eqpType == DESI_TYPE {
   174  			Desica := new(DESICA)
   175  			Desica.name = ""
   176  			ReadCatalogData(f, func(ss string) int { return Desiccantdata(ss, Desica) }, s, E)
   177  			Eqcat.Desica = append(Eqcat.Desica, Desica)
   178  		} else if eqpType == EVAC_TYPE {
   179  			Evacca := new(EVACCA)
   180  			Evacca.Name = ""
   181  			ReadCatalogData(f, func(ss string) int { return Evacdata(ss, Evacca) }, s, E)
   182  			Eqcat.Evacca = append(Eqcat.Evacca, Evacca)
   183  		} else {
   184  			fmt.Printf("%s %s\n", E, s)
   185  		}
   186  	}
   187  }
   188  
   189  func ReadCatalogData(f *EeTokens, reader func(string) int, s string, E string) {
   190  	var ce int
   191  	for f.IsEnd() == false {
   192  		ss := f.GetToken()
   193  		if ss[0] == ';' {
   194  			break
   195  		}
   196  		if ce = strings.IndexRune(ss, ';'); ce != -1 {
   197  			s = s[:ce]
   198  		}
   199  		if reader(ss) != 0 {
   200  			fmt.Printf("%s %s\n", E, s)
   201  		}
   202  		if ce != -1 {
   203  			break
   204  		}
   205  	}
   206  }