Changeset 5704 for branches/2015/dev_r5072_UKMO2_OBS_simplification/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
- Timestamp:
- 2015-08-21T15:00:38+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5072_UKMO2_OBS_simplification/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r5682 r5704 137 137 REAL(dp) :: rn_dobsini ! Obs window start date YYYYMMDD.HHMMSS 138 138 REAL(dp) :: rn_dobsend ! Obs window end date YYYYMMDD.HHMMSS 139 REAL(wp), DIMENSION(jpi,jpj) :: &139 REAL(wp), POINTER, DIMENSION(:,:) :: & 140 140 & zglam1, & ! Model longitudes for profile variable 1 141 141 & zglam2 ! Model longitudes for profile variable 2 142 REAL(wp), DIMENSION(jpi,jpj) :: &142 REAL(wp), POINTER, DIMENSION(:,:) :: & 143 143 & zgphi1, & ! Model latitudes for profile variable 1 144 144 & zgphi2 ! Model latitudes for profile variable 2 145 REAL(wp), DIMENSION(jpi,jpj,jpk) :: &145 REAL(wp), POINTER, DIMENSION(:,:,:) :: & 146 146 & zmask1, & ! Model land/sea mask associated with variable 1 147 147 & zmask2 ! Model land/sea mask associated with variable 2 … … 159 159 & nn_msshc, rn_mdtcorr, rn_mdtcutoff, & 160 160 & nn_profdavtypes 161 162 CALL wrk_alloc( jpi, jpj, zglam1 ) 163 CALL wrk_alloc( jpi, jpj, zglam2 ) 164 CALL wrk_alloc( jpi, jpj, zgphi1 ) 165 CALL wrk_alloc( jpi, jpj, zgphi2 ) 166 CALL wrk_alloc( jpi, jpj, jpk, zmask1 ) 167 CALL wrk_alloc( jpi, jpj, jpk, zmask2 ) 161 168 162 169 !----------------------------------------------------------------------- … … 409 416 CALL obs_pre_prof( profdata(jtype), profdataqc(jtype), & 410 417 & llvar1, llvar2, & 418 & jpi, jpj, jpk, & 411 419 & zmask1, zglam1, zgphi1, zmask2, zglam2, zgphi2, & 412 420 & ln_nea, kdailyavtypes = nn_profdavtypes ) … … 451 459 452 460 ENDIF 461 462 CALL wrk_dealloc( jpi, jpj, zglam1 ) 463 CALL wrk_dealloc( jpi, jpj, zglam2 ) 464 CALL wrk_dealloc( jpi, jpj, zgphi1 ) 465 CALL wrk_dealloc( jpi, jpj, zgphi2 ) 466 CALL wrk_dealloc( jpi, jpj, jpk, zmask1 ) 467 CALL wrk_dealloc( jpi, jpj, jpk, zmask2 ) 453 468 454 469 END SUBROUTINE dia_obs_init … … 500 515 INTEGER :: jtype ! Data loop variable 501 516 INTEGER :: jvar ! Variable number 502 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 517 INTEGER :: ji, jj ! Loop counters 518 REAL(wp), POINTER, DIMENSION(:,:,:) :: & 503 519 & zprofvar1, & ! Model values for 1st variable in a prof ob 504 520 & zprofvar2 ! Model values for 2nd variable in a prof ob 505 REAL(wp), DIMENSION(jpi,jpj,jpk) :: &521 REAL(wp), POINTER, DIMENSION(:,:,:) :: & 506 522 & zprofmask1, & ! Mask associated with zprofvar1 507 523 & zprofmask2 ! Mask associated with zprofvar2 508 REAL(wp), DIMENSION(jpi,jpj):: &524 REAL(wp), POINTER, DIMENSION(:,:) :: & 509 525 & zsurfvar ! Model values equivalent to surface ob. 510 REAL(wp), DIMENSION(jpi,jpj) :: &526 REAL(wp), POINTER, DIMENSION(:,:) :: & 511 527 & zglam1, & ! Model longitudes for prof variable 1 512 528 & zglam2, & ! Model longitudes for prof variable 2 … … 518 534 LOGICAL :: llnightav ! Logical for calculating night-time average 519 535 536 !Allocate local work arrays 537 CALL wrk_alloc( jpi, jpj, jpk, zprofvar1 ) 538 CALL wrk_alloc( jpi, jpj, jpk, zprofvar2 ) 539 CALL wrk_alloc( jpi, jpj, jpk, zprofmask1 ) 540 CALL wrk_alloc( jpi, jpj, jpk, zprofmask2 ) 541 CALL wrk_alloc( jpi, jpj, zsurfvar ) 542 CALL wrk_alloc( jpi, jpj, zglam1 ) 543 CALL wrk_alloc( jpi, jpj, zglam2 ) 544 CALL wrk_alloc( jpi, jpj, zgphi1 ) 545 CALL wrk_alloc( jpi, jpj, zgphi2 ) 520 546 #if ! defined key_lim2 && ! defined key_lim3 521 547 CALL wrk_alloc(jpi,jpj,frld) … … 591 617 #if defined key_lim2 || defined key_lim3 592 618 CASE('sic') 593 zsurfvar(:,:) = 1._wp - frld(:,:) 619 IF ( kstp == 0 ) THEN 620 IF ( lwp .AND. surfdataqc(jtype)%nsstpmpp(1) > 0 ) THEN 621 CALL ctl_warn( 'Sea-ice not initialised on zeroth '// & 622 & 'time-step but some obs are valid then.' ) 623 WRITE(numout,*)surfdataqc(jtype)%nsstpmpp(1), & 624 & ' sea-ice obs will be missed' 625 ENDIF 626 surfdataqc(jtype)%nsurfup = surfdataqc(jtype)%nsurfup + & 627 & surfdataqc(jtype)%nsstp(1) 628 CYCLE 629 ELSE 630 zsurfvar(:,:) = 1._wp - frld(:,:) 631 ENDIF 632 594 633 llnightav = .FALSE. 595 634 #endif … … 604 643 ENDIF 605 644 645 CALL wrk_dealloc( jpi, jpj, jpk, zprofvar1 ) 646 CALL wrk_dealloc( jpi, jpj, jpk, zprofvar2 ) 647 CALL wrk_dealloc( jpi, jpj, jpk, zprofmask1 ) 648 CALL wrk_dealloc( jpi, jpj, jpk, zprofmask2 ) 649 CALL wrk_dealloc( jpi, jpj, zsurfvar ) 650 CALL wrk_dealloc( jpi, jpj, zglam1 ) 651 CALL wrk_dealloc( jpi, jpj, zglam2 ) 652 CALL wrk_dealloc( jpi, jpj, zgphi1 ) 653 CALL wrk_dealloc( jpi, jpj, zgphi2 ) 606 654 #if ! defined key_lim2 && ! defined key_lim3 607 CALL wrk_dealloc(jpi,jpj,frld) 655 CALL wrk_dealloc(jpi,jpj,frld) 608 656 #endif 609 657 610 658 END SUBROUTINE dia_obs 611 659 612 SUBROUTINE dia_obs_wri 660 SUBROUTINE dia_obs_wri 613 661 !!---------------------------------------------------------------------- 614 662 !! *** ROUTINE dia_obs_wri *** … … 618 666 !! ** Method : Call observation diagnostic output routines 619 667 !! 620 !! ** Action : 668 !! ** Action : 621 669 !! 622 670 !! History : … … 628 676 !! ! 15-08 (M. Martin) Combined writing for prof and surf types 629 677 !!---------------------------------------------------------------------- 678 !! * Modules used 679 USE obs_rot_vel ! Rotation of velocities 680 630 681 IMPLICIT NONE 631 682 632 683 !! * Local declarations 633 684 INTEGER :: jtype ! Data set loop variable 685 INTEGER :: jo, jvar, jk 686 REAL(wp), DIMENSION(:), ALLOCATABLE :: & 687 & zu, & 688 & zv 634 689 635 690 !----------------------------------------------------------------------- … … 640 695 641 696 DO jtype = 1, nproftypes 697 698 IF ( TRIM(cobstypesprof(jtype)) == 'vel' ) THEN 699 700 ! For velocity data, rotate the model velocities to N/S, E/W 701 ! using the compressed data structure. 702 ALLOCATE( & 703 & zu(profdataqc(jtype)%nvprot(1)), & 704 & zv(profdataqc(jtype)%nvprot(2)) & 705 & ) 706 707 CALL obs_rotvel( profdataqc(jtype), nn_2dint, zu, zv ) 708 709 DO jo = 1, profdataqc(jtype)%nprof 710 DO jvar = 1, 2 711 DO jk = profdataqc(jtype)%npvsta(jo,jvar), profdataqc(jtype)%npvend(jo,jvar) 712 713 IF ( jvar == 1 ) THEN 714 profdataqc(jtype)%var(jvar)%vmod(jk) = zu(jk) 715 ELSE 716 profdataqc(jtype)%var(jvar)%vmod(jk) = zv(jk) 717 ENDIF 718 719 END DO 720 END DO 721 END DO 722 723 DEALLOCATE( zu ) 724 DEALLOCATE( zv ) 725 726 END IF 642 727 643 728 CALL obs_prof_decompress( profdataqc(jtype), & 644 729 & profdata(jtype), .TRUE., numout ) 645 730 646 CALL obs_wri_prof( profdata(jtype) , nn_2dint)731 CALL obs_wri_prof( profdata(jtype) ) 647 732 648 733 END DO
Note: See TracChangeset
for help on using the changeset viewer.