github.com/archlabjp/eeslism-go@v0.0.0-20231109122333-4bb7bfcdf292/eeslism/dbgprip1.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  package eeslism
    17  
    18  import (
    19  	"fmt"
    20  	"io"
    21  	"os"
    22  )
    23  
    24  /* -------------------------------- */
    25  
    26  func dprdayweek(daywk []int) {
    27  	const dmax = 366
    28  
    29  	fmt.Print("---  Day of week -----\n   ")
    30  	for d := 0; d < 8; d++ {
    31  		fmt.Printf("  %s=%d  ", DAYweek[d], d)
    32  	}
    33  	fmt.Println()
    34  
    35  	k := 1
    36  	for d := 1; d < dmax; d++ {
    37  		if FNNday(k, 1) == d {
    38  			fmt.Printf("\n%2d - ", k)
    39  			k++
    40  		}
    41  		fmt.Printf("%2d", daywk[d])
    42  	}
    43  	fmt.Println()
    44  }
    45  
    46  /* ----------------------------------------------------------------- */
    47  
    48  // スケジュール設定のデバッグ出力
    49  func (Schdl *SCHDL) dprschtable() {
    50  
    51  	Ssn, Wkd, Dh, Dw := Schdl.Seasn, Schdl.Wkdy, Schdl.Dsch, Schdl.Dscw
    52  
    53  	Ns := len(Ssn)
    54  	Nw := len(Wkd)
    55  	Nsc := len(Dh)
    56  	Nsw := len(Dw)
    57  
    58  	if DEBUG {
    59  		fmt.Printf("\n*** dprschtable  ***\n")
    60  		fmt.Printf("\n=== Schtable end  is=%d  iw=%d  sc=%d  sw=%d\n", Ns, Nw, Nsc, Nsw)
    61  
    62  		// 季節設定の出力
    63  		for _, Seasn := range Ssn {
    64  			fmt.Printf("\n- %s", Seasn.name)
    65  
    66  			for js := range Seasn.sday {
    67  				sday := Seasn.sday[js]
    68  				eday := Seasn.eday[js]
    69  				fmt.Printf("  %4d-%4d", sday, eday)
    70  			}
    71  		}
    72  
    73  		// 曜日設定の出力
    74  		for _, Wkdy := range Wkd {
    75  			fmt.Printf("\n- %s", Wkdy.name)
    76  
    77  			for _, wday := range Wkdy.wday {
    78  				if wday {
    79  					fmt.Printf("   1")
    80  				} else {
    81  					fmt.Printf("   0")
    82  				}
    83  			}
    84  		}
    85  
    86  		// 1日の設定値スケジュールの出力
    87  		for sc, Dsch := range Dh {
    88  			fmt.Printf("\n-VL   %10s (%2d) ", Dsch.name, sc)
    89  
    90  			for jsc := range Dsch.stime {
    91  				stime := Dsch.stime[jsc]
    92  				val := Dsch.val[jsc]
    93  				etime := Dsch.etime[jsc]
    94  				fmt.Printf("  %4d-(%6.2f)-%4d", stime, val, etime)
    95  			}
    96  		}
    97  
    98  		// 1日の切替スケジュールの出力
    99  		for sw, Dscw := range Dw {
   100  			fmt.Printf("\n-SW   %10s (%2d) ", Dscw.name, sw)
   101  
   102  			for jsw := range Dscw.stime {
   103  				stime := Dscw.stime[jsw]
   104  				mode := Dscw.mode[jsw]
   105  				etime := Dscw.etime[jsw]
   106  				fmt.Printf("  %4d-( %c)-%4d", stime, mode, etime)
   107  			}
   108  		}
   109  	}
   110  
   111  	if Ferr != nil {
   112  		fmt.Fprintf(Ferr, "\n*** dprschtable  ***\n")
   113  		fmt.Fprintf(Ferr, "\n=== Schtable end  is=%d  iw=%d  sc=%d  sw=%d\n", Ns, Nw, Nsc, Nsw)
   114  
   115  		// 季節設定の出力
   116  		for _, Seasn := range Ssn {
   117  			fmt.Fprintf(Ferr, "\n\t%s", Seasn.name)
   118  
   119  			for js := range Seasn.sday {
   120  				sday := Seasn.sday[js]
   121  				eday := Seasn.eday[js]
   122  				fmt.Fprintf(Ferr, "\t%d-%d", sday, eday)
   123  			}
   124  		}
   125  
   126  		// 曜日の出力
   127  		for j := range DAYweek {
   128  			fmt.Fprintf(Ferr, "\t%s", DAYweek[j])
   129  		}
   130  
   131  		// 曜日設定の出力
   132  		for _, Wkdy := range Wkd {
   133  			fmt.Fprintf(Ferr, "\n%s", Wkdy.name)
   134  
   135  			for _, wday := range Wkdy.wday {
   136  				if wday {
   137  					fmt.Fprintf(Ferr, "\t1")
   138  				} else {
   139  					fmt.Fprintf(Ferr, "\t0")
   140  				}
   141  			}
   142  		}
   143  
   144  		// 1日の設定値スケジュールの出力
   145  		for sc, Dsch := range Dh {
   146  			fmt.Fprintf(Ferr, "\nVL\t%s\t[%d]", Dsch.name, sc)
   147  
   148  			for jsc := range Dsch.stime {
   149  				stime := Dsch.stime[jsc]
   150  				val := Dsch.val[jsc]
   151  				etime := Dsch.etime[jsc]
   152  				fmt.Fprintf(Ferr, "\t%d-(%.2g)-%d", stime, val, etime)
   153  			}
   154  		}
   155  
   156  		// 1日の切替スケジュールの出力
   157  		for sw, Dscw := range Dw {
   158  			fmt.Fprintf(Ferr, "\nSW\t%s\t[%d]", Dscw.name, sw)
   159  
   160  			for jsw := range Dscw.stime {
   161  				stime := Dscw.stime[jsw]
   162  				mode := Dscw.mode[jsw]
   163  				etime := Dscw.etime[jsw]
   164  				fmt.Fprintf(Ferr, "\t%d-(%c)-%d", stime, mode, etime)
   165  			}
   166  		}
   167  
   168  		fmt.Fprintf(Ferr, "\n\n")
   169  	}
   170  }
   171  
   172  /* ----------------------------------------------------------------- */
   173  
   174  func dprschdata(Sh []SCH, Sw []SCH) {
   175  	const dmax = 366
   176  
   177  	Nsc := len(Sh)
   178  	Nsw := len(Sw)
   179  
   180  	if DEBUG {
   181  		fmt.Printf("\n*** dprschdata  ***\n")
   182  		fmt.Printf("\n== len(Sch)=%d   len(Scw)=%d\n", Nsc, Nsw)
   183  
   184  		for i := 0; i < Nsc; i++ {
   185  			Sch := &Sh[i]
   186  			fmt.Printf("\nSCH= %s (%2d) ", Sch.name, i)
   187  
   188  			k := 1
   189  			for d := 1; d < dmax; d++ {
   190  				day := Sch.day[d]
   191  				if FNNday(k, 1) == d {
   192  					fmt.Printf("\n%2d - ", k)
   193  					k++
   194  				}
   195  				fmt.Printf("%2d", day)
   196  			}
   197  		}
   198  
   199  		for i := 0; i < Nsw; i++ {
   200  			Scw := &Sw[i]
   201  			fmt.Printf("\nSCW= %s (%2d) ", Scw.name, i)
   202  			k := 1
   203  			for d := 1; d < dmax; d++ {
   204  				day := Scw.day[d]
   205  				if FNNday(k, 1) == d {
   206  					fmt.Printf("\n%2d - ", k)
   207  					k++
   208  				}
   209  				fmt.Printf("%2d", day)
   210  			}
   211  		}
   212  		fmt.Printf("\n")
   213  	}
   214  
   215  	if Ferr != nil {
   216  		fmt.Fprintf(Ferr, "\n*** dprschdata  ***\n")
   217  		fmt.Fprintf(Ferr, "\n== len(Sch)=%d   len(Scw)=%d\n", Nsc, Nsw)
   218  
   219  		for i := 0; i < Nsc; i++ {
   220  			Sch := &Sh[i]
   221  			fmt.Fprintf(Ferr, "\nSCH=%s\t[%d]\t", Sch.name, i)
   222  
   223  			k := 1
   224  			for d := 1; d < dmax; d++ {
   225  				day := Sch.day[d]
   226  				if FNNday(k, 1) == d {
   227  					fmt.Fprintf(Ferr, "\n%2d - ", k)
   228  					k++
   229  				}
   230  				fmt.Fprintf(Ferr, "%2d", day)
   231  			}
   232  		}
   233  
   234  		for i := 0; i < Nsw; i++ {
   235  			Scw := &Sw[i]
   236  			fmt.Fprintf(Ferr, "\nSCW= %s (%2d) ", Scw.name, i)
   237  			k := 1
   238  			for d := 1; d < dmax; d++ {
   239  				day := Scw.day[d]
   240  				if FNNday(k, 1) == d {
   241  					fmt.Fprintf(Ferr, "\n%2d - ", k)
   242  					k++
   243  				}
   244  				fmt.Fprintf(Ferr, "%2d", day)
   245  			}
   246  		}
   247  		fmt.Fprintf(Ferr, "\n")
   248  	}
   249  }
   250  
   251  /* ----------------------------------------------------------------- */
   252  
   253  func dprachv(Room []ROOM) {
   254  
   255  	f := func(s io.Writer) {
   256  		fmt.Fprintln(Ferr, "\n*** dprachv***")
   257  
   258  		for i := range Room {
   259  			Rm := Room[i]
   260  			fmt.Fprintf(Ferr, "to rm: %-10s   from rms(sch):", Rm.Name)
   261  
   262  			for j := 0; j < Rm.Nachr; j++ {
   263  				A := Rm.achr[j]
   264  				fmt.Fprintf(Ferr, "  %-10s (%3d)", Room[A.rm].Name, A.sch)
   265  			}
   266  			fmt.Fprintln(Ferr)
   267  		}
   268  	}
   269  
   270  	if DEBUG {
   271  		f(os.Stdout)
   272  	}
   273  
   274  	if Ferr != nil {
   275  		f(Ferr)
   276  	}
   277  }
   278  
   279  /* ----------------------------------------------------------------- */
   280  
   281  func (exsfs *EXSFS) dprexsf() {
   282  	if exsfs.Exs == nil {
   283  		return
   284  	}
   285  
   286  	if DEBUG {
   287  		fmt.Println("\n*** dprexsf ***")
   288  		for i, Exs := range exsfs.Exs {
   289  			fmt.Printf("%2d  %-11s  typ=%c Wa=%6.2f Wb=%5.2f Rg=%4.2f  z=%5.2f edf=%6.2e\n",
   290  				i, Exs.Name, Exs.Typ, Exs.Wa, Exs.Wb, Exs.Rg, Exs.Z, Exs.Erdff)
   291  		}
   292  	}
   293  
   294  	if Ferr != nil {
   295  		fmt.Fprintln(Ferr, "\n*** dprexsf ***")
   296  		fmt.Fprintln(Ferr, "\tNo.\tName\ttyp\tWa\tWb\tRg\tz\tedf")
   297  
   298  		for i, Exs := range exsfs.Exs {
   299  			fmt.Fprintf(Ferr, "\t%d\t%s\t%c\t%.4g\t%.4g\t%.2g\t%.2g\t%.2g\n",
   300  				i, Exs.Name, Exs.Typ, Exs.Wa, Exs.Wb, Exs.Rg, Exs.Z, Exs.Erdff)
   301  		}
   302  	}
   303  }
   304  
   305  /* ----------------------------------------------------------------- */
   306  
   307  func (Rmvls *RMVLS) dprwwdata() {
   308  	if DEBUG {
   309  		fmt.Printf("\n*** dprwwdata ***\nWALLdata\n")
   310  
   311  		for i, Wall := range Rmvls.Wall {
   312  			fmt.Printf("\nWall i=%d %s R=%5.3f IP=%d Ei=%4.2f Eo=%4.2f as=%4.2f\n", i, get_string_or_null(Wall.name), Wall.Rwall, Wall.Ip, Wall.Ei, Wall.Eo, Wall.as)
   313  
   314  			for j := 0; j < Wall.N; j++ {
   315  				w := &Wall.welm[j]
   316  				fmt.Printf("   %2d  %-10s %5.3f %2d\n", j, w.Code, w.L, w.ND)
   317  			}
   318  		}
   319  
   320  		fmt.Printf("\nWINDOWdata\n")
   321  
   322  		for _, Window := range Rmvls.Window {
   323  			fmt.Printf("windows  %s\n", Window.Name)
   324  			fmt.Printf(" R=%f t=%f B=%f  Ei=%f Eo=%f\n", Window.Rwall, Window.tgtn, Window.Bn, Window.Ei, Window.Eo)
   325  		}
   326  	}
   327  
   328  	if Ferr != nil {
   329  		fmt.Fprintf(Ferr, "\n*** dprwwdata ***\nWALLdata\n")
   330  
   331  		for i, Wall := range Rmvls.Wall {
   332  			fmt.Fprintf(Ferr, "\nWall[%d]\t%s\tR=%.3g\tIP=%d\tEi=%.2g\tEo=%.2g\tas=%.2g\n", i, Wall.name, Wall.Rwall, Wall.Ip, Wall.Ei, Wall.Eo, Wall.as)
   333  
   334  			fmt.Fprintf(Ferr, "\tNo.\tcode\tL\tND\n")
   335  
   336  			for j := 0; j < Wall.N; j++ {
   337  				w := &Wall.welm[j]
   338  				fmt.Fprintf(Ferr, "\t%d\t%s\t%.3g\t%d\n", j, w.Code, w.L, w.ND)
   339  			}
   340  		}
   341  
   342  		fmt.Fprintf(Ferr, "\nWINDOWdata\n")
   343  
   344  		for i, Window := range Rmvls.Window {
   345  			fmt.Fprintf(Ferr, "windows[%d]\t%s\n", i, Window.Name)
   346  			fmt.Fprintf(Ferr, "\tR=%.3g\tt=%.2g\tB=%.2g\tEi=%.2g\tEo=%.2g\n", Window.Rwall,
   347  				Window.tgtn, Window.Bn, Window.Ei, Window.Eo)
   348  		}
   349  	}
   350  }
   351  
   352  /* ----------------------------------------------------------------- */
   353  
   354  func (Rmvls *RMVLS) dprroomdata() {
   355  	if DEBUG {
   356  		fmt.Printf("\n*** dprroomdata ***\n")
   357  
   358  		for i, Room := range Rmvls.Room {
   359  			fmt.Printf("\n==room=(%d)    %s   N=%d  Ntr=%d Nrp=%d  V=%8.1f   MRM=%10.4e\n",
   360  				i, Room.Name, Room.N, Room.Ntr, Room.Nrp, Room.VRM, Room.MRM)
   361  			fmt.Printf("   Floor area=%6.2f   Total surface area=%6.2f\n", Room.FArea, Room.Area)
   362  
   363  			fmt.Printf("   Gve=%f    Gvi=%f\n",
   364  				Room.Gve, Room.Gvi)
   365  			fmt.Printf("   Light=%f  Ltyp=%c  ", Room.Light, Room.Ltyp)
   366  			fmt.Printf("  Nhm=%f\n",
   367  				Room.Nhm)
   368  			fmt.Printf("  Apsc=%f  Apsr=%f   ",
   369  				Room.Apsc, Room.Apsr)
   370  			fmt.Printf("  Apl=%f \n", Room.Apl)
   371  
   372  			for j := 0; j < Room.N; j++ {
   373  				Sdd := Rmvls.Sd[Room.Brs+j]
   374  				fmt.Printf(" %2d  ble=%c typ=%c name=%8s exs=%2d nxrm=%2d nxn=%2d ",
   375  					Room.Brs+j, Sdd.ble, Sdd.typ, get_string_or_null(Sdd.Name), Sdd.exs, Sdd.nxrm, Sdd.nxn)
   376  				fmt.Printf("wd=%2d Nfn=%2d A=%5.1f mwside=%c mwtype=%c Ei=%.2f Eo=%.2f\n",
   377  					Sdd.wd, Sdd.Nfn, Sdd.A, Sdd.mwside, Sdd.mwtype, Sdd.Ei, Sdd.Eo)
   378  			}
   379  		}
   380  	}
   381  
   382  	if Ferr != nil {
   383  		fmt.Fprintf(Ferr, "\n*** dprroomdata ***\n")
   384  
   385  		for i, Room := range Rmvls.Room {
   386  			fmt.Fprintf(Ferr, "\n==room=(%d)\t%s\tN=%d\tNtr=%d\tNrp=%d\tV=%.3g\tMRM=%.2g\n",
   387  				i, Room.Name, Room.N, Room.Ntr, Room.Nrp, Room.VRM, Room.MRM)
   388  			fmt.Fprintf(Ferr, "\tFloor_area=%.3g\tTotal_surface_area=%.2g\n", Room.FArea, Room.Area)
   389  
   390  			fmt.Fprintf(Ferr, "\tGve=%.2g\tGvi=%.2g\n", Room.Gve, Room.Gvi)
   391  			fmt.Fprintf(Ferr, "\tLight=%.2g\tLtyp=%c", Room.Light, Room.Ltyp)
   392  			fmt.Fprintf(Ferr, "\tNhm=%.2g\n", Room.Nhm)
   393  			fmt.Fprintf(Ferr, "\tApsc=%.2g\tApsr=%.2g", Room.Apsc, Room.Apsr)
   394  			fmt.Fprintf(Ferr, "\tApl=%.2g\n", Room.Apl)
   395  
   396  			fmt.Fprintf(Ferr, "\tNo.\tble\ttyp\tname\texs\tnxrmd\tnxn\t")
   397  			fmt.Fprintf(Ferr, "wd\tNfn\tA\tmwside\tmwtype\tEi\tEo\n")
   398  
   399  			for j := 0; j < Room.N; j++ {
   400  				Sdd := Rmvls.Sd[Room.Brs+j]
   401  				fmt.Fprintf(Ferr, "\t%d\t%c\t%c\t%s\t%d\t%d\t%d\t", Room.Brs+j, Sdd.ble, Sdd.typ, Sdd.Name, Sdd.exs, Sdd.nxrm, Sdd.nxn)
   402  				fmt.Fprintf(Ferr, "%d\t%d\t%.3g\t%c\t%c\t%.2f\t%.2f\n", Sdd.wd, Sdd.Nfn, Sdd.A, Sdd.mwside, Sdd.mwtype, Sdd.Ei, Sdd.Eo)
   403  			}
   404  		}
   405  	}
   406  }
   407  
   408  /* ----------------------------------------------------------------- */
   409  
   410  func (Rmvls *RMVLS) dprballoc() {
   411  	if DEBUG {
   412  		fmt.Println("\n*** dprballoc ***")
   413  
   414  		for mw, Mw := range Rmvls.Mw {
   415  			id := Rmvls.Sd[Mw.ns].wd
   416  			fmt.Printf(" %2d n=%2d  rm=%2d  nxrm=%2d wd=%2d wall=%s M=%2d A=%.2f\n",
   417  				mw, Mw.ns, Mw.rm, Mw.nxrm, id, get_string_or_null(Mw.wall.name), Mw.M, Mw.sd.A)
   418  		}
   419  	}
   420  	if Ferr != nil {
   421  		fmt.Fprintln(Ferr, "\n*** dprballoc ***")
   422  		fmt.Fprintln(Ferr, "\tNo.\tn\trm\tnxrm\twd\twall\tM\tA")
   423  
   424  		for mw, Mw := range Rmvls.Mw {
   425  			id := Rmvls.Sd[Mw.ns].wd
   426  			fmt.Fprintf(Ferr, "\t%d\t%d\t%d\t%d\t%d\t%s\t%d\t%.2g\n",
   427  				mw, Mw.ns, Mw.rm, Mw.nxrm, id, Mw.wall.name, Mw.M, Mw.sd.A)
   428  		}
   429  	}
   430  }