通过日照时数计算每天RAD(太阳辐射)值

通过日照时数计算每天RAD(太阳辐射)值

代码方法:

复制代码
 // 计算RAD
    /*
        参数: 
            ssd(日照时数)= 7.4
            year(年份) = 1951
            moon(月) = 1
            sun(日)= 12
            lat(纬度)= 35.583333
    */
    function getRAD(ssd, year, moon, sun, lat) {
        // 日序数
        let moonNum = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        let sunNum = 0
        moonNum.forEach((e, i) => {
            if (i < moon-1) {
                sunNum += e
            }
        })
        sunNum += sun
        // 判断闰年 2月加一天
        if (((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) && moon > 2) {
            sunNum += 1
        }
        // 一年天数
        let yearNum = 365
        // 判断闰年
        if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
            yearNum = 366
        }
        let jiao = 2 * Math.PI * (sunNum - 1) / yearNum
        let j2 = jiao * 2
        let j3 = jiao * 3
        let a1 = 0.399912 * Math.cos(jiao)
        let a2 = 0.070257 * Math.sin(jiao)
        let a3 = 0.006758 * Math.cos(j2)
        let a4 = 0.000907 * Math.sin(j2)
        let a5 = 0.002697 * Math.cos(j3)
        let a6 = 0.00148 * Math.sin(j3)
        let sita1 = 180 / Math.PI
        let sita2 = 0.006918 - a1 + a2 - a3 + a4 - a5 + a6
        let sita = sita1 * sita2
        let tansita = Math.tan(sita * Math.PI / 180)
        let tanlat = Math.tan(lat * Math.PI / 180)
        let ws1 = -tansita * tanlat
        let ws = Math.acos(ws1) * (180 / Math.PI)
        let sl = 2 / 15 * ws
        let e0 = 1.00011 + 0.034221 * Math.cos(jiao) + 0.00128 * Math.sin(jiao) + 0.000719 * Math.cos(j2) + 0.000077 * Math.sin(j2)
        let pi1 = 1 / Math.PI
        let gsc = 118.108
        let qq1 = Math.cos(lat * Math.PI / 180)
        let qq2 = Math.cos(sita * Math.PI / 180)
        let qq3 = Math.sin(ws * Math.PI / 180)
        let h01 = qq1 * qq2 * qq3
        let qq21 = Math.PI / 180
        let qq22 = Math.sin(lat * Math.PI / 180)
        let qq23 = Math.sin(sita * Math.PI / 180)
        let h02 = qq21 * qq22 * qq23 * ws
        let h0 = e0 * pi1 * gsc * (h01 + h02)
        let h1 = h0 * 0.8

        let RAD = h1 * (0.248 + 0.752 * ssd / sl)
        return RAD
    }

    console.log(getRAD(7.4, 2005, 3, 1, 35.583333))
复制代码

输出RAD的值,单位kj/mol

 

 

参考文献:

逐日太阳辐射的模拟计算.pdf       @顾

钻研不易,转载请注明出处。。。。。。

posted @   莫小龙  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示