program Newton2Vars
    implicit none
    real(8) :: T_abs, T_sub, T_a, T_sky
    real(8) :: G_GHI, A_abs, alpha_abs, epsilon_abs
    real(8) :: sigma, R_conv_abs, R_cond_abs, R_cond_sub, R_conv_sub
    real(8) :: f1, f2, J11, J12, J21, J22
    real(8) :: dT_abs, dT_sub, detJ
    real(8) :: tol
    integer :: iter, max_iter

    sigma = 5.670374e-8

    ! ==== Datos de ejemplo ====
    G_GHI      = 1000
    A_abs      = 0.6
    alpha_abs  = 0.9
    epsilon_abs= 0.2
    T_a        = 298.2
    T_sky      = 298.2
    R_conv_abs = 0.0464
    R_cond_abs = 0.00002439
    R_cond_sub = 0.00004623
    R_conv_sub = 0.04

    ! ==== Configuración Newton–Raphson ====
    T_abs = 330.0
    T_sub = 320.0
    tol = 1.0d-6
    max_iter = 50

    do iter = 1, max_iter
        ! Funciones
        f1 = G_GHI*A_abs*alpha_abs &
            - (T_abs - T_a)/R_conv_abs &
            - epsilon_abs*sigma*A_abs*(T_abs**4 - T_sky**4) &
            - (T_abs - T_sub)/(R_cond_abs + R_cond_sub)

        f2 = (T_abs - T_sub)/(R_cond_abs + R_cond_sub) &
            - (T_sub - T_a)/R_conv_sub

        ! Jacobiano
        J11 = -1.0d0/R_conv_abs - 4.0d0*epsilon_abs*sigma*A_abs*T_abs**3 - 1.0d0/(R_cond_abs + R_cond_sub)
        J12 =  1.0d0/(R_cond_abs + R_cond_sub)
        J21 =  1.0d0/(R_cond_abs + R_cond_sub)
        J22 = -1.0d0/(R_cond_abs + R_cond_sub) - 1.0d0/R_conv_sub

        ! Determinante
        detJ = J11*J22 - J12*J21

        ! Correcciones
        dT_abs = (-f1*J22 + f2*J12) / detJ
        dT_sub = (-J11*f2 + J21*f1) / detJ

        ! Actualizar
        T_abs = T_abs + dT_abs
        T_sub = T_sub + dT_sub

        ! Comprobar convergencia
        if (max(abs(dT_abs), abs(dT_sub)) < tol) exit
    end do

    ! Resultados
    print *, "Iteraciones: ", iter
    print *, "T_abs (K): ", T_abs, "  T_abs (°C): ", T_abs - 273.15d0
    print *, "T_sub (K): ", T_sub, "  T_sub (°C): ", T_sub - 273.15d0

end program Newton2Vars

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: