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  }