/
mill
/
emp
Обзор
Документация
Войти
/
mill
/
emp
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
main.go
107 строк
3 KB
EdieLay
Параметры парса из ThermalParameters в JSON
04 май 2024, 17:56
04 май 2024, 17:56
b9756a5
Код
Авторство
О чём код?
package main import ( "encoding/json" "fmt" "os" "gitverse.ru/EdieLay/emp/thermal" ) func main() { jsonStr := `{"deltaX":0.1,"t0":0,"deltaT":0.1,"totalX":51,"totalT":51,"aSqr":1,"phi":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"u0":[5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],"uN":[0,0.1,0.2,0.30000000000000004,0.4,0.5,0.6,0.7,0.7999999999999999,0.8999999999999999,0.9999999999999999,1.0999999999999999,1.2,1.3,1.4000000000000001,1.5000000000000002,1.6000000000000003,1.7000000000000004,1.8000000000000005,1.9000000000000006,2.0000000000000004,2.1000000000000005,2.2000000000000006,2.3000000000000007,2.400000000000001,2.500000000000001,2.600000000000001,2.700000000000001,2.800000000000001,2.9000000000000012,3.0000000000000013,3.1000000000000014,3.2000000000000015,3.3000000000000016,3.4000000000000017,3.5000000000000018,3.600000000000002,3.700000000000002,3.800000000000002,3.900000000000002,4.000000000000002,4.100000000000001,4.200000000000001,4.300000000000001,4.4,4.5,4.6,4.699999999999999,4.799999999999999,4.899999999999999,4.999999999999998],"leftOdd":true,"rightOdd":true}` var th thermal.ThermalParameters err := json.Unmarshal([]byte(jsonStr), &th) if err != nil { fmt.Println(err) return } fmt.Println(th) u, err := thermal.SolveDefaultProblem(&th) if err != nil { fmt.Println(err) return } file, err := os.Create("points.txt") if err != nil { fmt.Println(err) return } defer file.Close() file.WriteString(fmt.Sprintf("%d\n", th.N)) for i := 0; i < th.N; i++ { file.WriteString(fmt.Sprintf("%f ", float64(i)*th.H)) } file.WriteString("\n") file.WriteString(fmt.Sprintf("%d\n", th.TotalT)) for i := 0; i < th.TotalT; i++ { file.WriteString(fmt.Sprintf("%f ", th.T0+float64(i)*th.DeltaT)) } file.WriteString("\n") for _, row := range u { for _, val := range row { file.WriteString(fmt.Sprintf("%f ", val)) } file.WriteString("\n") } } func doProblem() { therm := thermal.ThermalParameters{} therm.H = 0.01 therm.T0 = 0 therm.TotalT = 100 therm.DeltaT = 0.1 therm.N = 100 therm.ASqr = 0.01 therm.LeftOdd = true therm.RightOdd = false therm.Phi = make([]float64, therm.N) therm.U0 = make([]float64, therm.TotalT) therm.UN = make([]float64, therm.TotalT) gh := thermal.GreenhouseParameters{} gh.Height = 1.0 gh.Z = make([]float64, therm.TotalT) for i := 0; i < therm.TotalT/2; i++ { gh.Z[i] = float64(i) * 0.1 } for i := therm.TotalT / 2; i < therm.TotalT; i++ { gh.Z[i] = 100 - float64(i)*0.1 } therm.U0 = gh.Z gh.MaxTemp = 100 gh.MinTemp = 0 gh.MaxDeltaTemp = 2 u, err := thermal.SolveDefaultProblem(&therm) if err != nil { fmt.Println(err) return } file, err := os.Create("points.txt") if err != nil { fmt.Println(err) return } defer file.Close() file.WriteString(fmt.Sprintf("%d\n", therm.N)) for i := 0; i < therm.N; i++ { file.WriteString(fmt.Sprintf("%f ", float64(i)*therm.H)) } file.WriteString("\n") file.WriteString(fmt.Sprintf("%d\n", therm.TotalT)) for i := 0; i < therm.TotalT; i++ { file.WriteString(fmt.Sprintf("%f ", therm.T0+float64(i)*therm.DeltaT)) } file.WriteString("\n") for _, row := range u { for _, val := range row { file.WriteString(fmt.Sprintf("%f ", val)) } file.WriteString("\n") } }