Ignore:
Timestamp:
May 30, 2020, 5:37:19 PM (5 years ago)
Author:
oboucher
Message:

Addition of two diagnostics for load factors for onshore and offshore wind mills

Location:
LMDZ6/trunk/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r3678 r3691  
    279279  TYPE(ctrl_out), SAVE :: o_wind100m = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
    280280    'wind100m', '100-m wind speed', 'm/s', (/ ('', i=1, 10) /))
     281  TYPE(ctrl_out), SAVE :: o_loadfactor_wind_onshore = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
     282    'load_factor_wind_onshore', 'Load factor for onshore windmill', '-', (/ ('', i=1, 10) /))
     283  TYPE(ctrl_out), SAVE :: o_loadfactor_wind_offshore = ctrl_out((/ 1, 10, 10, 10, 10, 10, 11, 11, 11, 11/), &
     284    'load_factor_wind_offshore', 'Load factor for offshore windmill', '-', (/ ('', i=1, 10) /))
    281285  TYPE(ctrl_out), SAVE :: o_wind10max = ctrl_out((/ 10, 1, 10, 10, 10, 10, 11, 11, 11, 11/), &
    282286    'wind10max', '10m wind speed max', 'm/s', &
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r3666 r3691  
    4040         o_q2m, o_ustar, o_u10m, o_v10m, &
    4141         o_wind10m, o_wind10max, o_wind100m, o_gusts, o_sicf, &
     42         o_loadfactor_wind_onshore, o_loadfactor_wind_offshore, &
    4243         o_psol, o_mass, o_qsurf, o_qsol, &
    4344         o_precip, o_rain_fall, o_rain_con, o_ndayrain, o_plul, o_pluc, o_plun, &
     
    411412    INTEGER :: itau_w
    412413    INTEGER :: i, iinit, iinitend=1, iff, iq, iiq, nsrf, k, ll, naero
    413     REAL, DIMENSION (klon) :: zx_tmp_fi2d, zpt_conv2d
     414    REAL, DIMENSION (klon) :: zx_tmp_fi2d, zpt_conv2d, wind100m
    414415    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
    415416    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
     
    425426    INTEGER, SAVE :: kmax_100m
    426427!$OMP THREADPRIVATE(kmax_100m)
     428    REAL :: x
    427429#ifndef CPP_XIOS
    428430    REAL :: missing_val
     
    713715            DO i=1,klon
    714716              IF (z(i,k).LT.100..AND.z(i,k+1).GE.100.) THEN
    715                 zx_tmp_fi2d(i)=SQRT( (u_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(u_seri(i,k+1)-u_seri(i,k)))**2.0 + &
    716                                      (v_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(v_seri(i,k+1)-v_seri(i,k)))**2.0 )
     717                wind100m(i)=SQRT( (u_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(u_seri(i,k+1)-u_seri(i,k)))**2.0 + &
     718                                  (v_seri(i,k)+(100.-z(i,k))/(z(i,k+1)-z(i,k))*(v_seri(i,k+1)-v_seri(i,k)))**2.0 )
    717719              ENDIF
    718720            ENDDO
    719721          ENDDO
    720722       ENDIF
    721        CALL histwrite_phy(o_wind100m, zx_tmp_fi2d)
     723       CALL histwrite_phy(o_wind100m, wind100m)
     724
     725       IF (vars_defined) THEN
     726         !--polynomial fit for 14,Vestas,1074,V136/3450 kW windmill - Olivier
     727         DO i=1,klon
     728           IF (pctsrf(i,is_ter).GT.0.05) THEN
     729             x=wind100m(i)
     730             IF (x.LE.3.0 .OR. x.GE.22.5) THEN
     731               zx_tmp_fi2d(i)=0.0
     732             ELSE IF (x.GE.10.0) THEN
     733               zx_tmp_fi2d(i)=1.0
     734             ELSE
     735               zx_tmp_fi2d(i)= 1.059e-09*x**10. - 1.351e-07*x**9. + 7.478e-06*x**8. - 0.0002352*x**7. + 0.004627*x**6. &
     736                             - 0.05898*x**5. + 0.4893*x**4. - 2.59*x**3. + 8.339*x**2. - 14.69*x + 10.73
     737               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
     738             ENDIF
     739           ELSE
     740             zx_tmp_fi2d(i)=missing_val_nf90
     741           ENDIF
     742         ENDDO
     743       ENDIF
     744       CALL histwrite_phy(o_loadfactor_wind_onshore, zx_tmp_fi2d)
     745
     746       IF (vars_defined) THEN
     747         !--polynomial fit for 14,Vestas,867,V164/8000 kW - Olivier
     748         DO i=1,klon
     749           IF (pctsrf(i,is_oce).GT.0.05) THEN
     750             x=wind100m(i)
     751             IF (x.LE.3.0 .OR. x.GE.25.5) THEN
     752               zx_tmp_fi2d(i)=0.0
     753             ELSE IF (x.GE.12.5) THEN
     754               zx_tmp_fi2d(i)=1.0
     755             ELSE
     756               zx_tmp_fi2d(i)= 3.352e-10*x**10. - 4.959e-08*x**9. + 3.195e-06*x**8. - 0.0001175*x**7. + 0.002716*x**6. &
     757                             - 0.04099*x**5. + 0.4065*x**4. - 2.601*x**3. + 10.25*x**2. - 22.39*x + 20.59
     758               zx_tmp_fi2d(i)=MIN(MAX(zx_tmp_fi2d(i),0.0),1.0)
     759             ENDIF
     760           ELSE
     761             zx_tmp_fi2d(i)=missing_val_nf90
     762           ENDIF
     763         ENDDO
     764       ENDIF
     765       CALL histwrite_phy(o_loadfactor_wind_offshore, zx_tmp_fi2d)
    722766
    723767       IF (vars_defined) THEN
Note: See TracChangeset for help on using the changeset viewer.