Ignore:
Timestamp:
12/10/09 17:26:03 (15 years ago)
Author:
bellier
Message:

Update to FORTRAN 90

File:
1 edited

Legend:

Unmodified
Added
Removed
  • IOIPSL/trunk/src/histcom.f90

    r806 r845  
    8888  CHARACTER(LEN=80) :: title,std_name,fullop 
    8989  CHARACTER(LEN=7)  :: topp 
    90   CHARACTER(LEN=7),DIMENSION(nbopp_max) :: sopps 
     90  CHARACTER(LEN=7),DIMENSION(nbopp_max) :: sopp 
    9191  REAL,DIMENSION(nbopp_max) :: scal 
    9292!-External type (for R4/R8) 
     
    11581158  CHARACTER(LEN=40) :: str40 
    11591159  CHARACTER(LEN=10) :: str10 
    1160   CHARACTER(LEN=80) :: tmp_str80 
    1161   CHARACTER(LEN=7) :: tmp_topp,tmp_sopp(nbopp_max) 
    11621160  CHARACTER(LEN=120) :: ex_topps 
    1163   REAL :: tmp_scal(nbopp_max),un_an,un_jour,test_fopp,test_fwrt 
     1161  REAL :: un_an,un_jour,test_fopp,test_fwrt 
    11641162  INTEGER :: pos,buff_sz 
    11651163  LOGICAL :: l_dbg 
     
    12111209!- 
    12121210  W_F(pfileid)%W_V(iv)%fullop = popp 
    1213   tmp_str80 = popp 
    12141211  CALL buildop & 
    1215  &  (tmp_str80,ex_topps,tmp_topp,nbopp_max,missing_val, & 
    1216  &   tmp_sopp,tmp_scal,W_F(pfileid)%W_V(iv)%nbopp) 
    1217 !- 
    1218   W_F(pfileid)%W_V(iv)%topp = tmp_topp 
    1219   DO i=1,W_F(pfileid)%W_V(iv)%nbopp 
    1220     W_F(pfileid)%W_V(iv)%sopps(i) = tmp_sopp(i) 
    1221     W_F(pfileid)%W_V(iv)%scal(i) = tmp_scal(i) 
    1222   ENDDO 
     1212 &  (TRIM(popp),ex_topps,W_F(pfileid)%W_V(iv)%topp,missing_val, & 
     1213 &   W_F(pfileid)%W_V(iv)%sopp,W_F(pfileid)%W_V(iv)%scal, & 
     1214 &   W_F(pfileid)%W_V(iv)%nbopp) 
    12231215!- 
    12241216! 1.2 If we have an even number of operations 
    12251217!     then we need to add identity 
    12261218!- 
    1227   IF (    2*INT(W_F(pfileid)%W_V(iv)%nbopp/2.0) & 
    1228  &     == W_F(pfileid)%W_V(iv)%nbopp) THEN 
     1219  IF ( MOD(W_F(pfileid)%W_V(iv)%nbopp,2) == 0) THEN 
    12291220    W_F(pfileid)%W_V(iv)%nbopp = W_F(pfileid)%W_V(iv)%nbopp+1 
    1230     W_F(pfileid)%W_V(iv)%sopps(W_F(pfileid)%W_V(iv)%nbopp) = 'ident' 
     1221    W_F(pfileid)%W_V(iv)%sopp(W_F(pfileid)%W_V(iv)%nbopp) = 'ident' 
    12311222    W_F(pfileid)%W_V(iv)%scal(W_F(pfileid)%W_V(iv)%nbopp) = missing_val 
    12321223  ENDIF 
     
    12441235  IF (l_dbg) THEN 
    12451236    WRITE(*,*) "histdef : 2.0",pfileid,iv,W_F(pfileid)%W_V(iv)%nbopp, & 
    1246  &    W_F(pfileid)%W_V(iv)%sopps(1:W_F(pfileid)%W_V(iv)%nbopp), & 
     1237 &    W_F(pfileid)%W_V(iv)%sopp(1:W_F(pfileid)%W_V(iv)%nbopp), & 
    12471238 &    W_F(pfileid)%W_V(iv)%scal(1:W_F(pfileid)%W_V(iv)%nbopp) 
    12481239  ENDIF 
     
    13481339!     which need bufferisation 
    13491340!- 
    1350   IF (     (TRIM(tmp_topp) /= "inst") & 
    1351  &    .AND.(TRIM(tmp_topp) /= "once") & 
    1352  &    .AND.(TRIM(tmp_topp) /= "never") )THEN 
     1341  IF (     (TRIM(W_F(pfileid)%W_V(iv)%topp) /= "inst") & 
     1342 &    .AND.(TRIM(W_F(pfileid)%W_V(iv)%topp) /= "once") & 
     1343 &    .AND.(TRIM(W_F(pfileid)%W_V(iv)%topp) /= "never") )THEN 
    13531344    W_F(pfileid)%W_V(iv)%point = buff_pos+1 
    13541345    buff_pos = buff_pos+buff_sz 
     
    14101401!     its compaticility with the choice of frequencies 
    14111402!- 
    1412   IF (TRIM(tmp_topp) == "inst") THEN 
     1403  IF (TRIM(W_F(pfileid)%W_V(iv)%topp) == "inst") THEN 
    14131404    IF (test_fopp /= test_fwrt) THEN 
    14141405      str70 = 'For instantaneous output the frequency '// & 
     
    14271418      ENDIF 
    14281419    ENDIF 
    1429   ELSE IF (INDEX(ex_topps,TRIM(tmp_topp)) > 0) THEN 
     1420  ELSE IF (INDEX(ex_topps,TRIM(W_F(pfileid)%W_V(iv)%topp)) > 0) THEN 
    14301421    IF (test_fopp > test_fwrt) THEN 
    14311422      str70 = 'For averages the frequency of operations '// & 
    1432 &             'should be smaller or equal' 
     1423 &            'should be smaller or equal' 
    14331424      WRITE(str71, & 
    14341425 &     '("to that of output. It is not the case for variable ",a)') & 
     
    14391430    ENDIF 
    14401431  ELSE 
    1441     WRITE (str70,'("Operation on variable ",a," is unknown")') & 
    1442 &    TRIM(tmp_name) 
    1443     WRITE (str71,'("operation requested is :",a)') tmp_topp 
     1432    WRITE (str70,'("Operation on variable ",A," is unknown")') & 
     1433 &   TRIM(tmp_name) 
     1434    WRITE (str71,'("operation requested is :",A)') & 
     1435 &   W_F(pfileid)%W_V(iv)%topp 
    14441436    WRITE (str72,'("File ID :",I3)') pfileid 
    14451437    CALL ipslerr (3,"histdef",str70,str71,str72) 
     
    14781470  IF (W_F(pfileid)%W_V(iv)%freq_wrt > 0) THEN 
    14791471    WRITE(str10,'(I8.8)') INT(W_F(pfileid)%W_V(iv)%freq_wrt) 
    1480     str40 = TRIM(tmp_topp)//"_"//TRIM(str10) 
     1472    str40 = TRIM(W_F(pfileid)%W_V(iv)%topp)//"_"//TRIM(str10) 
    14811473  ELSE 
    14821474    WRITE(str10,'(I2.2,"month")') ABS(INT(W_F(pfileid)%W_V(iv)%freq_wrt)) 
    1483     str40 = TRIM(tmp_topp)//"_"//TRIM(str10) 
     1475    str40 = TRIM(W_F(pfileid)%W_V(iv)%topp)//"_"//TRIM(str10) 
    14841476  ENDIF 
    14851477  CALL find_str (W_F(pfileid)%W_V(1:W_F(pfileid)%n_tax)%tax_name,str40,pos) 
     
    14871479! No time axis for once, l_max, l_min or never operation 
    14881480!- 
    1489   IF (     (TRIM(tmp_topp) /= 'once')  & 
    1490  &    .AND.(TRIM(tmp_topp) /= 'never') & 
    1491  &    .AND.(TRIM(tmp_topp) /= 'l_max') & 
    1492  &    .AND.(TRIM(tmp_topp) /= 'l_min') ) THEN 
     1481  IF (     (TRIM(W_F(pfileid)%W_V(iv)%topp) /= 'once')  & 
     1482 &    .AND.(TRIM(W_F(pfileid)%W_V(iv)%topp) /= 'never') & 
     1483 &    .AND.(TRIM(W_F(pfileid)%W_V(iv)%topp) /= 'l_max') & 
     1484 &    .AND.(TRIM(W_F(pfileid)%W_V(iv)%topp) /= 'l_min') ) THEN 
    14931485    IF (pos < 0) THEN 
    14941486      W_F(pfileid)%n_tax = W_F(pfileid)%n_tax+1 
     
    15001492    ENDIF 
    15011493  ELSE 
    1502     IF (l_dbg)   WRITE(*,*) "histdef : 7.0 ",TRIM(tmp_topp),'----' 
     1494    IF (l_dbg) THEN 
     1495      WRITE(*,*) "histdef : 7.0 ",TRIM(W_F(pfileid)%W_V(iv)%topp),'----' 
     1496    ENDIF 
    15031497    W_F(pfileid)%W_V(iv)%t_axid = -99 
    15041498  ENDIF 
     
    15071501!     for never or once operation 
    15081502!- 
    1509   IF (    (TRIM(tmp_topp) == 'once')  & 
    1510  &    .OR.(TRIM(tmp_topp) == 'never') ) THEN 
     1503  IF (    (TRIM(W_F(pfileid)%W_V(iv)%topp) == 'once')  & 
     1504 &    .OR.(TRIM(W_F(pfileid)%W_V(iv)%topp) == 'never') ) THEN 
    15111505    W_F(pfileid)%W_V(iv)%freq_opp = 0. 
    15121506    W_F(pfileid)%W_V(iv)%freq_wrt = 0. 
     
    18961890      largebuf = .FALSE. 
    18971891      DO io=1,W_F(pfileid)%W_V(varid)%nbopp 
    1898         IF (INDEX(fuchnbout,W_F(pfileid)%W_V(varid)%sopps(io)) > 0) THEN 
     1892        IF (INDEX(fuchnbout,W_F(pfileid)%W_V(varid)%sopp(io)) > 0) THEN 
    18991893          largebuf = .TRUE. 
    19001894        ENDIF 
     
    19481942    IF      (l1d) THEN 
    19491943      nbpt_in1 = W_F(pfileid)%W_V(varid)%datasz_in(1) 
    1950       CALL mathop (W_F(pfileid)%W_V(varid)%sopps(1),nbpt_in1,pdata_1d, & 
     1944      CALL mathop (W_F(pfileid)%W_V(varid)%sopp(1),nbpt_in1,pdata_1d, & 
    19511945 &                 missing_val,nbindex,nindex, & 
    19521946 &                 W_F(pfileid)%W_V(varid)%scal(1),nbpt_out,buff_tmp) 
    19531947    ELSE IF (l2d) THEN 
    19541948      nbpt_in2(1:2) = W_F(pfileid)%W_V(varid)%datasz_in(1:2) 
    1955       CALL mathop (W_F(pfileid)%W_V(varid)%sopps(1),nbpt_in2,pdata_2d, & 
     1949      CALL mathop (W_F(pfileid)%W_V(varid)%sopp(1),nbpt_in2,pdata_2d, & 
    19561950 &                 missing_val,nbindex,nindex, & 
    19571951 &                 W_F(pfileid)%W_V(varid)%scal(1),nbpt_out,buff_tmp) 
    19581952    ELSE IF (l3d) THEN 
    19591953      nbpt_in3(1:3) = W_F(pfileid)%W_V(varid)%datasz_in(1:3) 
    1960       CALL mathop (W_F(pfileid)%W_V(varid)%sopps(1),nbpt_in3,pdata_3d, & 
     1954      CALL mathop (W_F(pfileid)%W_V(varid)%sopp(1),nbpt_in3,pdata_3d, & 
    19611955 &                 missing_val,nbindex,nindex, & 
    19621956 &                 W_F(pfileid)%W_V(varid)%scal(1),nbpt_out,buff_tmp) 
     
    20902084      nbin = nbout 
    20912085      nbout = W_F(i)%W_V(varid)%datasz_max 
    2092       CALL mathop(W_F(i)%W_V(varid)%sopps(io),nbin,buff_tmp, & 
     2086      CALL mathop(W_F(i)%W_V(varid)%sopp(io),nbin,buff_tmp, & 
    20932087 &      missing_val,nbindex,nindex,W_F(i)%W_V(varid)%scal(io), & 
    20942088 &      nbout,buff_tmp2) 
    20952089      IF (l_dbg) THEN 
    20962090        WRITE(*,*) & 
    2097  &       "histwrite: 3.4a nbout : ",nbin,nbout,W_F(i)%W_V(varid)%sopps(io) 
     2091 &       "histwrite: 3.4a nbout : ",nbin,nbout,W_F(i)%W_V(varid)%sopp(io) 
    20982092      ENDIF 
    20992093!- 
    21002094      nbin = nbout 
    21012095      nbout = W_F(i)%W_V(varid)%datasz_max 
    2102       CALL mathop(W_F(i)%W_V(varid)%sopps(io+1),nbin,buff_tmp2, & 
     2096      CALL mathop(W_F(i)%W_V(varid)%sopp(io+1),nbin,buff_tmp2, & 
    21032097 &      missing_val,nbindex,nindex,W_F(i)%W_V(varid)%scal(io+1), & 
    21042098 &      nbout,buff_tmp) 
    21052099      IF (l_dbg) THEN 
    21062100        WRITE(*,*) & 
    2107  &     "histwrite: 3.4b nbout : ",nbin,nbout,W_F(i)%W_V(varid)%sopps(io+1) 
     2101 &     "histwrite: 3.4b nbout : ",nbin,nbout,W_F(i)%W_V(varid)%sopp(io+1) 
    21082102      ENDIF 
    21092103    ENDDO 
Note: See TracChangeset for help on using the changeset viewer.