Changeset 5099 for LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd
- Timestamp:
- Jul 22, 2024, 9:29:09 PM (4 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd/callphysiq_mod.F90
r5082 r5099 1 ! 1 2 2 ! $Id: $ 3 ! 3 4 4 MODULE callphysiq_mod 5 5 -
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd/ce0l.F90
r5088 r5099 1 1 PROGRAM ce0l 2 ! 2 3 3 !------------------------------------------------------------------------------- 4 4 ! Purpose: Initial states and boundary conditions files creation: … … 21 21 USE etat0phys, ONLY: etat0phys_netcdf 22 22 USE limit, ONLY: limit_netcdf 23 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_CLOSE, NF90_NOERR, &24 NF90_INQUIRE_DIMENSION, nf90_inq_dimid, NF90_INQ_VARID, NF90_GET_VAR23 USE netcdf, ONLY: NF90_OPEN, NF90_NOWRITE, NF90_CLOSE, nf90_noerr, & 24 nf90_inquire_dimension, nf90_inq_dimid, NF90_INQ_VARID, nf90_get_var 25 25 USE infotrac, ONLY: init_infotrac 26 26 USE dimphy, ONLY: klon … … 154 154 ! weights to ensure ocean fractions are the same for atmosphere and ocean. 155 155 !******************************************************************************* 156 IF(NF90_OPEN("o2a.nc", NF90_NOWRITE, nid_o2a)== NF90_NOERR) THEN156 IF(NF90_OPEN("o2a.nc", NF90_NOWRITE, nid_o2a)==nf90_noerr) THEN 157 157 iret=NF90_CLOSE(nid_o2a) 158 158 WRITE(lunout,*)'BEWARE !! Ocean mask "o2a.nc" file found' … … 188 188 masque(iip1 ,:)=masque(1,:) 189 189 DEALLOCATE(ocemask) 190 ELSE IF(NF90_OPEN("startphy0.nc", NF90_NOWRITE, nid_sta)== NF90_NOERR) THEN190 ELSE IF(NF90_OPEN("startphy0.nc", NF90_NOWRITE, nid_sta)==nf90_noerr) THEN 191 191 WRITE(lunout,*)'BEWARE !! File "startphy0.nc" found.' 192 192 WRITE(lunout,*)'Getting the land mask from a previous run.' 193 193 iret=nf90_inq_dimid(nid_sta,'points_physiques',nid_nph) 194 iret= NF90_INQUIRE_DIMENSION(nid_sta,nid_nph,len=nphys)194 iret=nf90_inquire_dimension(nid_sta,nid_nph,len=nphys) 195 195 IF(nphys/=klon) THEN 196 196 WRITE(lunout,*)'Mismatching dimensions for land mask' … … 201 201 ALLOCATE(masktmp(klon)) 202 202 iret=NF90_INQ_VARID(nid_sta,'masque',nid_msk) 203 iret= NF90_GET_VAR(nid_sta,nid_msk,masktmp)203 iret=nf90_get_var(nid_sta,nid_msk,masktmp) 204 204 iret=NF90_CLOSE(nid_sta) 205 205 CALL gr_fi_dyn(1,klon,iip1,jjp1,masktmp,masque) … … 253 253 254 254 END PROGRAM ce0l 255 ! 256 !------------------------------------------------------------------------------- 255 256 !------------------------------------------------------------------------------- -
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd/etat0dyn_netcdf.F90
r5091 r5099 1 1 MODULE etat0dyn 2 ! 2 3 3 !******************************************************************************* 4 4 ! Purpose: Create dynamical initial state using atmospheric fields from a … … 6 6 !------------------------------------------------------------------------------- 7 7 ! Comments: 8 ! 8 9 9 ! * This module is designed to work for Earth (and with ioipsl) 10 ! 10 11 11 ! * etat0dyn_netcdf routine can access to NetCDF data through the following 12 12 ! routine (to be called after restget): 13 13 ! CALL startget_dyn3d(varname, lon_in, lat_in, pls, workvar,& 14 14 ! champ, lon_in2, lat_in2) 15 ! 15 16 16 ! * Variables should have the following names in the NetCDF files: 17 17 ! 'U' : East ward wind (in "ECDYN.nc") … … 20 20 ! 'R' : Relative humidity (in "ECDYN.nc") 21 21 ! 'RELIEF' : High resolution orography (in "Relief.nc") 22 ! 22 23 23 ! * The land mask and corresponding weights can be: 24 24 ! 1) already known (in particular if etat0dyn has been called before) ; … … 28 28 ! File name: "o2a.nc" ; variable name: "OceMask" 29 29 ! 3) computed from topography file "Relief.nc" for forced runs. 30 ! 30 31 31 ! * There is a big mess with the longitude size. Should it be iml or iml+1 ? 32 32 ! I have chosen to use the iml+1 as an argument to this routine and we declare … … 59 59 60 60 !------------------------------------------------------------------------------- 61 ! 61 62 62 SUBROUTINE etat0dyn_netcdf(masque, phis) 63 ! 63 64 64 !------------------------------------------------------------------------------- 65 65 ! Purpose: Create dynamical initial states. … … 194 194 195 195 END SUBROUTINE etat0dyn_netcdf 196 ! 197 !------------------------------------------------------------------------------- 198 199 200 !------------------------------------------------------------------------------- 201 ! 196 197 !------------------------------------------------------------------------------- 198 199 200 !------------------------------------------------------------------------------- 201 202 202 SUBROUTINE startget_dyn3d(var, lon_in, lat_in, pls, workvar,& 203 203 champ, lon_in2, lat_in2) … … 279 279 280 280 END SUBROUTINE startget_dyn3d 281 ! 282 !------------------------------------------------------------------------------- 283 284 285 !------------------------------------------------------------------------------- 286 ! 281 282 !------------------------------------------------------------------------------- 283 284 285 !------------------------------------------------------------------------------- 286 287 287 SUBROUTINE start_init_dyn(lon_in,lat_in,lon_in2,lat_in2,zs,psol) 288 ! 288 289 289 !------------------------------------------------------------------------------- 290 290 IMPLICIT NONE … … 343 343 344 344 !------------------------------------------------------------------------------- 345 ! 345 346 346 SUBROUTINE get_var_dyn(title,field) 347 ! 347 348 348 !------------------------------------------------------------------------------- 349 349 USE conf_dat_m, ONLY: conf_dat2d … … 375 375 376 376 END SUBROUTINE get_var_dyn 377 ! 377 378 378 !------------------------------------------------------------------------------- 379 379 380 380 END SUBROUTINE start_init_dyn 381 ! 382 !------------------------------------------------------------------------------- 383 384 385 !------------------------------------------------------------------------------- 386 ! 381 382 !------------------------------------------------------------------------------- 383 384 385 !------------------------------------------------------------------------------- 386 387 387 SUBROUTINE start_inter_3d(var,lon_in,lat_in,lon_in2,lat_in2,pls_in,var3d) 388 ! 388 389 389 !------------------------------------------------------------------------------- 390 390 USE conf_dat_m, ONLY: conf_dat3d … … 461 461 462 462 END SUBROUTINE start_inter_3d 463 ! 464 !------------------------------------------------------------------------------- 465 466 467 !------------------------------------------------------------------------------- 468 ! 463 464 !------------------------------------------------------------------------------- 465 466 467 !------------------------------------------------------------------------------- 468 469 469 SUBROUTINE interp_startvar(nam,ibeg,lon,lat,vari,lon1,lat1,lon2,lat2,varo) 470 ! 470 471 471 !------------------------------------------------------------------------------- 472 472 USE inter_barxy_m, ONLY: inter_barxy … … 502 502 503 503 END SUBROUTINE interp_startvar 504 ! 504 505 505 !------------------------------------------------------------------------------- 506 506 507 507 END MODULE etat0dyn 508 ! 509 !******************************************************************************* 508 509 !******************************************************************************* -
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd/etat0phys_netcdf.F90
r4801 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 MODULE etat0phys 5 ! 5 6 6 !******************************************************************************* 7 7 ! Purpose: Create physical initial state using atmospheric fields from a … … 9 9 !------------------------------------------------------------------------------- 10 10 ! Comments: 11 ! 11 12 12 ! * This module is designed to work for Earth (and with ioipsl) 13 ! 13 14 14 ! * etat0phys_netcdf routine can access to NetCDF data through subroutines: 15 15 ! "start_init_phys" for variables contained in file "ECPHY.nc": … … 18 18 ! "start_init_orog" for variables contained in file "Relief.nc": 19 19 ! 'RELIEF' : High resolution orography 20 ! 20 21 21 ! * The land mask and corresponding weights can be: 22 22 ! 1) computed using the ocean mask from the ocean model (to ensure ocean … … 24 24 ! File name: "o2a.nc" ; variable name: "OceMask" 25 25 ! 2) computed from topography file "Relief.nc" for forced runs. 26 ! 26 27 27 ! * Allowed values for read_climoz flag are 0, 1 and 2: 28 28 ! 0: do not read an ozone climatology … … 76 76 77 77 !------------------------------------------------------------------------------- 78 ! 78 79 79 SUBROUTINE etat0phys_netcdf(masque, phis) 80 ! 80 81 81 !------------------------------------------------------------------------------- 82 82 ! Purpose: Creates initial states … … 295 295 296 296 END SUBROUTINE etat0phys_netcdf 297 ! 298 !------------------------------------------------------------------------------- 299 300 301 !------------------------------------------------------------------------------- 302 ! 297 298 !------------------------------------------------------------------------------- 299 300 301 !------------------------------------------------------------------------------- 302 303 303 SUBROUTINE start_init_orog(lon_in,lat_in,phis,masque) 304 ! 304 305 305 !=============================================================================== 306 306 ! Comment: … … 391 391 392 392 END SUBROUTINE start_init_orog 393 ! 394 !------------------------------------------------------------------------------- 395 396 397 !------------------------------------------------------------------------------- 398 ! 393 394 !------------------------------------------------------------------------------- 395 396 397 !------------------------------------------------------------------------------- 398 399 399 SUBROUTINE start_init_phys(lon_in,lat_in,phis) 400 ! 400 401 401 !=============================================================================== 402 402 ! Purpose: Compute tsol and qsol, knowing phis. … … 449 449 450 450 !------------------------------------------------------------------------------- 451 ! 451 452 452 SUBROUTINE get_var_phys(title,field) 453 ! 453 454 454 !------------------------------------------------------------------------------- 455 455 IMPLICIT NONE … … 474 474 475 475 END SUBROUTINE get_var_phys 476 ! 477 !------------------------------------------------------------------------------- 478 ! 476 477 !------------------------------------------------------------------------------- 478 479 479 END SUBROUTINE start_init_phys 480 ! 481 !------------------------------------------------------------------------------- 482 483 484 !------------------------------------------------------------------------------- 485 ! 480 481 !------------------------------------------------------------------------------- 482 483 484 !------------------------------------------------------------------------------- 485 486 486 SUBROUTINE interp_startvar(nam,ibeg,lon,lat,vari,lon2,lat2,varo) 487 ! 487 488 488 !------------------------------------------------------------------------------- 489 489 USE inter_barxy_m, ONLY: inter_barxy … … 518 518 519 519 END SUBROUTINE interp_startvar 520 ! 521 !------------------------------------------------------------------------------- 522 ! 520 521 !------------------------------------------------------------------------------- 522 523 523 !******************************************************************************* 524 524 -
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90
r5098 r5099 1 ! 1 2 2 ! $Id$ 3 ! 3 4 4 MODULE iniphysiq_mod 5 5 -
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd/init_ssrf_m.F90
r5087 r5099 1 1 MODULE init_ssrf_m 2 ! 2 3 3 !******************************************************************************* 4 4 … … 24 24 25 25 !------------------------------------------------------------------------------- 26 ! 26 27 27 SUBROUTINE start_init_subsurf(known_mask) 28 ! 28 29 29 !------------------------------------------------------------------------------- 30 30 ! Purpose: Subsurfaces initialization. … … 141 141 142 142 END SUBROUTINE start_init_subsurf 143 ! 143 144 144 !------------------------------------------------------------------------------- 145 145 146 146 END MODULE init_ssrf_m 147 ! 147 148 148 !******************************************************************************* -
LMDZ6/branches/Amaury_dev/libf/dynphy_lonlat/phylmd/limit_netcdf.F90
r5090 r5099 1 1 MODULE limit 2 ! 2 3 3 !******************************************************************************* 4 4 ! Author : L. Fairhead, 27/01/94 … … 49 49 50 50 !------------------------------------------------------------------------------- 51 ! 51 52 52 SUBROUTINE limit_netcdf(masque, phis, extrap) 53 ! 53 54 54 !------------------------------------------------------------------------------- 55 55 ! Author : L. Fairhead, 27/01/94 … … 73 73 USE netcdf, ONLY: NF90_OPEN, NF90_CREATE, NF90_CLOSE, & 74 74 NF90_DEF_DIM, NF90_DEF_VAR, NF90_PUT_VAR, NF90_PUT_ATT, & 75 NF90_NOERR, NF90_NOWRITE, NF90_GLOBAL, &75 nf90_noerr, NF90_NOWRITE, NF90_GLOBAL, & 76 76 NF90_CLOBBER, NF90_ENDDEF, NF90_UNLIMITED, NF90_FLOAT, & 77 77 NF90_64BIT_OFFSET … … 138 138 ! Open file only to test if available 139 139 DO ix_sic=1,SIZE(fsic) 140 IF ( NF90_OPEN(TRIM(fsic(ix_sic)),NF90_NOWRITE,nid)== NF90_NOERR) THEN140 IF ( NF90_OPEN(TRIM(fsic(ix_sic)),NF90_NOWRITE,nid)==nf90_noerr ) THEN 141 141 icefile=fsic(ix_sic); varname=vsic(ix_sic); EXIT 142 142 END IF … … 197 197 ! Open file only to test if available 198 198 DO ix_sst=1,SIZE(fsst) 199 IF ( NF90_OPEN(TRIM(fsst(ix_sst)),NF90_NOWRITE,nid)== NF90_NOERR) THEN199 IF ( NF90_OPEN(TRIM(fsst(ix_sst)),NF90_NOWRITE,nid)==nf90_noerr ) THEN 200 200 sstfile=fsst(ix_sst); varname=vsst(ix_sst); EXIT 201 201 END IF … … 305 305 306 306 !=============================================================================== 307 ! 307 308 308 CONTAINS 309 ! 309 310 310 !=============================================================================== 311 311 312 312 313 313 !------------------------------------------------------------------------------- 314 ! 314 315 315 SUBROUTINE get_2Dfield(fnam, varname, mode, ndays, champo, flag, mask) 316 ! 316 317 317 !----------------------------------------------------------------------------- 318 318 ! Comments: … … 323 323 !----------------------------------------------------------------------------- 324 324 USE netcdf, ONLY: NF90_OPEN, NF90_INQ_VARID, NF90_INQUIRE_VARIABLE, & 325 NF90_CLOSE, nf90_inq_dimid, NF90_INQUIRE_DIMENSION, NF90_GET_VAR, &325 NF90_CLOSE, nf90_inq_dimid, nf90_inquire_dimension, nf90_get_var, & 326 326 NF90_GET_ATT 327 327 USE pchsp_95_m, only: pchsp_95 … … 399 399 400 400 !--- Longitude 401 CALL ncerr( NF90_INQUIRE_DIMENSION(ncid, dids(1), name=dnam, len=imdep),fnam)401 CALL ncerr(nf90_inquire_dimension(ncid, dids(1), name=dnam, len=imdep),fnam) 402 402 ALLOCATE(dlon_ini(imdep), dlon(imdep)) 403 403 CALL ncerr(NF90_INQ_VARID(ncid, dnam, varid), fnam) 404 CALL ncerr( NF90_GET_VAR(ncid, varid, dlon_ini), fnam)404 CALL ncerr(nf90_get_var(ncid, varid, dlon_ini), fnam) 405 405 CALL msg(5,'variable '//TRIM(dnam)//' dimension ', imdep) 406 406 407 407 !--- Latitude 408 CALL ncerr( NF90_INQUIRE_DIMENSION(ncid, dids(2), name=dnam, len=jmdep),fnam)408 CALL ncerr(nf90_inquire_dimension(ncid, dids(2), name=dnam, len=jmdep),fnam) 409 409 ALLOCATE(dlat_ini(jmdep), dlat(jmdep)) 410 410 CALL ncerr(NF90_INQ_VARID(ncid, dnam, varid), fnam) 411 CALL ncerr( NF90_GET_VAR(ncid, varid, dlat_ini), fnam)411 CALL ncerr(nf90_get_var(ncid, varid, dlat_ini), fnam) 412 412 CALL msg(5,'variable '//TRIM(dnam)//' dimension ', jmdep) 413 413 414 414 !--- Time (variable is not needed - it is rebuilt - but calendar is) 415 CALL ncerr( NF90_INQUIRE_DIMENSION(ncid, dids(3), name=dnam, len=lmdep), fnam)415 CALL ncerr(nf90_inquire_dimension(ncid, dids(3), name=dnam, len=lmdep), fnam) 416 416 ALLOCATE(timeyear(lmdep+2)) 417 417 CALL ncerr(NF90_INQ_VARID(ncid, dnam, varid), fnam) 418 418 cal_in=' ' 419 IF(NF90_GET_ATT(ncid, varid, 'calendar', cal_in)/= NF90_NOERR) THEN419 IF(NF90_GET_ATT(ncid, varid, 'calendar', cal_in)/=nf90_noerr) THEN 420 420 SELECT CASE(mode) 421 421 CASE('RUG', 'ALB'); cal_in='360_day' … … 451 451 CALL ncerr(NF90_INQ_VARID(ncid, varname, varid), fnam) 452 452 DO l=1, lmdep 453 CALL ncerr( NF90_GET_VAR(ncid,varid,champ,[1,1,l],[imdep,jmdep,1]),fnam)453 CALL ncerr(nf90_get_var(ncid,varid,champ,[1,1,l],[imdep,jmdep,1]),fnam) 454 454 CALL conf_dat2d(title, dlon_ini, dlat_ini, dlon, dlat, champ, .TRUE.) 455 455 … … 459 459 !--- DETERMINE THE UNIT: READ FROM FILE OR ASSUMED USING FIELD VALUES 460 460 ierr=NF90_GET_ATT(ncid, varid, 'units', units) 461 IF(ierr== NF90_NOERR) THEN !--- ATTRIBUTE "units" FOUND IN THE FILE461 IF(ierr==nf90_noerr) THEN !--- ATTRIBUTE "units" FOUND IN THE FILE 462 462 CALL strclean(units) 463 463 IF(mode=='SIC'.AND.is_in(units,Perc)) units="%" … … 472 472 END IF 473 473 CALL msg(0,'INPUT FILE '//TRIM(title)//' UNIT IS: "'//TRIM(units)//'".') 474 IF(ierr/= NF90_NOERR) CALL msg(0,'WARNING ! UNIT TO BE CHECKED ! ' &474 IF(ierr/=nf90_noerr) CALL msg(0,'WARNING ! UNIT TO BE CHECKED ! ' & 475 475 //'No "units" attribute, so only based on the fields values.') 476 476 … … 509 509 !--- FIRST RECORD: LAST ONE OF PREVIOUS YEAR (CURRENT YEAR IF UNAVAILABLE) 510 510 fnam_m=fnam(1:idx)//'_m.nc' 511 IF(NF90_OPEN(fnam_m,NF90_NOWRITE,ncid)== NF90_NOERR) THEN511 IF(NF90_OPEN(fnam_m,NF90_NOWRITE,ncid)==nf90_noerr) THEN 512 512 CALL msg(0,'Reading previous year file ("'//TRIM(fnam_m)//'") last record for '//TRIM(title)) 513 513 CALL ncerr(NF90_INQ_VARID(ncid, varname, varid),fnam_m) 514 514 CALL ncerr(NF90_INQUIRE_VARIABLE(ncid, varid, dimids=dids),fnam_m) 515 CALL ncerr( NF90_INQUIRE_DIMENSION(ncid, dids(3), len=l), fnam_m)516 CALL ncerr( NF90_GET_VAR(ncid,varid,champ,[1,1,l],[imdep,jmdep,1]),fnam_m)515 CALL ncerr(nf90_inquire_dimension(ncid, dids(3), len=l), fnam_m) 516 CALL ncerr(nf90_get_var(ncid,varid,champ,[1,1,l],[imdep,jmdep,1]),fnam_m) 517 517 CALL ncerr(NF90_CLOSE(ncid), fnam_m) 518 518 CALL conf_dat2d(title, dlon_ini, dlat_ini, dlon, dlat, champ, .TRUE.) … … 532 532 !--- LAST RECORD: FIRST ONE OF NEXT YEAR (CURRENT YEAR IF UNAVAILABLE) 533 533 fnam_p=fnam(1:idx)//'_p.nc' 534 IF(NF90_OPEN(fnam_p,NF90_NOWRITE,ncid)== NF90_NOERR) THEN534 IF(NF90_OPEN(fnam_p,NF90_NOWRITE,ncid)==nf90_noerr) THEN 535 535 CALL msg(0,'Reading next year file ("'//TRIM(fnam_p)//'") first record for '//TRIM(title)) 536 536 CALL ncerr(NF90_INQ_VARID(ncid, varname, varid),fnam_p) 537 CALL ncerr( NF90_GET_VAR(ncid,varid,champ,[1,1,1],[imdep,jmdep,1]),fnam_p)537 CALL ncerr(nf90_get_var(ncid,varid,champ,[1,1,1],[imdep,jmdep,1]),fnam_p) 538 538 CALL ncerr(NF90_CLOSE(ncid), fnam_p) 539 539 CALL conf_dat2d(title, dlon_ini, dlat_ini, dlon, dlat, champ, .TRUE.) … … 641 641 642 642 END SUBROUTINE get_2Dfield 643 ! 644 !------------------------------------------------------------------------------- 645 646 647 !------------------------------------------------------------------------------- 648 ! 643 644 !------------------------------------------------------------------------------- 645 646 647 !------------------------------------------------------------------------------- 648 649 649 SUBROUTINE start_init_orog0(lon_in,lat_in,phis,masque) 650 ! 650 651 651 !------------------------------------------------------------------------------- 652 652 USE grid_noro_m, ONLY: grid_noro0 … … 704 704 705 705 END SUBROUTINE start_init_orog0 706 ! 707 !------------------------------------------------------------------------------- 708 709 710 !------------------------------------------------------------------------------- 711 ! 706 707 !------------------------------------------------------------------------------- 708 709 710 !------------------------------------------------------------------------------- 711 712 712 SUBROUTINE msg(lev,str1,i,str2) 713 ! 713 714 714 !------------------------------------------------------------------------------- 715 715 ! Arguments: … … 730 730 731 731 END SUBROUTINE msg 732 ! 733 !------------------------------------------------------------------------------- 734 735 736 !------------------------------------------------------------------------------- 737 ! 732 733 !------------------------------------------------------------------------------- 734 735 736 !------------------------------------------------------------------------------- 737 738 738 SUBROUTINE ncerr(ncres,fnam) 739 ! 739 740 740 !------------------------------------------------------------------------------- 741 741 ! Purpose: NetCDF errors handling. 742 742 !------------------------------------------------------------------------------- 743 USE netcdf, ONLY : NF90_NOERR, NF90_STRERROR743 USE netcdf, ONLY : nf90_noerr, NF90_STRERROR 744 744 IMPLICIT NONE 745 745 !------------------------------------------------------------------------------- … … 748 748 CHARACTER(LEN=*), INTENT(IN) :: fnam 749 749 !------------------------------------------------------------------------------- 750 IF(ncres/= NF90_NOERR) THEN750 IF(ncres/=nf90_noerr) THEN 751 751 WRITE(lunout,*)'Problem with file '//TRIM(fnam)//' in routine limit_netcdf.' 752 752 CALL abort_physic('limit_netcdf',NF90_STRERROR(ncres),1) … … 754 754 755 755 END SUBROUTINE ncerr 756 ! 757 !------------------------------------------------------------------------------- 758 759 760 !------------------------------------------------------------------------------- 761 ! 756 757 !------------------------------------------------------------------------------- 758 759 760 !------------------------------------------------------------------------------- 761 762 762 SUBROUTINE strclean(s) 763 ! 763 764 764 !------------------------------------------------------------------------------- 765 765 IMPLICIT NONE … … 776 776 777 777 END SUBROUTINE strclean 778 ! 779 !------------------------------------------------------------------------------- 780 781 782 !------------------------------------------------------------------------------- 783 ! 778 779 !------------------------------------------------------------------------------- 780 781 782 !------------------------------------------------------------------------------- 783 784 784 FUNCTION is_in(s1,s2) RESULT(res) 785 ! 785 786 786 !------------------------------------------------------------------------------- 787 787 IMPLICIT NONE … … 796 796 797 797 END FUNCTION is_in 798 ! 799 !------------------------------------------------------------------------------- 800 801 802 !------------------------------------------------------------------------------- 803 ! 798 799 !------------------------------------------------------------------------------- 800 801 802 !------------------------------------------------------------------------------- 803 804 804 ELEMENTAL FUNCTION strLow(s) RESULT(res) 805 ! 805 806 806 !------------------------------------------------------------------------------- 807 807 IMPLICIT NONE … … 822 822 823 823 END FUNCTION strLow 824 ! 824 825 825 !------------------------------------------------------------------------------- 826 826 … … 830 830 831 831 END MODULE limit 832 ! 832 833 833 !******************************************************************************* 834 834
Note: See TracChangeset
for help on using the changeset viewer.