@@ -2349,6 +2349,266 @@ subroutine assign_importdata(jdat, rc)
2349
2349
endif
2350
2350
endif
2351
2351
2352
+ ! get surface snow area fraction: over land (if cpllnd=true and cpllnd2atm=true)
2353
+ !- -----------------------------------------------
2354
+ fldname = ' inst_snow_area_fraction_lnd'
2355
+ if (trim (impfield_name) == trim (fldname)) then
2356
+ findex = queryImportFields(fldname)
2357
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2358
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2359
+ do j= jsc,jec
2360
+ do i= isc,iec
2361
+ nb = Atm_block% blkno(i,j)
2362
+ ix = Atm_block% ixp(i,j)
2363
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2364
+ GFS_data(nb)% Coupling% sncovr1_lnd(ix) = datar8 (i,j)
2365
+ endif
2366
+ enddo
2367
+ enddo
2368
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get snow area fraction from land'
2369
+ endif
2370
+ endif
2371
+
2372
+ ! get latent heat flux: over land (if cpllnd=true and cpllnd2atm=true)
2373
+ !- -----------------------------------------------
2374
+ fldname = ' inst_laten_heat_flx_lnd'
2375
+ if (trim (impfield_name) == trim (fldname)) then
2376
+ findex = queryImportFields(fldname)
2377
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2378
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2379
+ do j= jsc,jec
2380
+ do i= isc,iec
2381
+ nb = Atm_block% blkno(i,j)
2382
+ ix = Atm_block% ixp(i,j)
2383
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2384
+ GFS_data(nb)% Coupling% evap_lnd(ix) = datar8 (i,j)
2385
+ endif
2386
+ enddo
2387
+ enddo
2388
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get latent heat flux from land'
2389
+ endif
2390
+ endif
2391
+
2392
+ ! get sensible heat flux: over land (if cpllnd=true and cpllnd2atm=true)
2393
+ !- -------------------------------------------------
2394
+ fldname = ' inst_sensi_heat_flx_lnd'
2395
+ if (trim (impfield_name) == trim (fldname)) then
2396
+ findex = queryImportFields(fldname)
2397
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2398
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2399
+ do j= jsc,jec
2400
+ do i= isc,iec
2401
+ nb = Atm_block% blkno(i,j)
2402
+ ix = Atm_block% ixp(i,j)
2403
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2404
+ GFS_data(nb)% Coupling% hflx_lnd(ix) = datar8 (i,j)
2405
+ endif
2406
+ enddo
2407
+ enddo
2408
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get sensible heat flux from land'
2409
+ endif
2410
+ endif
2411
+
2412
+ ! get surface upward potential latent heat flux: over land (if cpllnd=true and cpllnd2atm=true)
2413
+ !- -----------------------------------------------
2414
+ fldname = ' inst_potential_laten_heat_flx_lnd'
2415
+ if (trim (impfield_name) == trim (fldname)) then
2416
+ findex = queryImportFields(fldname)
2417
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2418
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2419
+ do j= jsc,jec
2420
+ do i= isc,iec
2421
+ nb = Atm_block% blkno(i,j)
2422
+ ix = Atm_block% ixp(i,j)
2423
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2424
+ GFS_data(nb)% Coupling% ep_lnd(ix) = datar8 (i,j)
2425
+ endif
2426
+ enddo
2427
+ enddo
2428
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get potential latent heat flux from land'
2429
+ endif
2430
+ endif
2431
+
2432
+ ! get 2m air temperature: over land (if cpllnd=true and cpllnd2atm=true)
2433
+ !- -----------------------------------------------
2434
+ fldname = ' inst_temp_height2m_lnd'
2435
+ if (trim (impfield_name) == trim (fldname)) then
2436
+ findex = queryImportFields(fldname)
2437
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2438
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2439
+ do j= jsc,jec
2440
+ do i= isc,iec
2441
+ nb = Atm_block% blkno(i,j)
2442
+ ix = Atm_block% ixp(i,j)
2443
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2444
+ GFS_data(nb)% Coupling% t2mmp_lnd(ix) = datar8 (i,j)
2445
+ endif
2446
+ enddo
2447
+ enddo
2448
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get temperature at 2m from land'
2449
+ endif
2450
+ endif
2451
+
2452
+ ! get 2m specific humidity: over land (if cpllnd=true and cpllnd2atm=true)
2453
+ !- -----------------------------------------------
2454
+ fldname = ' inst_spec_humid_height2m_lnd'
2455
+ if (trim (impfield_name) == trim (fldname)) then
2456
+ findex = queryImportFields(fldname)
2457
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2458
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2459
+ do j= jsc,jec
2460
+ do i= isc,iec
2461
+ nb = Atm_block% blkno(i,j)
2462
+ ix = Atm_block% ixp(i,j)
2463
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2464
+ GFS_data(nb)% Coupling% q2mp_lnd(ix) = datar8 (i,j)
2465
+ endif
2466
+ enddo
2467
+ enddo
2468
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get specific humidity at 2m from land'
2469
+ endif
2470
+ endif
2471
+
2472
+ ! get specific humidity: over land (if cpllnd=true and cpllnd2atm=true)
2473
+ !- -----------------------------------------------
2474
+ fldname = ' inst_spec_humid_lnd'
2475
+ if (trim (impfield_name) == trim (fldname)) then
2476
+ findex = queryImportFields(fldname)
2477
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2478
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2479
+ do j= jsc,jec
2480
+ do i= isc,iec
2481
+ nb = Atm_block% blkno(i,j)
2482
+ ix = Atm_block% ixp(i,j)
2483
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2484
+ GFS_data(nb)% Coupling% qsurf_lnd(ix) = datar8 (i,j)
2485
+ endif
2486
+ enddo
2487
+ enddo
2488
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get specific humidity from land'
2489
+ endif
2490
+ endif
2491
+
2492
+ ! get upward heat flux in soil (if cpllnd=true and cpllnd2atm=true)
2493
+ !- -----------------------------------------------
2494
+ fldname = ' inst_upward_heat_flux_lnd'
2495
+ if (trim (impfield_name) == trim (fldname)) then
2496
+ findex = queryImportFields(fldname)
2497
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2498
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2499
+ do j= jsc,jec
2500
+ do i= isc,iec
2501
+ nb = Atm_block% blkno(i,j)
2502
+ ix = Atm_block% ixp(i,j)
2503
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2504
+ GFS_data(nb)% Coupling% gflux_lnd(ix) = datar8 (i,j)
2505
+ endif
2506
+ enddo
2507
+ enddo
2508
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get upward heat flux from land'
2509
+ endif
2510
+ endif
2511
+
2512
+ ! get surface runoff in soil (if cpllnd=true and cpllnd2atm=true)
2513
+ !- -----------------------------------------------
2514
+ fldname = ' inst_runoff_rate_lnd'
2515
+ if (trim (impfield_name) == trim (fldname)) then
2516
+ findex = queryImportFields(fldname)
2517
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2518
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2519
+ do j= jsc,jec
2520
+ do i= isc,iec
2521
+ nb = Atm_block% blkno(i,j)
2522
+ ix = Atm_block% ixp(i,j)
2523
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2524
+ GFS_data(nb)% Coupling% runoff_lnd(ix) = datar8 (i,j)
2525
+ endif
2526
+ enddo
2527
+ enddo
2528
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get surface runoff from land'
2529
+ endif
2530
+ endif
2531
+
2532
+ ! get subsurface runoff in soil (if cpllnd=true and cpllnd2atm=true)
2533
+ !- -----------------------------------------------
2534
+ fldname = ' inst_subsurface_runoff_rate_lnd'
2535
+ if (trim (impfield_name) == trim (fldname)) then
2536
+ findex = queryImportFields(fldname)
2537
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2538
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2539
+ do j= jsc,jec
2540
+ do i= isc,iec
2541
+ nb = Atm_block% blkno(i,j)
2542
+ ix = Atm_block% ixp(i,j)
2543
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2544
+ GFS_data(nb)% Coupling% drain_lnd(ix) = datar8 (i,j)
2545
+ endif
2546
+ enddo
2547
+ enddo
2548
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get subsurface runoff from land'
2549
+ endif
2550
+ endif
2551
+
2552
+ ! get momentum exchange coefficient (if cpllnd=true and cpllnd2atm=true)
2553
+ !- -----------------------------------------------
2554
+ fldname = ' inst_drag_wind_speed_for_momentum'
2555
+ if (trim (impfield_name) == trim (fldname)) then
2556
+ findex = queryImportFields(fldname)
2557
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2558
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2559
+ do j= jsc,jec
2560
+ do i= isc,iec
2561
+ nb = Atm_block% blkno(i,j)
2562
+ ix = Atm_block% ixp(i,j)
2563
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2564
+ GFS_data(nb)% Coupling% cmm_lnd(ix) = datar8 (i,j)
2565
+ endif
2566
+ enddo
2567
+ enddo
2568
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get drag wind speed for momentum from land'
2569
+ endif
2570
+ endif
2571
+
2572
+ ! get thermal exchange coefficient (if cpllnd=true and cpllnd2atm=true)
2573
+ !- -----------------------------------------------
2574
+ fldname = ' inst_drag_mass_flux_for_heat_and_moisture'
2575
+ if (trim (impfield_name) == trim (fldname)) then
2576
+ findex = queryImportFields(fldname)
2577
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2578
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2579
+ do j= jsc,jec
2580
+ do i= isc,iec
2581
+ nb = Atm_block% blkno(i,j)
2582
+ ix = Atm_block% ixp(i,j)
2583
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2584
+ GFS_data(nb)% Coupling% chh_lnd(ix) = datar8 (i,j)
2585
+ endif
2586
+ enddo
2587
+ enddo
2588
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get thermal exchange coefficient form land'
2589
+ endif
2590
+ endif
2591
+
2592
+ ! get function of surface roughness length and green vegetation fraction (if cpllnd=true and cpllnd2atm=true)
2593
+ !- -----------------------------------------------
2594
+ fldname = ' inst_func_of_roughness_length_and_vfrac'
2595
+ if (trim (impfield_name) == trim (fldname)) then
2596
+ findex = queryImportFields(fldname)
2597
+ if (importFieldsValid(findex) .and. GFS_control% cpllnd .and. GFS_control% cpllnd2atm) then
2598
+ ! $omp parallel do default(shared) private(i,j,nb,ix)
2599
+ do j= jsc,jec
2600
+ do i= isc,iec
2601
+ nb = Atm_block% blkno(i,j)
2602
+ ix = Atm_block% ixp(i,j)
2603
+ if (GFS_data(nb)% Sfcprop% landfrac(ix) > zero) then
2604
+ GFS_data(nb)% Coupling% zvfun_lnd(ix) = datar8 (i,j)
2605
+ endif
2606
+ enddo
2607
+ enddo
2608
+ if (mpp_pe() == mpp_root_pe() .and. debug) print * ,' fv3 assign_import: get func. of roughness length and vfrac form land'
2609
+ endif
2610
+ endif
2611
+
2352
2612
endif ! if (datar8(isc,jsc) > -99999.0) then
2353
2613
2354
2614
!- ------------------------------------------------------
@@ -3072,12 +3332,6 @@ subroutine setup_exportdata(rc)
3072
3332
! bottom layer meridional wind (v)
3073
3333
case (' inst_merid_wind_height_lowest' )
3074
3334
call block_data_copy_or_fill(datar8 2d, DYCORE_data(nb)% coupling% v_bot, zeror8 , Atm_block, nb, rc= localrc)
3075
- ! bottom layer zonal wind (u) from physics
3076
- case (' inst_zonal_wind_height_lowest_from_phys' )
3077
- call block_data_copy_or_fill(datar8 2d, GFS_data(nb)% Statein% ugrs, 1 , zeror8 , Atm_block, nb, rc= localrc)
3078
- ! bottom layer meridional wind (v) from physics
3079
- case (' inst_merid_wind_height_lowest_from_phys' )
3080
- call block_data_copy_or_fill(datar8 2d, GFS_data(nb)% Statein% vgrs, 1 , zeror8 , Atm_block, nb, rc= localrc)
3081
3335
! surface friction velocity
3082
3336
case (' surface_friction_velocity' )
3083
3337
call block_data_copy_or_fill(datar8 2d, GFS_data(nb)% Sfcprop% uustar, zeror8 , Atm_block, nb, rc= localrc)
0 commit comments