Changeset 4517 for palm/trunk/SOURCE/surface_mod.f90
- Timestamp:
- May 3, 2020 2:29:30 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/surface_mod.f90
r4502 r4517 26 26 ! ----------------- 27 27 ! $Id$ 28 ! added restart with MPI-IO for reading local arrays 29 ! 30 ! 4502 2020-04-17 16:14:16Z schwenkel 28 31 ! Implementation of ice microphysics 29 32 ! … … 145 148 146 149 USE restart_data_mpi_io_mod, & 147 ONLY: rd_mpi_io_surface_filetypes, total_number_of_surface_values, wrd_mpi_io, & 150 ONLY: rd_mpi_io_surface_filetypes, rrd_mpi_io, rrd_mpi_io_global_array, & 151 rrd_mpi_io_surface, total_number_of_surface_values, wrd_mpi_io, & 148 152 wrd_mpi_io_global_array, wrd_mpi_io_surface 149 153 … … 499 503 500 504 INTERFACE surface_rrd_local 501 MODULE PROCEDURE surface_rrd_local 505 MODULE PROCEDURE surface_rrd_local_ftn 506 MODULE PROCEDURE surface_rrd_local_mpi 502 507 END INTERFACE surface_rrd_local 503 508 … … 4236 4241 ! Description: 4237 4242 ! ------------ 4238 !> Reads surface-related restart data . Please note, restart data for a certain4243 !> Reads surface-related restart data in Fortran binary format. Please note, restart data for a certain 4239 4244 !> surface orientation (e.g. horizontal upward-facing) is stored in one 4240 4245 !> array, even if surface elements may belong to different surface types … … 4244 4249 !> of cyclic_fill mode. 4245 4250 !------------------------------------------------------------------------------! 4246 SUBROUTINE surface_rrd_local ( kk, nxlf, nxlc, nxl_on_file, nxrf, &4247 nxr_on_file, nynf, nyn_on_file, nysf, &4248 nysc, nys_on_file, found )4251 SUBROUTINE surface_rrd_local_ftn( kk, nxlf, nxlc, nxl_on_file, nxrf, & 4252 nxr_on_file, nynf, nyn_on_file, nysf, & 4253 nysc, nys_on_file, found ) 4249 4254 4250 4255 … … 5185 5190 ENDIF 5186 5191 5187 5188 CONTAINS 5192 CONTAINS 5189 5193 !------------------------------------------------------------------------------! 5190 5194 ! Description: … … 5403 5407 5404 5408 5405 END SUBROUTINE surface_rrd_local 5409 END SUBROUTINE surface_rrd_local_ftn 5410 5411 5412 !------------------------------------------------------------------------------! 5413 ! Description: 5414 ! ------------ 5415 !> Reads surface-related restart data in MPI-IO format. 5416 !> TO_DO: this routine needs to be adjusted for cyclic_fill mode 5417 !------------------------------------------------------------------------------! 5418 SUBROUTINE surface_rrd_local_mpi 5419 5420 5421 IMPLICIT NONE 5422 5423 CHARACTER(LEN=1) :: dum !< dummy string to create input-variable name 5424 5425 INTEGER(iwp) :: l !< loop index for surface types 5426 5427 INTEGER(iwp), DIMENSION(nys:nyn,nxl:nxr) :: global_start_index !< index for surface data (MPI-IO) 5428 5429 LOGICAL :: ldum !< dummy variable 5430 5431 TYPE(surf_type), DIMENSION(0:2) :: surf_h !< gathered horizontal surfaces, contains all surface types 5432 TYPE(surf_type), DIMENSION(0:3) :: surf_v !< gathered vertical surfaces, contains all surface types 5433 5434 ! 5435 !-- Get total number of surface points on the file 5436 CALL rrd_mpi_io_global_array( 'ns_h_on_file', ns_h_on_file ) 5437 CALL rrd_mpi_io_global_array( 'ns_v_on_file', ns_v_on_file ) 5438 5439 5440 DO l = 0, 2 5441 5442 IF ( ns_h_on_file(l) == 0 ) CYCLE !< no data of this surface type on file 5443 5444 IF ( ALLOCATED( surf_h(l)%start_index ) ) CALL deallocate_surface_attributes_h( surf_h(l) ) 5445 surf_h(l)%ns = ns_h_on_file(l) 5446 CALL allocate_surface_attributes_h( surf_h(l), nys, nyn, nxl, nxr ) 5447 5448 WRITE( dum, '(I1)') l 5449 5450 CALL rrd_mpi_io( 'surf_h(' // dum // ')%start_index', surf_h(l)%start_index ) 5451 CALL rrd_mpi_io( 'surf_h(' // dum // ')%end_index', surf_h(l)%end_index ) 5452 CALL rrd_mpi_io( 'global_start_index_h_' // dum , global_start_index ) 5453 5454 CALL rd_mpi_io_surface_filetypes( surf_h(l)%start_index, surf_h(l)%end_index, ldum, global_start_index ) 5455 5456 IF ( ALLOCATED ( surf_h(l)%us ) ) THEN 5457 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%us', surf_h(l)%us ) 5458 ENDIF 5459 5460 IF ( ALLOCATED ( surf_h(l)%ts ) ) THEN 5461 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ts', surf_h(l)%ts ) 5462 ENDIF 5463 5464 IF ( ALLOCATED ( surf_h(l)%qs ) ) THEN 5465 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qs', surf_h(l)%qs ) 5466 ENDIF 5467 5468 IF ( ALLOCATED ( surf_h(l)%ss ) ) THEN 5469 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ss', surf_h(l)%ss ) 5470 ENDIF 5471 5472 IF ( ALLOCATED ( surf_h(l)%qcs ) ) THEN 5473 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qcs', surf_h(l)%qcs ) 5474 ENDIF 5475 5476 IF ( ALLOCATED ( surf_h(l)%ncs ) ) THEN 5477 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ncs', surf_h(l)%ncs ) 5478 ENDIF 5479 5480 IF ( ALLOCATED ( surf_h(l)%qis ) ) THEN 5481 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qis', surf_h(l)%qis ) 5482 ENDIF 5483 5484 IF ( ALLOCATED ( surf_h(l)%nis ) ) THEN 5485 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nis', surf_h(l)%nis ) 5486 ENDIF 5487 5488 IF ( ALLOCATED ( surf_h(l)%qrs ) ) THEN 5489 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qrs', surf_h(l)%qrs ) 5490 ENDIF 5491 5492 IF ( ALLOCATED ( surf_h(l)%nrs ) ) THEN 5493 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nrs', surf_h(l)%nrs ) 5494 ENDIF 5495 5496 IF ( ALLOCATED ( surf_h(l)%ol ) ) THEN 5497 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ol', surf_h(l)%ol ) 5498 ENDIF 5499 5500 IF ( ALLOCATED ( surf_h(l)%rib ) ) THEN 5501 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%rib', surf_h(l)%rib ) 5502 ENDIF 5503 5504 IF ( ALLOCATED ( surf_h(l)%pt_surface ) ) THEN 5505 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%pt_surface', surf_h(l)%pt_surface ) 5506 ENDIF 5507 5508 IF ( ALLOCATED ( surf_h(l)%q_surface ) ) THEN 5509 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%q_surface', surf_h(l)%q_surface ) 5510 ENDIF 5511 5512 IF ( ALLOCATED ( surf_h(l)%vpt_surface ) ) THEN 5513 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%vpt_surface', surf_h(l)%vpt_surface ) 5514 ENDIF 5515 5516 IF ( ALLOCATED ( surf_h(l)%usws ) ) THEN 5517 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%usws', surf_h(l)%usws ) 5518 ENDIF 5519 5520 IF ( ALLOCATED ( surf_h(l)%vsws ) ) THEN 5521 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%vsws', surf_h(l)%vsws ) 5522 ENDIF 5523 5524 IF ( ALLOCATED ( surf_h(l)%shf ) ) THEN 5525 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%shf', surf_h(l)%shf ) 5526 ENDIF 5527 5528 IF ( ALLOCATED ( surf_h(l)%qsws ) ) THEN 5529 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qsws', surf_h(l)%qsws ) 5530 ENDIF 5531 5532 IF ( ALLOCATED ( surf_h(l)%ssws ) ) THEN 5533 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ssws', surf_h(l)%ssws ) 5534 ENDIF 5535 5536 IF ( ALLOCATED ( surf_h(l)%css ) ) THEN 5537 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%css', surf_h(l)%css ) 5538 ENDIF 5539 5540 IF ( ALLOCATED ( surf_h(l)%cssws ) ) THEN 5541 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%cssws', surf_h(l)%cssws ) 5542 ENDIF 5543 5544 IF ( ALLOCATED ( surf_h(l)%qcsws ) ) THEN 5545 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qcsws', surf_h(l)%qcsws ) 5546 ENDIF 5547 5548 IF ( ALLOCATED ( surf_h(l)%ncsws ) ) THEN 5549 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%ncsws', surf_h(l)%ncsws ) 5550 ENDIF 5551 5552 IF ( ALLOCATED ( surf_h(l)%qisws ) ) THEN 5553 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qisws', surf_h(l)%qisws ) 5554 ENDIF 5555 5556 IF ( ALLOCATED ( surf_h(l)%nisws ) ) THEN 5557 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nisws', surf_h(l)%nisws ) 5558 ENDIF 5559 5560 IF ( ALLOCATED ( surf_h(l)%qrsws ) ) THEN 5561 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%qrsws', surf_h(l)%qrsws ) 5562 ENDIF 5563 5564 IF ( ALLOCATED ( surf_h(l)%nrsws ) ) THEN 5565 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%nrsws', surf_h(l)%nrsws ) 5566 ENDIF 5567 5568 IF ( ALLOCATED ( surf_h(l)%sasws ) ) THEN 5569 CALL rrd_mpi_io_surface( 'surf_h(' // dum // ')%sasws', surf_h(l)%sasws ) 5570 ENDIF 5571 5572 ENDDO 5573 5574 ! 5575 !-- Read vertical surfaces 5576 DO l = 0, 3 5577 5578 IF ( ns_v_on_file(l) == 0 ) CYCLE !< no data of this surface type on file 5579 5580 IF ( ALLOCATED( surf_v(l)%start_index ) ) CALL deallocate_surface_attributes_v( surf_v(l) ) 5581 surf_v(l)%ns = ns_v_on_file(l) 5582 CALL allocate_surface_attributes_v( surf_v(l), nys, nyn, nxl, nxr ) 5583 5584 WRITE( dum, '(I1)' ) l 5585 5586 CALL rrd_mpi_io( 'surf_v(' // dum // ')%start_index', surf_v(l)%start_index ) 5587 CALL rrd_mpi_io( 'surf_v(' // dum // ')%end_index', surf_v(l)%end_index ) 5588 CALL rrd_mpi_io( 'global_start_index_v_' // dum , global_start_index ) 5589 5590 CALL rd_mpi_io_surface_filetypes( surf_v(l)%start_index, surf_v(l)%end_index, ldum, & 5591 global_start_index ) 5592 5593 IF ( ALLOCATED ( surf_v(l)%us ) ) THEN 5594 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%us', surf_v(l)%us ) 5595 ENDIF 5596 5597 IF ( ALLOCATED ( surf_v(l)%ts ) ) THEN 5598 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ts', surf_v(l)%ts ) 5599 ENDIF 5600 5601 IF ( ALLOCATED ( surf_v(l)%qs ) ) THEN 5602 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qs', surf_v(l)%qs ) 5603 ENDIF 5604 5605 IF ( ALLOCATED ( surf_v(l)%ss ) ) THEN 5606 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ss', surf_v(l)%ss ) 5607 ENDIF 5608 5609 IF ( ALLOCATED ( surf_v(l)%qcs ) ) THEN 5610 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qcs', surf_v(l)%qcs ) 5611 ENDIF 5612 5613 IF ( ALLOCATED ( surf_v(l)%ncs ) ) THEN 5614 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ncs', surf_v(l)%ncs ) 5615 ENDIF 5616 5617 IF ( ALLOCATED ( surf_v(l)%qis ) ) THEN 5618 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qis', surf_v(l)%qis ) 5619 ENDIF 5620 5621 IF ( ALLOCATED ( surf_v(l)%nis ) ) THEN 5622 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nis', surf_v(l)%nis ) 5623 ENDIF 5624 5625 IF ( ALLOCATED ( surf_v(l)%qrs ) ) THEN 5626 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qrs', surf_v(l)%qrs ) 5627 ENDIF 5628 5629 IF ( ALLOCATED ( surf_v(l)%nrs ) ) THEN 5630 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nrs', surf_v(l)%nrs ) 5631 ENDIF 5632 5633 IF ( ALLOCATED ( surf_v(l)%ol ) ) THEN 5634 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ol', surf_v(l)%ol ) 5635 ENDIF 5636 5637 IF ( ALLOCATED ( surf_v(l)%rib ) ) THEN 5638 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%rib', surf_v(l)%rib ) 5639 ENDIF 5640 5641 IF ( ALLOCATED ( surf_v(l)%pt_surface ) ) THEN 5642 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%pt_surface', surf_v(l)%pt_surface ) 5643 ENDIF 5644 5645 IF ( ALLOCATED ( surf_v(l)%q_surface ) ) THEN 5646 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%q_surface', surf_v(l)%q_surface ) 5647 ENDIF 5648 5649 IF ( ALLOCATED ( surf_v(l)%vpt_surface ) ) THEN 5650 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%vpt_surface', surf_v(l)%vpt_surface ) 5651 ENDIF 5652 5653 IF ( ALLOCATED ( surf_v(l)%shf ) ) THEN 5654 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%shf', surf_v(l)%shf ) 5655 ENDIF 5656 5657 IF ( ALLOCATED ( surf_v(l)%qsws ) ) THEN 5658 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qsws', surf_v(l)%qsws ) 5659 ENDIF 5660 5661 IF ( ALLOCATED ( surf_v(l)%ssws ) ) THEN 5662 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ssws', surf_v(l)%ssws ) 5663 ENDIF 5664 5665 IF ( ALLOCATED ( surf_v(l)%css ) ) THEN 5666 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%css', surf_v(l)%css ) 5667 ENDIF 5668 5669 IF ( ALLOCATED ( surf_v(l)%cssws ) ) THEN 5670 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%cssws', surf_v(l)%cssws ) 5671 ENDIF 5672 5673 IF ( ALLOCATED ( surf_v(l)%qcsws ) ) THEN 5674 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qcsws', surf_v(l)%qcsws ) 5675 ENDIF 5676 5677 IF ( ALLOCATED ( surf_v(l)%ncsws ) ) THEN 5678 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%ncsws', surf_v(l)%ncsws ) 5679 ENDIF 5680 5681 IF ( ALLOCATED ( surf_v(l)%qisws ) ) THEN 5682 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qisws', surf_v(l)%qisws ) 5683 ENDIF 5684 5685 IF ( ALLOCATED ( surf_v(l)%nisws ) ) THEN 5686 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nisws', surf_v(l)%nisws ) 5687 ENDIF 5688 5689 IF ( ALLOCATED ( surf_v(l)%qrsws ) ) THEN 5690 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%qrsws', surf_v(l)%qrsws ) 5691 ENDIF 5692 5693 IF ( ALLOCATED ( surf_v(l)%nrsws ) ) THEN 5694 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%nrsws', surf_v(l)%nrsws ) 5695 ENDIF 5696 5697 IF ( ALLOCATED ( surf_v(l)%sasws ) ) THEN 5698 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%sasws', surf_v(l)%sasws ) 5699 ENDIF 5700 5701 IF ( ALLOCATED ( surf_v(l)%mom_flux_uv ) ) THEN 5702 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%mom_uv', surf_v(l)%mom_flux_uv) 5703 ENDIF 5704 5705 IF ( ALLOCATED ( surf_v(l)%mom_flux_w ) ) THEN 5706 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%mom_w', surf_v(l)%mom_flux_w) 5707 ENDIF 5708 5709 IF ( ALLOCATED ( surf_v(l)%mom_flux_tke ) ) THEN 5710 CALL rrd_mpi_io_surface( 'surf_v(' // dum // ')%mom_tke', surf_v(l)%mom_flux_tke) 5711 ENDIF 5712 5713 ENDDO 5714 5715 ! 5716 !-- Redistribute surface elements on its respective type. 5717 5718 DO l = 0 , 2 5719 CALL restore_surface_elements( surf_def_h(l), surf_h(l) ) 5720 CALL restore_surface_elements( surf_lsm_h, surf_h(l) ) 5721 CALL restore_surface_elements( surf_usm_h, surf_h(l) ) 5722 ENDDO 5723 5724 DO l = 0 , 3 5725 CALL restore_surface_elements( surf_def_v(l), surf_v(l) ) 5726 CALL restore_surface_elements( surf_lsm_v(l), surf_v(l) ) 5727 CALL restore_surface_elements( surf_usm_v(l), surf_v(l) ) 5728 ENDDO 5729 5730 CONTAINS 5731 5732 SUBROUTINE restore_surface_elements( surf_target, surf_file ) 5733 5734 IMPLICIT NONE 5735 5736 INTEGER(iwp) :: lsp !< running index chemical species 5737 5738 TYPE( surf_type ) :: surf_target !< target surface type 5739 TYPE( surf_type ) :: surf_file !< surface type on file 5740 5741 5742 IF ( ALLOCATED( surf_target%us ) .AND. ALLOCATED( surf_file%us ) ) THEN 5743 surf_target%us = surf_file%us 5744 ENDIF 5745 5746 IF ( ALLOCATED( surf_target%ol ) .AND. & 5747 ALLOCATED( surf_file%ol ) ) & 5748 surf_target%ol = surf_file%ol 5749 5750 IF ( ALLOCATED( surf_target%pt_surface ) .AND. & 5751 ALLOCATED( surf_file%pt_surface ) ) & 5752 surf_target%pt_surface = surf_file%pt_surface 5753 5754 IF ( ALLOCATED( surf_target%q_surface ) .AND. & 5755 ALLOCATED( surf_file%q_surface ) ) & 5756 surf_target%q_surface = surf_file%q_surface 5757 5758 IF ( ALLOCATED( surf_target%vpt_surface ) .AND. & 5759 ALLOCATED( surf_file%vpt_surface ) ) & 5760 surf_target%vpt_surface = surf_file%vpt_surface 5761 5762 IF ( ALLOCATED( surf_target%usws ) .AND. & 5763 ALLOCATED( surf_file%usws ) ) & 5764 surf_target%usws = surf_file%usws 5765 5766 IF ( ALLOCATED( surf_target%vsws ) .AND. & 5767 ALLOCATED( surf_file%vsws ) ) & 5768 surf_target%vsws = surf_file%vsws 5769 5770 IF ( ALLOCATED( surf_target%ts ) .AND. & 5771 ALLOCATED( surf_file%ts ) ) & 5772 surf_target%ts = surf_file%ts 5773 5774 IF ( ALLOCATED( surf_target%shf ) .AND. & 5775 ALLOCATED( surf_file%shf ) ) & 5776 surf_target%shf = surf_file%shf 5777 5778 IF ( ALLOCATED( surf_target%qs ) .AND. & 5779 ALLOCATED( surf_file%qs ) ) & 5780 surf_target%qs = surf_file%qs 5781 5782 IF ( ALLOCATED( surf_target%qsws ) .AND. & 5783 ALLOCATED( surf_file%qsws ) ) & 5784 surf_target%qsws = surf_file%qsws 5785 5786 IF ( ALLOCATED( surf_target%ss ) .AND. & 5787 ALLOCATED( surf_file%ss ) ) & 5788 surf_target%ss = surf_file%ss 5789 5790 IF ( ALLOCATED( surf_target%ssws ) .AND. & 5791 ALLOCATED( surf_file%ssws ) ) & 5792 surf_target%ssws = surf_file%ssws 5793 5794 IF ( ALLOCATED( surf_target%css ) .AND. & 5795 ALLOCATED( surf_file%css ) ) THEN 5796 DO lsp = 1, nvar 5797 surf_target%css(lsp,:) = surf_file%css(lsp,:) 5798 ENDDO 5799 ENDIF 5800 5801 IF ( ALLOCATED( surf_target%cssws ) .AND. & 5802 ALLOCATED( surf_file%cssws ) ) THEN 5803 DO lsp = 1, nvar 5804 surf_target%cssws(lsp,:) = surf_file%cssws(lsp,:) 5805 ENDDO 5806 ENDIF 5807 IF ( ALLOCATED( surf_target%qcs ) .AND. & 5808 ALLOCATED( surf_file%qcs ) ) & 5809 surf_target%qcs = surf_file%qcs 5810 IF ( ALLOCATED( surf_target%qcsws ) .AND. & 5811 ALLOCATED( surf_file%qcsws ) ) & 5812 surf_target%qcsws = surf_file%qcsws 5813 IF ( ALLOCATED( surf_target%ncs ) .AND. & 5814 ALLOCATED( surf_file%ncs ) ) & 5815 surf_target%ncs = surf_file%ncs 5816 IF ( ALLOCATED( surf_target%ncsws ) .AND. & 5817 ALLOCATED( surf_file%ncsws ) ) & 5818 surf_target%ncsws = surf_file%ncsws 5819 IF ( ALLOCATED( surf_target%qrs ) .AND. & 5820 ALLOCATED( surf_file%qrs ) ) & 5821 surf_target%qrs = surf_file%qrs 5822 IF ( ALLOCATED( surf_target%qrsws ) .AND. & 5823 ALLOCATED( surf_file%qrsws ) ) & 5824 surf_target%qrsws = surf_file%qrsws 5825 IF ( ALLOCATED( surf_target%nrs ) .AND. & 5826 ALLOCATED( surf_file%nrs ) ) & 5827 surf_target%nrs = surf_file%nrs 5828 5829 IF ( ALLOCATED( surf_target%nrsws ) .AND. & 5830 ALLOCATED( surf_file%nrsws ) ) & 5831 surf_target%nrsws = surf_file%nrsws 5832 IF ( ALLOCATED( surf_target%sasws ) .AND. & 5833 ALLOCATED( surf_file%sasws ) ) & 5834 surf_target%sasws = surf_file%sasws 5835 IF ( ALLOCATED( surf_target%mom_flux_uv ) .AND. & 5836 ALLOCATED( surf_file%mom_flux_uv ) ) & 5837 surf_target%mom_flux_uv = & 5838 surf_file%mom_flux_uv 5839 IF ( ALLOCATED( surf_target%mom_flux_w ) .AND. & 5840 ALLOCATED( surf_file%mom_flux_w ) ) & 5841 surf_target%mom_flux_w = & 5842 surf_file%mom_flux_w 5843 IF ( ALLOCATED( surf_target%mom_flux_tke ) .AND. & 5844 ALLOCATED( surf_file%mom_flux_tke ) ) & 5845 surf_target%mom_flux_tke(0:1,:) = & 5846 surf_file%mom_flux_tke(0:1,:) 5847 5848 5849 END SUBROUTINE restore_surface_elements 5850 5851 END SUBROUTINE surface_rrd_local_mpi 5852 5853 5854 5406 5855 5407 5856
Note: See TracChangeset
for help on using the changeset viewer.