- Timestamp:
- 2020-04-03T18:54:55+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/ASM/asminc.F90
r12656 r12680 9 9 !! ! 2007-04 (A. Weaver) Merge with OPAVAR/NEMOVAR 10 10 !! NEMO 3.3 ! 2010-05 (D. Lea) Update to work with NEMO v3.2 11 !! - ! 2010-05 (D. Lea) add calc_month_len routine based on day_init 11 !! - ! 2010-05 (D. Lea) add calc_month_len routine based on day_init 12 12 !! 3.4 ! 2012-10 (A. Weaver and K. Mogensen) Fix for direct initialization 13 13 !! ! 2014-09 (D. Lea) Local calc_date removed use routine from OBS … … 31 31 USE zpshde ! Partial step : Horizontal Derivative 32 32 USE asmpar ! Parameters for the assmilation interface 33 USE asmbkg ! 33 USE asmbkg ! 34 34 USE c1d ! 1D initialization 35 35 USE sbc_oce ! Surface boundary condition variables. … … 45 45 IMPLICIT NONE 46 46 PRIVATE 47 47 48 48 PUBLIC asm_inc_init !: Initialize the increment arrays and IAU weights 49 49 PUBLIC tra_asm_inc !: Apply the tracer (T and S) increments … … 72 72 REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE :: u_bkg , v_bkg !: Background u- & v- velocity components 73 73 REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE :: t_bkginc, s_bkginc !: Increment to the background T & S 74 REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE :: u_bkginc, v_bkginc !: Increment to the u- & v-components 74 REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE :: u_bkginc, v_bkginc !: Increment to the u- & v-components 75 75 REAL(wp), PUBLIC, DIMENSION(:) , ALLOCATABLE :: wgtiau !: IAU weights for each time step 76 76 #if defined key_asminc … … 80 80 INTEGER , PUBLIC :: nitbkg !: Time step of the background state used in the Jb term 81 81 INTEGER , PUBLIC :: nitdin !: Time step of the background state for direct initialization 82 INTEGER , PUBLIC :: nitiaustr !: Time step of the start of the IAU interval 82 INTEGER , PUBLIC :: nitiaustr !: Time step of the start of the IAU interval 83 83 INTEGER , PUBLIC :: nitiaufin !: Time step of the end of the IAU interval 84 ! 84 ! 85 85 INTEGER , PUBLIC :: niaufn !: Type of IAU weighing function: = 0 Constant weighting 86 ! !: = 1 Linear hat-like, centred in middle of IAU interval 86 ! !: = 1 Linear hat-like, centred in middle of IAU interval 87 87 REAL(wp), PUBLIC :: salfixmin !: Ensure that the salinity is larger than this value if (ln_salfix) 88 88 … … 106 106 !!---------------------------------------------------------------------- 107 107 !! *** ROUTINE asm_inc_init *** 108 !! 108 !! 109 109 !! ** Purpose : Initialize the assimilation increment and IAU weights. 110 110 !! 111 111 !! ** Method : Initialize the assimilation increment and IAU weights. 112 112 !! 113 !! ** Action : 113 !! ** Action : 114 114 !!---------------------------------------------------------------------- 115 115 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices … … 263 263 ! 264 264 ! !--------------------------------------------------------- 265 IF( niaufn == 0 ) THEN ! Constant IAU forcing 265 IF( niaufn == 0 ) THEN ! Constant IAU forcing 266 266 ! !--------------------------------------------------------- 267 267 DO jt = 1, iiauper … … 269 269 END DO 270 270 ! !--------------------------------------------------------- 271 ELSEIF ( niaufn == 1 ) THEN ! Linear hat-like, centred in middle of IAU interval 271 ELSEIF ( niaufn == 1 ) THEN ! Linear hat-like, centred in middle of IAU interval 272 272 ! !--------------------------------------------------------- 273 273 ! Compute the normalization factor 274 274 znorm = 0._wp 275 275 IF( MOD( iiauper, 2 ) == 0 ) THEN ! Even number of time steps in IAU interval 276 imid = iiauper / 2 276 imid = iiauper / 2 277 277 DO jt = 1, imid 278 278 znorm = znorm + REAL( jt ) … … 280 280 znorm = 2.0 * znorm 281 281 ELSE ! Odd number of time steps in IAU interval 282 imid = ( iiauper + 1 ) / 2 282 imid = ( iiauper + 1 ) / 2 283 283 DO jt = 1, imid - 1 284 284 znorm = znorm + REAL( jt ) … … 307 307 DO jt = 1, icycper 308 308 ztotwgt = ztotwgt + wgtiau(jt) 309 WRITE(numout,*) ' ', jt, ' ', wgtiau(jt) 310 END DO 309 WRITE(numout,*) ' ', jt, ' ', wgtiau(jt) 310 END DO 311 311 WRITE(numout,*) ' ===================================' 312 312 WRITE(numout,*) ' Time-integrated weight = ', ztotwgt 313 313 WRITE(numout,*) ' ===================================' 314 314 ENDIF 315 315 316 316 ENDIF 317 317 … … 338 338 CALL iom_open( c_asminc, inum ) 339 339 ! 340 CALL iom_get( inum, 'time' , zdate_inc ) 340 CALL iom_get( inum, 'time' , zdate_inc ) 341 341 CALL iom_get( inum, 'z_inc_dateb', z_inc_dateb ) 342 342 CALL iom_get( inum, 'z_inc_datef', z_inc_datef ) … … 345 345 ! 346 346 IF(lwp) THEN 347 WRITE(numout,*) 347 WRITE(numout,*) 348 348 WRITE(numout,*) 'asm_inc_init : Assimilation increments valid between dates ', z_inc_dateb,' and ', z_inc_datef 349 349 WRITE(numout,*) '~~~~~~~~~~~~' … … 359 359 & ' not agree with Direct Initialization time' ) 360 360 361 IF ( ln_trainc ) THEN 361 IF ( ln_trainc ) THEN 362 362 CALL iom_get( inum, jpdom_autoglo, 'bckint', t_bkginc, 1 ) 363 363 CALL iom_get( inum, jpdom_autoglo, 'bckins', s_bkginc, 1 ) … … 371 371 ENDIF 372 372 373 IF ( ln_dyninc ) THEN 374 CALL iom_get( inum, jpdom_autoglo, 'bckinu', u_bkginc, 1 ) 375 CALL iom_get( inum, jpdom_autoglo, 'bckinv', v_bkginc, 1 ) 373 IF ( ln_dyninc ) THEN 374 CALL iom_get( inum, jpdom_autoglo, 'bckinu', u_bkginc, 1 ) 375 CALL iom_get( inum, jpdom_autoglo, 'bckinv', v_bkginc, 1 ) 376 376 ! Apply the masks 377 377 u_bkginc(:,:,:) = u_bkginc(:,:,:) * umask(:,:,:) … … 382 382 WHERE( ABS( v_bkginc(:,:,:) ) > 1.0e+10 ) v_bkginc(:,:,:) = 0.0 383 383 ENDIF 384 384 385 385 IF ( ln_sshinc ) THEN 386 386 CALL iom_get( inum, jpdom_autoglo, 'bckineta', ssh_bkginc, 1 ) … … 408 408 IF ( ln_dyninc .AND. nn_divdmp > 0 ) THEN ! Apply divergence damping filter 409 409 ! !-------------------------------------- 410 ALLOCATE( zhdiv(jpi,jpj) ) 410 ALLOCATE( zhdiv(jpi,jpj) ) 411 411 ! 412 412 DO jt = 1, nn_divdmp … … 427 427 & + 0.2_wp * ( zhdiv(ji+1,jj) - zhdiv(ji ,jj) ) * r1_e1u(ji,jj) * umask(ji,jj,jk) 428 428 v_bkginc(ji,jj,jk) = v_bkginc(ji,jj,jk) & 429 & + 0.2_wp * ( zhdiv(ji,jj+1) - zhdiv(ji,jj ) ) * r1_e2v(ji,jj) * vmask(ji,jj,jk) 429 & + 0.2_wp * ( zhdiv(ji,jj+1) - zhdiv(ji,jj ) ) * r1_e2v(ji,jj) * vmask(ji,jj,jk) 430 430 END_2D 431 431 END DO … … 433 433 END DO 434 434 ! 435 DEALLOCATE( zhdiv ) 435 DEALLOCATE( zhdiv ) 436 436 ! 437 437 ENDIF … … 454 454 CALL iom_open( c_asmdin, inum ) 455 455 ! 456 CALL iom_get( inum, 'rdastp', zdate_bkg ) 456 CALL iom_get( inum, 'rdastp', zdate_bkg ) 457 457 ! 458 458 IF(lwp) THEN 459 WRITE(numout,*) 459 WRITE(numout,*) 460 460 WRITE(numout,*) ' ==>>> Assimilation background state valid at : ', zdate_bkg 461 461 WRITE(numout,*) … … 466 466 & ' not agree with Direct Initialization time' ) 467 467 ! 468 IF ( ln_trainc ) THEN 468 IF ( ln_trainc ) THEN 469 469 CALL iom_get( inum, jpdom_autoglo, 'tn', t_bkg ) 470 470 CALL iom_get( inum, jpdom_autoglo, 'sn', s_bkg ) … … 473 473 ENDIF 474 474 ! 475 IF ( ln_dyninc ) THEN 475 IF ( ln_dyninc ) THEN 476 476 CALL iom_get( inum, jpdom_autoglo, 'un', u_bkg ) 477 477 CALL iom_get( inum, jpdom_autoglo, 'vn', v_bkg ) … … 501 501 ! 502 502 END SUBROUTINE asm_inc_init 503 504 503 504 505 505 SUBROUTINE tra_asm_inc( kt, Kbb, Kmm, pts, Krhs ) 506 506 !!---------------------------------------------------------------------- 507 507 !! *** ROUTINE tra_asm_inc *** 508 !! 508 !! 509 509 !! ** Purpose : Apply the tracer (T and S) assimilation increments 510 510 !! 511 511 !! ** Method : Direct initialization or Incremental Analysis Updating 512 512 !! 513 !! ** Action : 513 !! ** Action : 514 514 !!---------------------------------------------------------------------- 515 515 INTEGER , INTENT(in ) :: kt ! Current time step … … 523 523 !!---------------------------------------------------------------------- 524 524 ! 525 ! freezing point calculation taken from oc_fz_pt (but calculated for all depths) 526 ! used to prevent the applied increments taking the temperature below the local freezing point 525 ! freezing point calculation taken from oc_fz_pt (but calculated for all depths) 526 ! used to prevent the applied increments taking the temperature below the local freezing point 527 527 DO jk = 1, jpkm1 528 528 CALL eos_fzp( pts(:,:,jk,jp_sal,Kmm), fzptnz(:,:,jk), gdept(:,:,jk,Kmm) ) … … 539 539 ! 540 540 IF(lwp) THEN 541 WRITE(numout,*) 541 WRITE(numout,*) 542 542 WRITE(numout,*) 'tra_asm_inc : Tracer IAU at time step = ', kt,' with IAU weight = ', wgtiau(it) 543 543 WRITE(numout,*) '~~~~~~~~~~~~' … … 549 549 ! Do not apply negative increments if the temperature will fall below freezing 550 550 WHERE(t_bkginc(:,:,jk) > 0.0_wp .OR. & 551 & pts(:,:,jk,jp_tem,Kmm) + pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * wgtiau(it) > fzptnz(:,:,jk) ) 552 pts(:,:,jk,jp_tem,Krhs) = pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * zincwgt 551 & pts(:,:,jk,jp_tem,Kmm) + pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * wgtiau(it) > fzptnz(:,:,jk) ) 552 pts(:,:,jk,jp_tem,Krhs) = pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * zincwgt 553 553 END WHERE 554 554 ELSE 555 pts(:,:,jk,jp_tem,Krhs) = pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * zincwgt 555 pts(:,:,jk,jp_tem,Krhs) = pts(:,:,jk,jp_tem,Krhs) + t_bkginc(:,:,jk) * zincwgt 556 556 ENDIF 557 557 IF (ln_salfix) THEN … … 559 559 ! minimum value salfixmin 560 560 WHERE(s_bkginc(:,:,jk) > 0.0_wp .OR. & 561 & pts(:,:,jk,jp_sal,Kmm) + pts(:,:,jk,jp_sal,Krhs) + s_bkginc(:,:,jk) * wgtiau(it) > salfixmin ) 561 & pts(:,:,jk,jp_sal,Kmm) + pts(:,:,jk,jp_sal,Krhs) + s_bkginc(:,:,jk) * wgtiau(it) > salfixmin ) 562 562 pts(:,:,jk,jp_sal,Krhs) = pts(:,:,jk,jp_sal,Krhs) + s_bkginc(:,:,jk) * zincwgt 563 563 END WHERE … … 576 576 ELSEIF ( ln_asmdin ) THEN ! Direct Initialization 577 577 ! !-------------------------------------- 578 ! 578 ! 579 579 IF ( kt == nitdin_r ) THEN 580 580 ! … … 584 584 IF (ln_temnofreeze) THEN 585 585 ! Do not apply negative increments if the temperature will fall below freezing 586 WHERE( t_bkginc(:,:,:) > 0.0_wp .OR. pts(:,:,:,jp_tem,Kmm) + t_bkginc(:,:,:) > fzptnz(:,:,:) ) 587 pts(:,:,:,jp_tem,Kmm) = t_bkg(:,:,:) + t_bkginc(:,:,:) 586 WHERE( t_bkginc(:,:,:) > 0.0_wp .OR. pts(:,:,:,jp_tem,Kmm) + t_bkginc(:,:,:) > fzptnz(:,:,:) ) 587 pts(:,:,:,jp_tem,Kmm) = t_bkg(:,:,:) + t_bkginc(:,:,:) 588 588 END WHERE 589 589 ELSE 590 pts(:,:,:,jp_tem,Kmm) = t_bkg(:,:,:) + t_bkginc(:,:,:) 590 pts(:,:,:,jp_tem,Kmm) = t_bkg(:,:,:) + t_bkginc(:,:,:) 591 591 ENDIF 592 592 IF (ln_salfix) THEN 593 593 ! Do not apply negative increments if the salinity will fall below a specified 594 594 ! minimum value salfixmin 595 WHERE( s_bkginc(:,:,:) > 0.0_wp .OR. pts(:,:,:,jp_sal,Kmm) + s_bkginc(:,:,:) > salfixmin ) 596 pts(:,:,:,jp_sal,Kmm) = s_bkg(:,:,:) + s_bkginc(:,:,:) 595 WHERE( s_bkginc(:,:,:) > 0.0_wp .OR. pts(:,:,:,jp_sal,Kmm) + s_bkginc(:,:,:) > salfixmin ) 596 pts(:,:,:,jp_sal,Kmm) = s_bkg(:,:,:) + s_bkginc(:,:,:) 597 597 END WHERE 598 598 ELSE 599 pts(:,:,:,jp_sal,Kmm) = s_bkg(:,:,:) + s_bkginc(:,:,:) 599 pts(:,:,:,jp_sal,Kmm) = s_bkg(:,:,:) + s_bkginc(:,:,:) 600 600 ENDIF 601 601 … … 619 619 DEALLOCATE( s_bkg ) 620 620 ENDIF 621 ! 621 ! 622 622 ENDIF 623 623 ! Perhaps the following call should be in step … … 630 630 !!---------------------------------------------------------------------- 631 631 !! *** ROUTINE dyn_asm_inc *** 632 !! 632 !! 633 633 !! ** Purpose : Apply the dynamics (u and v) assimilation increments. 634 634 !! 635 635 !! ** Method : Direct initialization or Incremental Analysis Updating. 636 636 !! 637 !! ** Action : 637 !! ** Action : 638 638 !!---------------------------------------------------------------------- 639 639 INTEGER , INTENT( in ) :: kt ! ocean time-step index … … 656 656 ! 657 657 IF(lwp) THEN 658 WRITE(numout,*) 658 WRITE(numout,*) 659 659 WRITE(numout,*) 'dyn_asm_inc : Dynamics IAU at time step = ', kt,' with IAU weight = ', wgtiau(it) 660 660 WRITE(numout,*) '~~~~~~~~~~~~' … … 676 676 ELSEIF ( ln_asmdin ) THEN ! Direct Initialization 677 677 ! !----------------------------------------- 678 ! 678 ! 679 679 IF ( kt == nitdin_r ) THEN 680 680 ! … … 683 683 ! Initialize the now fields with the background + increment 684 684 puu(:,:,:,Kmm) = u_bkg(:,:,:) + u_bkginc(:,:,:) 685 pvv(:,:,:,Kmm) = v_bkg(:,:,:) + v_bkginc(:,:,:) 685 pvv(:,:,:,Kmm) = v_bkg(:,:,:) + v_bkginc(:,:,:) 686 686 ! 687 687 puu(:,:,:,Kbb) = puu(:,:,:,Kmm) ! Update before fields … … 702 702 !!---------------------------------------------------------------------- 703 703 !! *** ROUTINE ssh_asm_inc *** 704 !! 704 !! 705 705 !! ** Purpose : Apply the sea surface height assimilation increment. 706 706 !! 707 707 !! ** Method : Direct initialization or Incremental Analysis Updating. 708 708 !! 709 !! ** Action : 709 !! ** Action : 710 710 !!---------------------------------------------------------------------- 711 711 INTEGER, INTENT(IN) :: kt ! Current time step … … 727 727 ! 728 728 IF(lwp) THEN 729 WRITE(numout,*) 729 WRITE(numout,*) 730 730 WRITE(numout,*) 'ssh_asm_inc : SSH IAU at time step = ', & 731 731 & kt,' with IAU weight = ', wgtiau(it) … … 779 779 !! *** ROUTINE ssh_asm_div *** 780 780 !! 781 !! ** Purpose : ssh increment with z* is incorporated via a correction of the local divergence 781 !! ** Purpose : ssh increment with z* is incorporated via a correction of the local divergence 782 782 !! across all the water column 783 783 !! … … 795 795 REAL(wp), DIMENSION(:,:) , POINTER :: ztim ! local array 796 796 !!---------------------------------------------------------------------- 797 ! 797 ! 798 798 #if defined key_asminc 799 799 CALL ssh_asm_inc( kt, Kbb, Kmm ) !== (calculate increments) 800 800 ! 801 IF( ln_linssh ) THEN 801 IF( ln_linssh ) THEN 802 802 phdivn(:,:,1) = phdivn(:,:,1) - ssh_iau(:,:) / e3t(:,:,1,Kmm) * tmask(:,:,1) 803 ELSE 803 ELSE 804 804 ALLOCATE( ztim(jpi,jpj) ) 805 805 ztim(:,:) = ssh_iau(:,:) / ( ht(:,:) + 1.0 - ssmask(:,:) ) 806 DO jk = 1, jpkm1 807 phdivn(:,:,jk) = phdivn(:,:,jk) - ztim(:,:) * tmask(:,:,jk) 806 DO jk = 1, jpkm1 807 phdivn(:,:,jk) = phdivn(:,:,jk) - ztim(:,:) * tmask(:,:,jk) 808 808 END DO 809 809 ! … … 818 818 !!---------------------------------------------------------------------- 819 819 !! *** ROUTINE seaice_asm_inc *** 820 !! 820 !! 821 821 !! ** Purpose : Apply the sea ice assimilation increment. 822 822 !! 823 823 !! ** Method : Direct initialization or Incremental Analysis Updating. 824 824 !! 825 !! ** Action : 825 !! ** Action : 826 826 !! 827 827 !!---------------------------------------------------------------------- … … 844 844 ! 845 845 it = kt - nit000 + 1 846 zincwgt = wgtiau(it) ! IAU weight for the current time step 846 zincwgt = wgtiau(it) ! IAU weight for the current time step 847 847 ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments) 848 848 ! 849 849 IF(lwp) THEN 850 WRITE(numout,*) 850 WRITE(numout,*) 851 851 WRITE(numout,*) 'seaice_asm_inc : sea ice conc IAU at time step = ', kt,' with IAU weight = ', wgtiau(it) 852 852 WRITE(numout,*) '~~~~~~~~~~~~' … … 866 866 ! 867 867 ! Nudge sea ice depth to bring it up to a required minimum depth 868 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hm_i(:,:) < zhicifmin ) 869 zhicifinc(:,:) = (zhicifmin - hm_i(:,:)) * zincwgt 868 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hm_i(:,:) < zhicifmin ) 869 zhicifinc(:,:) = (zhicifmin - hm_i(:,:)) * zincwgt 870 870 ELSEWHERE 871 871 zhicifinc(:,:) = 0.0_wp … … 907 907 zofrld (:,:) = 1._wp - at_i(:,:) 908 908 zohicif(:,:) = hm_i(:,:) 909 ! 909 ! 910 910 ! Initialize the now fields the background + increment 911 911 at_i(:,:) = 1. - MIN( MAX( 1.-at_i(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 912 at_i_b(:,:) = at_i(:,:) 912 at_i_b(:,:) = at_i(:,:) 913 913 fr_i(:,:) = at_i(:,:) ! adjust ice fraction 914 914 ! … … 916 916 ! 917 917 ! Nudge sea ice depth to bring it up to a required minimum depth 918 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hm_i(:,:) < zhicifmin ) 918 WHERE( zseaicendg(:,:) > 0.0_wp .AND. hm_i(:,:) < zhicifmin ) 919 919 zhicifinc(:,:) = zhicifmin - hm_i(:,:) 920 920 ELSEWHERE … … 946 946 !#if defined defined key_si3 || defined key_cice 947 947 ! 948 ! IF (ln_seaicebal ) THEN 948 ! IF (ln_seaicebal ) THEN 949 949 ! !! balancing salinity increments 950 950 ! !! simple case from limflx.F90 (doesn't include a mass flux) … … 958 958 ! 959 959 ! DO jj = 1, jpj 960 ! DO ji = 1, jpi 960 ! DO ji = 1, jpi 961 961 ! ! calculate change in ice and snow mass per unit area 962 962 ! ! positive values imply adding salt to the ocean (results from ice formation) … … 969 969 ! 970 970 ! ! prevent small mld 971 ! ! less than 10m can cause salinity instability 971 ! ! less than 10m can cause salinity instability 972 972 ! IF (mld < 10) mld=10 973 973 ! 974 ! ! set to bottom of a level 974 ! ! set to bottom of a level 975 975 ! DO jk = jpk-1, 2, -1 976 ! IF ((mld > gdepw(ji,jj,jk)) .and. (mld < gdepw(ji,jj,jk+1))) THEN 976 ! IF ((mld > gdepw(ji,jj,jk)) .and. (mld < gdepw(ji,jj,jk+1))) THEN 977 977 ! mld=gdepw(ji,jj,jk+1) 978 978 ! jkmax=jk … … 981 981 ! 982 982 ! ! avoid applying salinity balancing in shallow water or on land 983 ! ! 983 ! ! 984 984 ! 985 985 ! ! dsal_ocn (psu kg m^-2) / (kg m^-3 * m) … … 992 992 ! 993 993 ! ! put increments in for levels in the mixed layer 994 ! ! but prevent salinity below a threshold value 995 ! 996 ! DO jk = 1, jkmax 997 ! 998 ! IF (dsal_ocn > 0.0_wp .or. sb(ji,jj,jk)+dsal_ocn > sal_thresh) THEN 994 ! ! but prevent salinity below a threshold value 995 ! 996 ! DO jk = 1, jkmax 997 ! 998 ! IF (dsal_ocn > 0.0_wp .or. sb(ji,jj,jk)+dsal_ocn > sal_thresh) THEN 999 999 ! sb(ji,jj,jk) = sb(ji,jj,jk) + dsal_ocn 1000 1000 ! sn(ji,jj,jk) = sn(ji,jj,jk) + dsal_ocn … … 1007 1007 ! ! 1008 1008 ! !! Adjust fsalt. A +ve fsalt means adding salt to ocean 1009 ! !! fsalt(ji,jj) = fsalt(ji,jj) + zpmess ! adjust fsalt 1010 ! !! 1011 ! !! emps(ji,jj) = emps(ji,jj) + zpmess ! or adjust emps (see icestp1d) 1009 ! !! fsalt(ji,jj) = fsalt(ji,jj) + zpmess ! adjust fsalt 1010 ! !! 1011 ! !! emps(ji,jj) = emps(ji,jj) + zpmess ! or adjust emps (see icestp1d) 1012 1012 ! !! ! E-P (kg m-2 s-2) 1013 1013 ! ! emp(ji,jj) = emp(ji,jj) + zpmess ! E-P (kg m-2 s-2) … … 1022 1022 ! 1023 1023 END SUBROUTINE seaice_asm_inc 1024 1024 1025 1025 !!====================================================================== 1026 1026 END MODULE asminc
Note: See TracChangeset
for help on using the changeset viewer.