Changes between Version 3 and Version 4 of WorkViovy
- Timestamp:
- 2010-11-24T09:23:51+01:00 (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
WorkViovy
v3 v4 15 15 == Work on convergence with sönke code == 16 16 17 1/ a problem when using the old photosynthesis. In diffuco_trans_co2 there where a divide by gstop not protected by a test gstop>0 18 we have to replace:19 ''DO inia=1,nia 20 17 1. a problem when using the old photosynthesis. In diffuco_trans_co2 there where a divide by gstop not protected by a test gstop>0 [[BR]] 18 we have to replace: 19 {{{ 20 DO inia=1,nia 21 21 ! 22 23 22 iainia=index_assi(inia) 24 25 23 ! 26 27 24 rveget(iainia,jv) = 1./gstop(iainia) 28 29 25 ! 30 31 ENDDO'' 32 33 by 34 ''DO inia=1,nia 35 26 ENDDO 27 }}} 28 by 29 {{{ 30 DO inia=1,nia 36 31 ! 37 38 32 iainia=index_assi(inia) 39 40 33 ! 41 42 34 IF (gstop(iainia) > min_sechiba) THEN 43 44 35 rveget(iainia,jv) = 1./gstop(iainia) 45 46 36 ELSE 47 48 37 rveget(iainia,jv) = 1e5 49 50 ENDIF 51 38 ENDIF 52 39 ! 53 54 ENDDO'' 55 56 and'' 57 58 DO inia=1,nia 59 40 ENDDO 41 }}} 42 and 43 {{{ 44 DO inia=1,nia 60 45 ! 61 62 46 iainia=index_assi(inia) 63 64 47 ! 65 66 48 ! rstruct is the difference between rtot (=1./gstot) and rveget 67 68 49 ! 69 70 50 rstruct(iainia,jv) = 1./gstot(iainia,jv) - & 71 72 51 rveget(iainia,jv) 73 74 52 ! 75 76 ENDDO'' 77 78 by 79 ''DO inia=1,nia 80 53 ENDDO 54 }}} 55 by 56 {{{ 57 DO inia=1,nia 81 58 ! 82 83 59 iainia=index_assi(inia) 84 85 60 ! 86 87 61 ! rstruct is the difference between rtot (=1./gstot) and rveget 88 89 62 ! 90 91 63 IF (gstot(iainia,jv) > min_sechiba) THEN 92 93 rstruct(iainia,jv) = 1./gstot(iainia,jv) - & 94 64 rstruct(iainia,jv) = 1./gstot(iainia,jv) - & 95 65 rveget(iainia,jv) 96 97 66 ELSE 98 99 67 rstruct(iainia,jv) =0 100 101 ENDIF 102 68 ENDIF 103 69 ! 104 105 ENDDO'' 106 107 108 2/ A problem in the first call to npp_calc. There is a line where scal = 1./ind(i,j) * cn_ind(i,j) whereas ind and cn_ind are not wet defined (so set to 0) 109 corrected by putting a return at the end of the initialisation block: 70 ENDDO 71 }}} 72 1. A problem in the first call to npp_calc. There is a line where scal = 1./ind(i,j) * cn_ind(i,j) whereas ind and cn_ind are not wet defined (so set to 0) 73 corrected by putting a return at the end of the initialisation block: 74 {{{ 110 75 IF (firstcall) THEN ..... 111 112 76 firstcall= .FALSE. 113 114 77 RETURN 115 116 78 ENDIF 117 118 119 3/ Somethink which is probably very machine dependent but on titane whish is very very sensitive to precision problem (also when using simple precision) but anyway better to correct it: 120 in stomate_season there is a calculation of rue_longterm 121 '' ! 122 123 ! 14.1 longterm radiation use efficiency 79 }}} 80 1. Something which is probably very machine dependent but on titane whish is very very sensitive to precision problem (also when using simple precision) but anyway better to correct it: in stomate_season there is a calculation of rue_longterm 81 {{{ 82 ! 83 ! 14.1 longterm radiation use efficiency 124 84 ! 125 85 DO j=2,nvm … … 128 88 gpp_daily(:,j) / (1. - exp(-0.5 * biomass(:,j,ileaf,icarbon)*sla(j))) * dt ) / (one_year) 129 89 ENDWHERE 130 ENDDO'' 131 in some case there is un FP error since (1. - exp(-0.5 * biomass(:,j,ileaf,icarbon)*sla(j))) * dt ) is probably near 0 132 so I replaced the: 133 '' WHERE(biomass(:,j,ileaf,icarbon)) .GT. min_stomate) 134 '' 135 by 136 '' WHERE((1. - exp(-0.5 * biomass(:,j,ileaf,icarbon)*sla(j))) .GT. min_stomate) 137 '' 90 ENDDO 91 }}} 92 in some case there is un FP error since (1. - exp(-0.5 * biomass(:,j,ileaf,icarbon)*sla(j))) * dt ) is probably near 0 so [[BR]] 93 I replaced the: 94 {{{ 95 WHERE(biomass(:,j,ileaf,icarbon)) .GT. min_stomate) 96 }}} 97 by 98 {{{ 99 WHERE((1. - exp(-0.5 * biomass(:,j,ileaf,icarbon)*sla(j))) .GT. min_stomate) 100 }}} 138 101