Changeset 3634 for palm/trunk/SOURCE/time_integration.f90
- Timestamp:
- Dec 18, 2018 12:31:28 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/time_integration.f90
r3597 r3634 25 25 ! ----------------- 26 26 ! $Id$ 27 ! OpenACC port for SPEC 28 ! 29 ! 3597 2018-12-04 08:40:18Z maronga 27 30 ! Removed call to calculation of near air (10 cm) potential temperature (now in 28 31 ! surface layer fluxes) … … 421 424 422 425 USE arrays_3d, & 423 ONLY: diss, diss_p, dzu, e, e_p, nc, nc_p, nr, nr_p, prho, pt, pt_p, pt_init, & 424 q_init, q, qc, qc_p, ql, ql_c, ql_v, ql_vp, qr, qr_p, q_p, & 425 ref_state, rho_ocean, s, s_p, sa_p, tend, u, u_p, v, vpt, & 426 v_p, w, w_p 426 ONLY: d, diss, diss_p, ddzu, dd2zu, ddzw, drho_air, drho_air_zw, dzu, & 427 dzw, e, e_p, kh, km, nc, nc_p, nr, nr_p, p, prho, pt, pt_p, & 428 pt_init, ptdf_x, ptdf_y, q_init, q, qc, qc_p, ql, ql_c, ql_v, & 429 ql_vp, qr, qr_p, q_p, rdf, rdf_sc, ref_state, rho_air, & 430 rho_air_zw, rho_ocean, s, s_p, sa_p, te_m, tend, tpt_m, tu_m, & 431 tv_m, tw_m, u, ug, u_init, u_p, u_stokes_zu, v, vg, v_init, vpt,& 432 v_p, v_stokes_zu, w, w_p, zu 427 433 428 434 USE biometeorology_mod, & … … 479 485 time_dopr_listing, time_dopts, time_dosp, time_dosp_av, & 480 486 time_dots, time_do_av, time_do_sla, time_disturb, time_dvrp, & 481 time_run_control, time_since_reference_point, 487 time_run_control, time_since_reference_point, tsc, & 482 488 turbulent_inflow, turbulent_outflow, urban_surface, & 483 489 use_initial_profile_as_reference, & … … 499 505 500 506 USE indices, & 501 ONLY: nbgp, nx, nxl, nxlg, nxr, nxrg, nzb, nzt 507 ONLY: nbgp, nx, nxl, nxlg, nxr, nxrg, nyn, nyng, nys, nysg, nzb, nzt, & 508 nz, nzb_max, advc_flags_1, advc_flags_2, wall_flags_0 502 509 503 510 USE indoor_model_mod, & … … 556 563 salsa_boundary_conds, salsa_gas, salsa_gases_from_chem, & 557 564 skip_time_do_salsa 565 566 USE salsa_util_mod, & 567 ONLY: sums_salsa_ws_l 558 568 559 569 USE spectra_mod, & … … 562 572 563 573 USE statistics, & 564 ONLY: flow_statistics_called, hom, pr_palm, sums_ls_l 574 ONLY: flow_statistics_called, hom, pr_palm, sums_ls_l, & 575 rmask, statistic_regions, weight_substep, sums_l_l, & 576 sums_us2_ws_l, sums_wsus_ws_l, sums_vs2_ws_l, sums_wsvs_ws_l, & 577 sums_ws2_ws_l, sums_wspts_ws_l, sums_wsqs_ws_l, sums_wssas_ws_l,& 578 sums_wsqcs_ws_l, sums_wsqrs_ws_l, sums_wsncs_ws_l, & 579 sums_wsnrs_ws_l, sums_wsss_ws_l 565 580 566 581 USE surface_layer_fluxes_mod, & … … 568 583 569 584 USE surface_mod, & 570 ONLY: surf_def_h, surf_lsm_h, surf_usm_h 585 ONLY: bc_h, surf_def_h, surf_lsm_h, surf_usm_h, & 586 enter_surface_arrays, exit_surface_arrays 571 587 572 588 USE surface_output_mod, & … … 623 639 REAL(wp) :: time_since_reference_point_save !< original value of 624 640 !< time_since_reference_point 641 642 643 ! Copy data from arrays_3d 644 !$ACC DATA & 645 !$ACC COPY(d(nzb+1:nzt,nys:nyn,nxl:nxr)) & 646 !$ACC COPY(e(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 647 !$ACC COPY(u(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 648 !$ACC COPY(v(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 649 !$ACC COPY(w(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 650 !$ACC COPY(kh(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 651 !$ACC COPY(km(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 652 !$ACC COPY(p(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 653 !$ACC COPY(pt(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) 654 655 !$ACC DATA & 656 !$ACC COPY(e_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 657 !$ACC COPY(u_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 658 !$ACC COPY(v_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 659 !$ACC COPY(w_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 660 !$ACC COPY(pt_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 661 !$ACC COPY(tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 662 !$ACC COPY(te_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 663 !$ACC COPY(tu_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 664 !$ACC COPY(tv_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 665 !$ACC COPY(tw_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 666 !$ACC COPY(tpt_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) 667 668 !$ACC DATA & 669 !$ACC COPYIN(rho_air(nzb:nzt+1), drho_air(nzb:nzt+1)) & 670 !$ACC COPYIN(rho_air_zw(nzb:nzt+1), drho_air_zw(nzb:nzt+1)) & 671 !$ACC COPYIN(zu(nzb:nzt+1)) & 672 !$ACC COPYIN(dzu(1:nzt+1), dzw(1:nzt+1)) & 673 !$ACC COPYIN(ddzu(1:nzt+1), dd2zu(1:nzt)) & 674 !$ACC COPYIN(ddzw(1:nzt+1)) & 675 !$ACC COPYIN(rdf(nzb+1:nzt), rdf_sc(nzb+1:nzt)) & 676 !$ACC COPYIN(ptdf_x(nxlg:nxrg), ptdf_y(nysg:nyng)) & 677 !$ACC COPYIN(ref_state(0:nz+1)) & 678 !$ACC COPYIN(u_init(0:nz+1), v_init(0:nz+1)) & 679 !$ACC COPYIN(u_stokes_zu(nzb:nzt+1), v_stokes_zu(nzb:nzt+1)) & 680 !$ACC COPYIN(pt_init(0:nz+1)) & 681 !$ACC COPYIN(ug(0:nz+1), vg(0:nz+1)) 682 683 ! Copy data from control_parameters 684 !$ACC DATA & 685 !$ACC COPYIN(tsc(1:5)) 686 687 ! Copy data from indices 688 !$ACC DATA & 689 !$ACC COPYIN(advc_flags_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 690 !$ACC COPYIN(advc_flags_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 691 !$ACC COPYIN(wall_flags_0(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) 692 693 ! Copy data from surface_mod 694 !$ACC DATA & 695 !$ACC COPYIN(bc_h(0:1)) & 696 !$ACC COPYIN(bc_h(0)%i(1:bc_h(0)%ns)) & 697 !$ACC COPYIN(bc_h(0)%j(1:bc_h(0)%ns)) & 698 !$ACC COPYIN(bc_h(0)%k(1:bc_h(0)%ns)) & 699 !$ACC COPYIN(bc_h(1)%i(1:bc_h(1)%ns)) & 700 !$ACC COPYIN(bc_h(1)%j(1:bc_h(1)%ns)) & 701 !$ACC COPYIN(bc_h(1)%k(1:bc_h(1)%ns)) 702 703 ! Copy data from statistics 704 !$ACC DATA & 705 !$ACC COPYIN(hom(nzb+1:nzb_max,1,1:3,0)) & 706 !$ACC COPYIN(rmask(nysg:nyng,nxlg:nxrg,0:statistic_regions)) & 707 !$ACC COPYIN(weight_substep(1:intermediate_timestep_count_max)) & 708 !$ACC COPY(sums_l_l(nzb:nzt+1,0:statistic_regions,0)) & 709 !$ACC COPY(sums_us2_ws_l(nzb:nzt+1,0)) & 710 !$ACC COPY(sums_wsus_ws_l(nzb:nzt+1,0)) & 711 !$ACC COPY(sums_vs2_ws_l(nzb:nzt+1,0)) & 712 !$ACC COPY(sums_wsvs_ws_l(nzb:nzt+1,0)) & 713 !$ACC COPY(sums_ws2_ws_l(nzb:nzt+1,0)) & 714 !$ACC COPY(sums_wspts_ws_l(nzb:nzt+1,0)) & 715 !$ACC COPY(sums_wssas_ws_l(nzb:nzt+1,0)) & 716 !$ACC COPY(sums_wsqs_ws_l(nzb:nzt+1,0)) & 717 !$ACC COPY(sums_wsqcs_ws_l(nzb:nzt+1,0)) & 718 !$ACC COPY(sums_wsqrs_ws_l(nzb:nzt+1,0)) & 719 !$ACC COPY(sums_wsncs_ws_l(nzb:nzt+1,0)) & 720 !$ACC COPY(sums_wsnrs_ws_l(nzb:nzt+1,0)) & 721 !$ACC COPY(sums_wsss_ws_l(nzb:nzt+1,0)) & 722 !$ACC COPY(sums_salsa_ws_l(nzb:nzt+1,0)) 625 723 626 724 ! … … 739 837 ENDIF 740 838 839 #ifdef _OPENACC 840 CALL enter_surface_arrays 841 #endif 842 741 843 ! 742 844 !-- Start of intermediate step loop … … 1252 1354 1253 1355 ENDDO ! Intermediate step loop 1356 1357 ! 1358 !-- Will be used at some point by flow_statistics. 1359 !$ACC UPDATE HOST(e, u, v, w, pt) & 1360 !$ACC HOST(kh(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 1361 !$ACC HOST(km(nzb:nzt+1,nysg:nyng,nxlg:nxrg)) & 1362 !$ACC HOST(sums_l_l(nzb:nzt+1,0:statistic_regions,0)) & 1363 !$ACC HOST(sums_us2_ws_l(nzb:nzt+1,0)) & 1364 !$ACC HOST(sums_wsus_ws_l(nzb:nzt+1,0)) & 1365 !$ACC HOST(sums_vs2_ws_l(nzb:nzt+1,0)) & 1366 !$ACC HOST(sums_wsvs_ws_l(nzb:nzt+1,0)) & 1367 !$ACC HOST(sums_ws2_ws_l(nzb:nzt+1,0)) & 1368 !$ACC HOST(sums_wspts_ws_l(nzb:nzt+1,0)) & 1369 !$ACC HOST(sums_wssas_ws_l(nzb:nzt+1,0)) & 1370 !$ACC HOST(sums_wsqs_ws_l(nzb:nzt+1,0)) & 1371 !$ACC HOST(sums_wsqcs_ws_l(nzb:nzt+1,0)) & 1372 !$ACC HOST(sums_wsqrs_ws_l(nzb:nzt+1,0)) & 1373 !$ACC HOST(sums_wsncs_ws_l(nzb:nzt+1,0)) & 1374 !$ACC HOST(sums_wsnrs_ws_l(nzb:nzt+1,0)) & 1375 !$ACC HOST(sums_wsss_ws_l(nzb:nzt+1,0)) & 1376 !$ACC HOST(sums_salsa_ws_l(nzb:nzt+1,0)) 1377 #ifdef _OPENACC 1378 CALL exit_surface_arrays 1379 #endif 1380 1254 1381 ! 1255 1382 !-- If required, consider chemical emissions … … 1655 1782 ENDDO ! time loop 1656 1783 1784 !$ACC END DATA 1785 !$ACC END DATA 1786 !$ACC END DATA 1787 !$ACC END DATA 1788 !$ACC END DATA 1789 !$ACC END DATA 1790 !$ACC END DATA 1791 1657 1792 ! 1658 1793 !-- Vertical nesting: Deallocate variables initialized for vertical nesting
Note: See TracChangeset
for help on using the changeset viewer.