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

     1  package eeslism
     2  
     3  import (
     4  	"math"
     5  )
     6  
     7  /* 地中温度の計算 */
     8  
     9  func Tearth(Z float64, n int, nmx int, Tgro float64, DTg float64, a float64) float64 {
    10  	const t = 31.536e+6
    11  	Cz := Z * math.Sqrt(math.Pi/(a*t))
    12  	Tearth := Tgro + 0.5*DTg*math.Exp(-Cz)*math.Cos(float64(n-nmx)*0.017214-Cz)
    13  	return Tearth
    14  }
    15  
    16  /* -------------------------------------------------- */
    17  
    18  func Exsfter(day int, daymx int, Tgrav float64, DTgr float64, Exs []*EXSF, Wd *WDAT, tt int) {
    19  	if Exs != nil {
    20  		for i := range Exs {
    21  			_Exs := Exs[i]
    22  			if _Exs.Typ == EXSFType_E {
    23  				_Exs.Tearth = Tearth(_Exs.Z, day, daymx, Tgrav, DTgr, _Exs.Erdff)
    24  			} else if _Exs.Typ == EXSFType_e {
    25  				_Exs.Tearth = Wd.EarthSurface[day*24+tt]
    26  			}
    27  		}
    28  	}
    29  }