[4] | 1 | !> \file output_green_mod-0.4.f90 |
---|
| 2 | !! Module d'ecriture des output |
---|
| 3 | !< |
---|
| 4 | |
---|
| 5 | !> \namespace output_greenmint_mod |
---|
| 6 | !! Module d'ecriture des output |
---|
| 7 | !! \author ... |
---|
| 8 | !! \date ... |
---|
| 9 | !! @note Used module |
---|
| 10 | !! @note - use module3D_phy |
---|
| 11 | !< |
---|
| 12 | |
---|
| 13 | module output_greenmint_mod |
---|
| 14 | |
---|
| 15 | use module3d_phy |
---|
| 16 | |
---|
| 17 | |
---|
| 18 | implicit none |
---|
| 19 | |
---|
| 20 | |
---|
| 21 | real :: bmean !< bilan de masse moyen |
---|
| 22 | real :: accmean !< accumulation moyenne |
---|
| 23 | real :: ablmean !< ablation moyenne |
---|
| 24 | real :: calvmean !< moyenne calving |
---|
| 25 | real :: ablbordmean !< ablation sur les bords |
---|
| 26 | real :: bmeltmean !< moyenne fusion basale |
---|
| 27 | real :: tbmean !< temperature basale moyenne |
---|
| 28 | real :: vsmean !< vitesse de surface moyenne |
---|
| 29 | real :: hdotmean !< moyenne derivee / temps de h |
---|
| 30 | real :: bdotmean !< moyenne bedrock derive / temps |
---|
| 31 | real :: volf !< volume au dessus de la flottaison |
---|
| 32 | real :: volg !< volume glace posee |
---|
| 33 | real :: vol_shelf !< volume ice shelf |
---|
| 34 | integer :: npg !< nombre de points englaces-poses |
---|
| 35 | integer :: nf !< nombre de points englaces-flottants |
---|
| 36 | integer :: nabl !< nombre de points zone d'ablation |
---|
| 37 | |
---|
| 38 | |
---|
| 39 | CONTAINS |
---|
| 40 | |
---|
| 41 | subroutine init_outshort |
---|
| 42 | |
---|
| 43 | ndisp=100 ! ndisp sortie courte tous les ndisp |
---|
| 44 | |
---|
| 45 | end subroutine init_outshort |
---|
| 46 | |
---|
| 47 | |
---|
| 48 | |
---|
| 49 | !_________________________________________________________________________ |
---|
| 50 | subroutine shortoutput |
---|
| 51 | |
---|
| 52 | ! 1_initialization |
---|
| 53 | !------------------ |
---|
| 54 | real :: smax ! pour calculer la surface max |
---|
| 55 | real :: hmax ! pour calculer l'epaisseur max |
---|
| 56 | |
---|
| 57 | npg=0 |
---|
| 58 | nf=0 |
---|
| 59 | nabl=0 |
---|
| 60 | |
---|
| 61 | hmax=0. |
---|
| 62 | smax=0. |
---|
| 63 | bmean=0. |
---|
| 64 | accmean=0. |
---|
| 65 | ablmean=0. |
---|
| 66 | calvmean=0. |
---|
| 67 | ablbordmean=0. |
---|
| 68 | bmeltmean=0. |
---|
| 69 | tbmean=0. |
---|
| 70 | hdotmean=0. |
---|
| 71 | bdotmean=0. |
---|
| 72 | volf=0. |
---|
| 73 | volg=0. |
---|
| 74 | vol_shelf=0. |
---|
| 75 | |
---|
| 76 | ! 2_preparing outputs |
---|
| 77 | !-------------------- |
---|
| 78 | do j=1,ny |
---|
| 79 | do i=1,nx |
---|
| 80 | |
---|
| 81 | pose: if (.not.flot(i,j)) then ! glace posee |
---|
| 82 | if (h(i,j).gt.1.) then ! points englaces |
---|
| 83 | npg=npg+1 |
---|
| 84 | volg=volg+h(i,j) |
---|
| 85 | |
---|
| 86 | ! nombre de points dans la zone d'ablation |
---|
| 87 | if (bm(i,j).lt.0.) nabl=nabl+1 |
---|
| 88 | |
---|
| 89 | ! calcul de la hauteur au dessus de la flottaison |
---|
| 90 | |
---|
| 91 | if (sealevel-B(i,j).le.0.) then ! socle au dessus du niveau des mers |
---|
| 92 | volf=volf+h(i,j) |
---|
| 93 | else |
---|
| 94 | volf=volf+h(i,j)-row/ro*(sealevel-b(i,j)) |
---|
| 95 | endif |
---|
| 96 | |
---|
| 97 | ! recherche de l'epaisseur et surface max |
---|
| 98 | hmax=max(h(i,j),hmax) |
---|
| 99 | smax=max(s(i,j),smax) |
---|
| 100 | bmean=bm(i,j)+bmean |
---|
| 101 | accmean=acc(i,j)+accmean |
---|
| 102 | tbmean=tbmean+t(i,j,nz) |
---|
| 103 | vsmean=vsmean+sqrt(ux(i,j,1)**2+uy(i,j,1)**2) |
---|
| 104 | hdotmean=hdotmean+abs(hdot(i,j)) |
---|
| 105 | bdotmean=bdotmean+abs(bdot(i,j)) |
---|
| 106 | bmeltmean=bmeltmean+bmelt(i,j) |
---|
| 107 | endif |
---|
| 108 | calvmean=calvmean+calv(i,j) |
---|
| 109 | ablbordmean=ablbordmean+ablbord(i,j) |
---|
| 110 | |
---|
| 111 | else ! glace flottante |
---|
| 112 | if (h(i,j).gt.1.) then ! points englaces |
---|
| 113 | nf=nf+1 |
---|
| 114 | vol_shelf=vol_shelf+H(i,j) |
---|
| 115 | end if |
---|
| 116 | end if pose |
---|
| 117 | |
---|
| 118 | |
---|
| 119 | end do |
---|
| 120 | end do |
---|
| 121 | |
---|
| 122 | ! moyennes |
---|
| 123 | if (npg.ne.0) then |
---|
| 124 | hmean=volg/npg |
---|
| 125 | bmean=bmean/npg |
---|
| 126 | accmean=accmean/npg |
---|
| 127 | ablmean=bmean-accmean |
---|
| 128 | calvmean=calvmean/npg |
---|
| 129 | bmeltmean=bmeltmean/npg |
---|
| 130 | ablbordmean=ablbordmean/npg |
---|
| 131 | tbmean=tbmean/npg |
---|
| 132 | vsmean=vsmean/npg |
---|
| 133 | hdotmean=hdotmean/npg |
---|
| 134 | bdotmean=bdotmean/npg |
---|
| 135 | endif |
---|
| 136 | |
---|
| 137 | volg=volg*dx*dy |
---|
| 138 | volf=volf*dx*dy |
---|
| 139 | vol_shelf=vol_shelf*dx*dy |
---|
| 140 | |
---|
| 141 | |
---|
| 142 | ! 2_writing outputs |
---|
| 143 | !------------------ |
---|
| 144 | |
---|
| 145 | write(num_ritz,904) nt,time,tafor,sealevel, & ! temps, forcages |
---|
| 146 | volg,volf,vol_shelf, & ! volumes 5,6,7 |
---|
| 147 | npg*dx*dy,nf*dx*dy,nabl*dx*dy, & ! surfaces 8,9,10 |
---|
| 148 | bmean,accmean,ablmean,hdotmean, & ! bilans 11,12 |
---|
| 149 | nint(hmean),nint(smax), & ! epaisseurs |
---|
| 150 | nint(vsmean),tbmean ! vitesse,tbmean |
---|
| 151 | |
---|
| 152 | |
---|
| 153 | 904 format(i8,1x,f0.2,1x,f0.4,1x,f0.2,1x,10(es11.4,1x),3(i0,1x),f0.3) |
---|
| 154 | |
---|
| 155 | end subroutine shortoutput |
---|
| 156 | end module output_greenmint_mod |
---|