Changeset 10969
- Timestamp:
- 2019-05-13T12:02:13+02:00 (6 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ASM/asmbkg.F90
r10425 r10969 52 52 CONTAINS 53 53 54 SUBROUTINE asm_bkg_wri( kt )54 SUBROUTINE asm_bkg_wri( kt, Kmm ) 55 55 !!----------------------------------------------------------------------- 56 56 !! *** ROUTINE asm_bkg_wri *** … … 65 65 !!----------------------------------------------------------------------- 66 66 INTEGER, INTENT( IN ) :: kt ! Current time-step 67 INTEGER, INTENT( IN ) :: Kmm ! time level index 67 68 ! 68 69 CHARACTER (LEN=50) :: cl_asmbkg … … 98 99 ! 99 100 ! ! Write the information 100 CALL iom_rstput( kt, nitbkg_r, inum, 'rdastp' , zdate )101 CALL iom_rstput( kt, nitbkg_r, inum, 'un' , u n)102 CALL iom_rstput( kt, nitbkg_r, inum, 'vn' , v n)103 CALL iom_rstput( kt, nitbkg_r, inum, 'tn' , ts n(:,:,:,jp_tem) )104 CALL iom_rstput( kt, nitbkg_r, inum, 'sn' , ts n(:,:,:,jp_sal) )105 CALL iom_rstput( kt, nitbkg_r, inum, 'sshn' , ssh n)106 IF( ln_zdftke ) CALL iom_rstput( kt, nitbkg_r, inum, 'en' , en 101 CALL iom_rstput( kt, nitbkg_r, inum, 'rdastp' , zdate ) 102 CALL iom_rstput( kt, nitbkg_r, inum, 'un' , uu(:,:,:,Kmm) ) 103 CALL iom_rstput( kt, nitbkg_r, inum, 'vn' , vv(:,:,:,Kmm) ) 104 CALL iom_rstput( kt, nitbkg_r, inum, 'tn' , ts(:,:,:,jp_tem,Kmm) ) 105 CALL iom_rstput( kt, nitbkg_r, inum, 'sn' , ts(:,:,:,jp_sal,Kmm) ) 106 CALL iom_rstput( kt, nitbkg_r, inum, 'sshn' , ssh(:,:,Kmm) ) 107 IF( ln_zdftke ) CALL iom_rstput( kt, nitbkg_r, inum, 'en' , en ) 107 108 ! 108 109 CALL iom_close( inum ) … … 133 134 ! 134 135 ! ! Write the information 135 CALL iom_rstput( kt, nitdin_r, inum, 'rdastp' , zdate )136 CALL iom_rstput( kt, nitdin_r, inum, 'un' , u n)137 CALL iom_rstput( kt, nitdin_r, inum, 'vn' , v n)138 CALL iom_rstput( kt, nitdin_r, inum, 'tn' , ts n(:,:,:,jp_tem) )139 CALL iom_rstput( kt, nitdin_r, inum, 'sn' , ts n(:,:,:,jp_sal) )140 CALL iom_rstput( kt, nitdin_r, inum, 'sshn' , ssh n)136 CALL iom_rstput( kt, nitdin_r, inum, 'rdastp' , zdate ) 137 CALL iom_rstput( kt, nitdin_r, inum, 'un' , uu(:,:,:,Kmm) ) 138 CALL iom_rstput( kt, nitdin_r, inum, 'vn' , vv(:,:,:,Kmm) ) 139 CALL iom_rstput( kt, nitdin_r, inum, 'tn' , ts(:,:,:,jp_tem,Kmm) ) 140 CALL iom_rstput( kt, nitdin_r, inum, 'sn' , ts(:,:,:,jp_sal,Kmm) ) 141 CALL iom_rstput( kt, nitdin_r, inum, 'sshn' , ssh(:,:,Kmm) ) 141 142 #if defined key_si3 142 143 IF( nn_ice == 2 ) THEN -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/ASM/asminc.F90
r10954 r10969 102 102 CONTAINS 103 103 104 SUBROUTINE asm_inc_init( K mm)104 SUBROUTINE asm_inc_init( Kbb, Kmm, Krhs ) 105 105 !!---------------------------------------------------------------------- 106 106 !! *** ROUTINE asm_inc_init *** … … 112 112 !! ** Action : 113 113 !!---------------------------------------------------------------------- 114 INTEGER, INTENT(in) :: Kmm ! time level index 114 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 115 ! 115 116 INTEGER :: ji, jj, jk, jt ! dummy loop indices 116 117 INTEGER :: imid, inum ! local integers … … 416 417 DO jj = 2, jpjm1 417 418 DO ji = fs_2, fs_jpim1 ! vector opt. 418 zhdiv(ji,jj) = ( e2u(ji ,jj) * e3u _n(ji ,jj,jk) * u_bkginc(ji ,jj,jk) &419 & - e2u(ji-1,jj) * e3u _n(ji-1,jj,jk) * u_bkginc(ji-1,jj,jk) &420 & + e1v(ji,jj ) * e3v _n(ji,jj ,jk) * v_bkginc(ji,jj ,jk) &421 & - e1v(ji,jj-1) * e3v _n(ji,jj-1,jk) * v_bkginc(ji,jj-1,jk) ) / e3t_n(ji,jj,jk)419 zhdiv(ji,jj) = ( e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) * u_bkginc(ji ,jj,jk) & 420 & - e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * u_bkginc(ji-1,jj,jk) & 421 & + e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) * v_bkginc(ji,jj ,jk) & 422 & - e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) * v_bkginc(ji,jj-1,jk) ) / e3t(ji,jj,jk,Kmm) 422 423 END DO 423 424 END DO … … 495 496 ! 496 497 IF( lk_asminc ) THEN !== data assimilation ==! 497 IF( ln_bkgwri ) CALL asm_bkg_wri( nit000 - 1 ) ! Output background fields498 IF( ln_bkgwri ) CALL asm_bkg_wri( nit000 - 1, Kmm ) ! Output background fields 498 499 IF( ln_asmdin ) THEN ! Direct initialization 499 IF( ln_trainc ) CALL tra_asm_inc( nit000 - 1, K mm) ! Tracers500 IF( ln_dyninc ) CALL dyn_asm_inc( nit000 - 1 ) ! Dynamics501 IF( ln_sshinc ) CALL ssh_asm_inc( nit000 - 1 )! SSH500 IF( ln_trainc ) CALL tra_asm_inc( nit000 - 1, Kbb, Kmm, ts , Krhs ) ! Tracers 501 IF( ln_dyninc ) CALL dyn_asm_inc( nit000 - 1, Kbb, Kmm, uu, vv, Krhs ) ! Dynamics 502 IF( ln_sshinc ) CALL ssh_asm_inc( nit000 - 1, Kbb, Kmm ) ! SSH 502 503 ENDIF 503 504 ENDIF … … 506 507 507 508 508 SUBROUTINE tra_asm_inc( kt, K mm)509 SUBROUTINE tra_asm_inc( kt, Kbb, Kmm, pts, Krhs ) 509 510 !!---------------------------------------------------------------------- 510 511 !! *** ROUTINE tra_asm_inc *** … … 516 517 !! ** Action : 517 518 !!---------------------------------------------------------------------- 518 INTEGER, INTENT(IN) :: kt ! Current time step 519 INTEGER, INTENT(IN) :: Kmm ! Current time level index 519 INTEGER , INTENT(in ) :: kt ! Current time step 520 INTEGER , INTENT(in ) :: Kbb, Kmm, Krhs ! Time level indices 521 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts ! active tracers and RHS of tracer equation 520 522 ! 521 523 INTEGER :: ji, jj, jk … … 528 530 ! used to prevent the applied increments taking the temperature below the local freezing point 529 531 DO jk = 1, jpkm1 530 CALL eos_fzp( tsn(:,:,jk,jp_sal), fzptnz(:,:,jk), gdept_n(:,:,jk) )532 CALL eos_fzp( pts(:,:,jk,jp_sal,Kmm), fzptnz(:,:,jk), gdept(:,:,jk,Kmm) ) 531 533 END DO 532 534 ! … … 551 553 ! Do not apply negative increments if the temperature will fall below freezing 552 554 WHERE(t_bkginc(:,:,jk) > 0.0_wp .OR. & 553 & tsn(:,:,jk,jp_tem) + tsa(:,:,jk,jp_tem) + t_bkginc(:,:,jk) * wgtiau(it) > fzptnz(:,:,jk) )554 tsa(:,:,jk,jp_tem) = tsa(:,:,jk,jp_tem) + t_bkginc(:,:,jk) * zincwgt555 & pts(:,:,jk,jp_tem,Kmm) + pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * wgtiau(it) > fzptnz(:,:,jk) ) 556 pts(:,:,jk,jp_tem,Krhs) = pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * zincwgt 555 557 END WHERE 556 558 ELSE 557 tsa(:,:,jk,jp_tem) = tsa(:,:,jk,jp_tem) + t_bkginc(:,:,jk) * zincwgt559 pts(:,:,jk,jp_tem,Krhs) = pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * zincwgt 558 560 ENDIF 559 561 IF (ln_salfix) THEN … … 561 563 ! minimum value salfixmin 562 564 WHERE(s_bkginc(:,:,jk) > 0.0_wp .OR. & 563 & tsn(:,:,jk,jp_sal) + tsa(:,:,jk,jp_sal) + s_bkginc(:,:,jk) * wgtiau(it) > salfixmin )564 tsa(:,:,jk,jp_sal) = tsa(:,:,jk,jp_sal) + s_bkginc(:,:,jk) * zincwgt565 & pts(:,:,jk,jp_sal,Kmm) + pts(:,:,jk,jp_sal,Krhs) + s_bkginc(:,:,jk) * wgtiau(it) > salfixmin ) 566 pts(:,:,jk,jp_sal,Krhs) = pts(:,:,jk,jp_sal,Krhs) + s_bkginc(:,:,jk) * zincwgt 565 567 END WHERE 566 568 ELSE 567 tsa(:,:,jk,jp_sal) = tsa(:,:,jk,jp_sal) + s_bkginc(:,:,jk) * zincwgt569 pts(:,:,jk,jp_sal,Krhs) = pts(:,:,jk,jp_sal,Krhs) + s_bkginc(:,:,jk) * zincwgt 568 570 ENDIF 569 571 END DO … … 586 588 IF (ln_temnofreeze) THEN 587 589 ! Do not apply negative increments if the temperature will fall below freezing 588 WHERE( t_bkginc(:,:,:) > 0.0_wp .OR. tsn(:,:,:,jp_tem) + t_bkginc(:,:,:) > fzptnz(:,:,:) )589 tsn(:,:,:,jp_tem) = t_bkg(:,:,:) + t_bkginc(:,:,:)590 WHERE( t_bkginc(:,:,:) > 0.0_wp .OR. pts(:,:,:,jp_tem,Kmm) + t_bkginc(:,:,:) > fzptnz(:,:,:) ) 591 pts(:,:,:,jp_tem,Kmm) = t_bkg(:,:,:) + t_bkginc(:,:,:) 590 592 END WHERE 591 593 ELSE 592 tsn(:,:,:,jp_tem) = t_bkg(:,:,:) + t_bkginc(:,:,:)594 pts(:,:,:,jp_tem,Kmm) = t_bkg(:,:,:) + t_bkginc(:,:,:) 593 595 ENDIF 594 596 IF (ln_salfix) THEN 595 597 ! Do not apply negative increments if the salinity will fall below a specified 596 598 ! minimum value salfixmin 597 WHERE( s_bkginc(:,:,:) > 0.0_wp .OR. tsn(:,:,:,jp_sal) + s_bkginc(:,:,:) > salfixmin )598 tsn(:,:,:,jp_sal) = s_bkg(:,:,:) + s_bkginc(:,:,:)599 WHERE( s_bkginc(:,:,:) > 0.0_wp .OR. pts(:,:,:,jp_sal,Kmm) + s_bkginc(:,:,:) > salfixmin ) 600 pts(:,:,:,jp_sal,Kmm) = s_bkg(:,:,:) + s_bkginc(:,:,:) 599 601 END WHERE 600 602 ELSE 601 tsn(:,:,:,jp_sal) = s_bkg(:,:,:) + s_bkginc(:,:,:)603 pts(:,:,:,jp_sal,Kmm) = s_bkg(:,:,:) + s_bkginc(:,:,:) 602 604 ENDIF 603 605 604 tsb(:,:,:,:) = tsn(:,:,:,:) ! Update before fields605 606 CALL eos( tsb, rhd, rhop, gdept_0(:,:,:) ) ! Before potential and in situ densities606 pts(:,:,:,:,Kbb) = pts(:,:,:,:,Kmm) ! Update before fields 607 608 CALL eos( pts(:,:,:,:,Kbb), rhd, rhop, gdept_0(:,:,:) ) ! Before potential and in situ densities 607 609 !!gm fabien 608 ! CALL eos( tsb, rhd, rhop ) ! Before potential and in situ densities610 ! CALL eos( pts(:,:,:,:,Kbb), rhd, rhop ) ! Before potential and in situ densities 609 611 !!gm 610 612 611 613 IF( ln_zps .AND. .NOT. lk_c1d .AND. .NOT. ln_isfcav) & 612 & CALL zps_hde ( kt, Kmm, jpts, tsb, gtsu, gtsv, & ! Partial steps: before horizontal gradient614 & CALL zps_hde ( kt, Kmm, jpts, pts(:,:,:,:,Kbb), gtsu, gtsv, & ! Partial steps: before horizontal gradient 613 615 & rhd, gru , grv ) ! of t, s, rd at the last ocean level 614 616 IF( ln_zps .AND. .NOT. lk_c1d .AND. ln_isfcav) & 615 & CALL zps_hde_isf( nit000, Kmm, jpts, tsb, gtsu, gtsv, gtui, gtvi, & ! Partial steps for top cell (ISF)617 & CALL zps_hde_isf( nit000, Kmm, jpts, pts(:,:,:,:,Kbb), gtsu, gtsv, gtui, gtvi, & ! Partial steps for top cell (ISF) 616 618 & rhd, gru , grv , grui, grvi ) ! of t, s, rd at the last ocean level 617 619 … … 629 631 630 632 631 SUBROUTINE dyn_asm_inc( kt )633 SUBROUTINE dyn_asm_inc( kt, Kbb, Kmm, puu, pvv, Krhs ) 632 634 !!---------------------------------------------------------------------- 633 635 !! *** ROUTINE dyn_asm_inc *** … … 639 641 !! ** Action : 640 642 !!---------------------------------------------------------------------- 641 INTEGER, INTENT(IN) :: kt ! Current time step 643 INTEGER , INTENT( in ) :: kt ! ocean time-step index 644 INTEGER , INTENT( in ) :: Kbb, Kmm, Krhs ! ocean time level indices 645 REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) :: puu, pvv ! ocean velocities and RHS of momentum equation 642 646 ! 643 647 INTEGER :: jk … … 663 667 ! Update the dynamic tendencies 664 668 DO jk = 1, jpkm1 665 ua(:,:,jk) = ua(:,:,jk) + u_bkginc(:,:,jk) * zincwgt666 va(:,:,jk) = va(:,:,jk) + v_bkginc(:,:,jk) * zincwgt669 puu(:,:,jk,Krhs) = puu(:,:,jk,Krhs) + u_bkginc(:,:,jk) * zincwgt 670 pvv(:,:,jk,Krhs) = pvv(:,:,jk,Krhs) + v_bkginc(:,:,jk) * zincwgt 667 671 END DO 668 672 ! … … 682 686 ! 683 687 ! Initialize the now fields with the background + increment 684 un(:,:,:) = u_bkg(:,:,:) + u_bkginc(:,:,:)685 vn(:,:,:) = v_bkg(:,:,:) + v_bkginc(:,:,:)686 ! 687 ub(:,:,:) = un(:,:,:) ! Update before fields688 vb(:,:,:) = vn(:,:,:)688 puu(:,:,:,Kmm) = u_bkg(:,:,:) + u_bkginc(:,:,:) 689 pvv(:,:,:,Kmm) = v_bkg(:,:,:) + v_bkginc(:,:,:) 690 ! 691 puu(:,:,:,Kbb) = puu(:,:,:,Kmm) ! Update before fields 692 pvv(:,:,:,Kbb) = pvv(:,:,:,Kmm) 689 693 ! 690 694 DEALLOCATE( u_bkg ) … … 699 703 700 704 701 SUBROUTINE ssh_asm_inc( kt )705 SUBROUTINE ssh_asm_inc( kt, Kbb, Kmm ) 702 706 !!---------------------------------------------------------------------- 703 707 !! *** ROUTINE ssh_asm_inc *** … … 709 713 !! ** Action : 710 714 !!---------------------------------------------------------------------- 711 INTEGER, INTENT(IN) :: kt ! Current time step 715 INTEGER, INTENT(IN) :: kt ! Current time step 716 INTEGER, INTENT(IN) :: Kbb, Kmm ! Current time step 712 717 ! 713 718 INTEGER :: it … … 756 761 neuler = 0 ! Force Euler forward step 757 762 ! 758 ssh n(:,:) = ssh_bkg(:,:) + ssh_bkginc(:,:) ! Initialize the now fields the background + increment759 ! 760 ssh b(:,:) = sshn(:,:) ! Update before fields761 e3t _b(:,:,:) = e3t_n(:,:,:)762 !!gm why not e3u _b, e3v_b, gdept_b????763 ssh(:,:,Kmm) = ssh_bkg(:,:) + ssh_bkginc(:,:) ! Initialize the now fields the background + increment 764 ! 765 ssh(:,:,Kbb) = ssh(:,:,Kmm) ! Update before fields 766 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 767 !!gm why not e3u(:,:,:,Kbb), e3v(:,:,:,Kbb), gdept(:,:,:,Kbb) ???? 763 768 ! 764 769 DEALLOCATE( ssh_bkg ) … … 772 777 773 778 774 SUBROUTINE ssh_asm_div( kt, phdivn )779 SUBROUTINE ssh_asm_div( kt, Kbb, Kmm, phdivn ) 775 780 !!---------------------------------------------------------------------- 776 781 !! *** ROUTINE ssh_asm_div *** … … 786 791 !!---------------------------------------------------------------------- 787 792 INTEGER, INTENT(IN) :: kt ! ocean time-step index 793 INTEGER, INTENT(IN) :: Kbb, Kmm ! time level indices 788 794 REAL(wp), DIMENSION(:,:,:), INTENT(inout) :: phdivn ! horizontal divergence 789 795 !! … … 793 799 ! 794 800 #if defined key_asminc 795 CALL ssh_asm_inc( kt ) !== (calculate increments)801 CALL ssh_asm_inc( kt, Kbb, Kmm ) !== (calculate increments) 796 802 ! 797 803 IF( ln_linssh ) THEN 798 phdivn(:,:,1) = phdivn(:,:,1) - ssh_iau(:,:) / e3t _n(:,:,1) * tmask(:,:,1)804 phdivn(:,:,1) = phdivn(:,:,1) - ssh_iau(:,:) / e3t(:,:,1,Kmm) * tmask(:,:,1) 799 805 ELSE 800 806 ALLOCATE( ztim(jpi,jpj) ) -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/C1D/step_c1d.F90
r10965 r10969 79 79 CALL zdf_phy( kstp ) ! vertical physics update (bfr, avt, avs, avm + MLD) 80 80 81 IF(.NOT.ln_linssh ) CALL ssh_nxt ( kstp ) ! after ssh (includes call to div_hor)81 IF(.NOT.ln_linssh ) CALL ssh_nxt ( kstp, Nbb, Nnn ) ! after ssh (includes call to div_hor) 82 82 IF(.NOT.ln_linssh ) CALL dom_vvl_sf_nxt( kstp ) ! after vertical scale factors 83 83 -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DOM/istate.F90
r10928 r10969 126 126 vv (:,:,:,Kmm) = vv (:,:,:,Kbb) 127 127 hdiv(:,:,jpk) = 0._wp ! bottom divergence set one for 0 to zero at jpk level 128 CALL div_hor( 0, K mm )! compute interior hdiv value128 CALL div_hor( 0, Kbb, Kmm ) ! compute interior hdiv value 129 129 !!gm hdiv(:,:,:) = 0._wp 130 130 -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/divhor.F90
r10928 r10969 48 48 CONTAINS 49 49 50 SUBROUTINE div_hor( kt, K mm )50 SUBROUTINE div_hor( kt, Kbb, Kmm ) 51 51 !!---------------------------------------------------------------------- 52 52 !! *** ROUTINE div_hor *** … … 60 60 !! ** Action : - update hdiv, the now horizontal divergence 61 61 !!---------------------------------------------------------------------- 62 INTEGER, INTENT(in) :: kt ! ocean time-step index63 INTEGER, INTENT(in) :: K mm ! ocean time level index62 INTEGER, INTENT(in) :: kt ! ocean time-step index 63 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 64 64 ! 65 65 INTEGER :: ji, jj, jk ! dummy loop indices … … 98 98 ! 99 99 #if defined key_asminc 100 IF( ln_sshinc .AND. ln_asmiau ) CALL ssh_asm_div( kt, hdiv ) !== SSH assimilation ==! (update hdiv field)100 IF( ln_sshinc .AND. ln_asmiau ) CALL ssh_asm_div( kt, Kbb, Kmm, hdiv ) !== SSH assimilation ==! (update hdiv field) 101 101 ! 102 102 #endif -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/DYN/sshwzv.F90
r10922 r10969 54 54 CONTAINS 55 55 56 SUBROUTINE ssh_nxt( kt, K mm )56 SUBROUTINE ssh_nxt( kt, Kbb, Kmm ) 57 57 !!---------------------------------------------------------------------- 58 58 !! *** ROUTINE ssh_nxt *** … … 68 68 !! Reference : Leclair, M., and G. Madec, 2009, Ocean Modelling. 69 69 !!---------------------------------------------------------------------- 70 INTEGER, INTENT(in) :: kt ! time step71 INTEGER, INTENT(in) :: K mm ! time level index70 INTEGER, INTENT(in) :: kt ! time step 71 INTEGER, INTENT(in) :: Kbb, Kmm ! time level index 72 72 ! 73 73 INTEGER :: jk ! dummy loop indice … … 95 95 ENDIF 96 96 97 CALL div_hor( kt, K mm )! Horizontal divergence97 CALL div_hor( kt, Kbb, Kmm ) ! Horizontal divergence 98 98 ! 99 99 zhdiv(:,:) = 0._wp -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90
r10965 r10969 435 435 CALL dia_obs( nit000 - 1, Nnn ) ! Observation operator for restart 436 436 ENDIF 437 IF( lk_asminc ) CALL asm_inc_init( N nn) ! Assimilation increments437 IF( lk_asminc ) CALL asm_inc_init( Nbb, Nnn, Nrhs ) ! Assimilation increments 438 438 ! 439 439 RETURN ! end of initialization … … 497 497 498 498 ! ! Assimilation increments 499 IF( lk_asminc ) CALL asm_inc_init( N nn )! Initialize assimilation increments499 IF( lk_asminc ) CALL asm_inc_init( Nbb, Nnn, Nrhs ) ! Initialize assimilation increments 500 500 ! 501 501 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90
r10965 r10969 165 165 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 166 166 167 CALL ssh_nxt ( kstp, N nn ) ! after ssh (includes call to div_hor)167 CALL ssh_nxt ( kstp, Nbb, Nnn ) ! after ssh (includes call to div_hor) 168 168 IF( .NOT.ln_linssh ) CALL dom_vvl_sf_nxt( kstp ) ! after vertical scale factors 169 169 CALL wzv ( kstp ) ! now cross-level velocity … … 187 187 188 188 IF( lk_asminc .AND. ln_asmiau .AND. ln_dyninc ) & 189 & CALL dyn_asm_inc ( kstp ) ! apply dynamics assimilation increment190 IF( ln_bdy ) CALL bdy_dyn3d_dmp ( kstp, Nbb, uu, vv, Nrhs ) ! bdy damping trends189 & CALL dyn_asm_inc ( kstp, Nbb, Nnn, uu, vv, Nrhs ) ! apply dynamics assimilation increment 190 IF( ln_bdy ) CALL bdy_dyn3d_dmp ( kstp, Nbb, uu, vv, Nrhs ) ! bdy damping trends 191 191 #if defined key_agrif 192 192 IF(.NOT. Agrif_Root()) & … … 202 202 ! With split-explicit free surface, since now transports have been updated and ssha as well 203 203 IF( ln_dynspg_ts ) THEN ! vertical scale factors and vertical velocity need to be updated 204 CALL div_hor ( kstp, N nn )! Horizontal divergence (2nd call in time-split case)204 CALL div_hor ( kstp, Nbb, Nnn ) ! Horizontal divergence (2nd call in time-split case) 205 205 IF(.NOT.ln_linssh) CALL dom_vvl_sf_nxt( kstp, kcall=2 ) ! after vertical scale factors (update depth average component) 206 206 CALL wzv ( kstp ) ! now cross-level velocity … … 241 241 242 242 IF( lk_asminc .AND. ln_asmiau .AND. & 243 & ln_trainc ) CALL tra_asm_inc ( kstp, N nn) ! apply tracer assimilation increment244 CALL tra_sbc ( kstp, Nnn, Nrhs ) ! surface boundary condition245 IF( ln_traqsr ) CALL tra_qsr ( kstp, Nnn, Nrhs ) ! penetrative solar radiation qsr246 IF( ln_trabbc ) CALL tra_bbc ( kstp, Nnn, Nrhs ) ! bottom heat flux243 & ln_trainc ) CALL tra_asm_inc ( kstp, Nbb, Nnn, ts, Nrhs ) ! apply tracer assimilation increment 244 CALL tra_sbc ( kstp, Nnn, Nrhs ) ! surface boundary condition 245 IF( ln_traqsr ) CALL tra_qsr ( kstp, Nnn, Nrhs ) ! penetrative solar radiation qsr 246 IF( ln_trabbc ) CALL tra_bbc ( kstp, Nnn, Nrhs ) ! bottom heat flux 247 247 IF( ln_trabbl ) CALL tra_bbl ( kstp, Nbb, Nnn, Nrhs ) ! advective (and/or diffusive) bottom boundary layer scheme 248 248 IF( ln_tradmp ) CALL tra_dmp ( kstp, Nbb, Nnn, Nrhs ) ! internal damping trends -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/TOP/trcsub.F90
r10963 r10969 488 488 ! 489 489 !!gm BUG here ! hdiv will include the runoff divergence at the wrong timestep !!!! 490 CALL div_hor( kt, K mm )! Horizontal divergence & Relative vorticity490 CALL div_hor( kt, Kbb, Kmm ) ! Horizontal divergence & Relative vorticity 491 491 ! 492 492 z2dt = 2._wp * rdt ! set time step size (Euler/Leapfrog)
Note: See TracChangeset
for help on using the changeset viewer.