Changeset 1359 for trunk/NEMO/OPA_SRC/IOM/iom.F90
- Timestamp:
- 2009-03-31T14:36:28+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/IOM/iom.F90
r1341 r1359 26 26 USE iom_rstdimg ! restarts access direct format "dimg" style... 27 27 28 #if defined key_ioserver 29 USE mod_event_client 30 # endif 31 28 32 IMPLICIT NONE 29 33 PUBLIC ! must be public to be able to access iom_def through iom 30 34 31 PUBLIC iom_ open, iom_close, iom_varid, iom_get, iom_gettime, iom_rstput35 PUBLIC iom_init, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_gettime, iom_rstput, iom_put 32 36 33 37 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 34 38 PRIVATE iom_g0d, iom_g1d, iom_g2d, iom_g3d, iom_get_123d 39 PRIVATE iom_p2d, iom_p3d 40 #if defined key_ioserver 41 PRIVATE iom_init_chkcpp 42 PRIVATE set_grid 43 # endif 35 44 36 45 INTERFACE iom_get … … 40 49 MODULE PROCEDURE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d 41 50 END INTERFACE 51 INTERFACE iom_put 52 MODULE PROCEDURE iom_p2d, iom_p3d 53 END INTERFACE 54 #if defined key_ioserver 55 INTERFACE iom_setkt 56 MODULE PROCEDURE event__set_timestep 57 END INTERFACE 58 # endif 42 59 43 60 !!---------------------------------------------------------------------- … … 48 65 49 66 CONTAINS 67 68 SUBROUTINE iom_init( pjulian ) 69 !!---------------------------------------------------------------------- 70 !! *** ROUTINE *** 71 !! 72 !! ** Purpose : 73 !! 74 !!---------------------------------------------------------------------- 75 REAL(wp), INTENT(in) :: pjulian !: julian day at nit000 = 0 76 #if defined key_ioserver 77 !!---------------------------------------------------------------------- 78 ! read the xml file 79 CALL event__parse_xml_file( 'iodef.xml' ) ! <- to get from the nameliste (namrun)... 80 81 ! calendar parameters 82 CALL event__set_time_parameters( nit000 - 1, pjulian, rdt ) 83 84 ! horizontal grid definition 85 CALL set_grid( "grid_T", glamt, gphit ) 86 CALL set_grid( "grid_U", glamu, gphiu ) 87 CALL set_grid( "grid_V", glamv, gphiv ) 88 CALL set_grid( "grid_W", glamt, gphit ) 89 90 ! vertical grid definition 91 CALL event__set_vert_axis( "deptht", gdept_0 ) 92 CALL event__set_vert_axis( "depthu", gdept_0 ) 93 CALL event__set_vert_axis( "depthv", gdept_0 ) 94 CALL event__set_vert_axis( "depthw", gdepw_0 ) 95 96 ! consistency regarding CPP keys... 97 CALL iom_init_chkcpp 98 99 ! end file definition 100 CALL event__close_io_definition 101 #endif 102 103 END SUBROUTINE iom_init 104 50 105 51 106 SUBROUTINE iom_open( cdname, kiomid, ldwrt, kdom, kiolib, ldstop, ldiof ) … … 92 147 ! if iom_open is called for the first time: initialize iom_file(:)%nfid to 0 93 148 ! (could be done when defining iom_file in f95 but not in f90) 94 IF( iom_ init == 0 ) THEN149 IF( iom_open_init == 0 ) THEN 95 150 iom_file(:)%nfid = 0 96 iom_ init = 1151 iom_open_init = 1 97 152 ENDIF 98 153 ! do we read or write the file? … … 244 299 i_s = 1 245 300 i_e = jpmax_files 301 #if defined key_ioserver 302 CALL event__stop_ioserver 303 #endif 246 304 ENDIF 247 305 … … 822 880 ENDIF 823 881 END SUBROUTINE iom_rp3d 882 883 824 884 !!---------------------------------------------------------------------- 885 !! INTERFACE iom_rstput 886 !!---------------------------------------------------------------------- 887 SUBROUTINE iom_p2d( cdname, pfield2d ) 888 CHARACTER(LEN=*) , INTENT(in) :: cdname 889 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: pfield2d 890 #if defined key_ioserver 891 CALL event__write_field2D( cdname, pfield2d(nldi:nlei, nldj:nlej) ) 892 #endif 893 END SUBROUTINE iom_p2d 894 895 SUBROUTINE iom_p3d( cdname, pfield3d ) 896 CHARACTER(LEN=*) , INTENT(in) :: cdname 897 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in) :: pfield3d 898 #if defined key_ioserver 899 CALL event__write_field3D( cdname, pfield3d(nldi:nlei, nldj:nlej, :) ) 900 #endif 901 END SUBROUTINE iom_p3d 902 !!---------------------------------------------------------------------- 903 904 905 #if defined key_ioserver 906 907 SUBROUTINE set_grid( cdname, plon, plat ) 908 !!---------------------------------------------------------------------- 909 !! *** ROUTINE *** 910 !! 911 !! ** Purpose : 912 !! 913 !!---------------------------------------------------------------------- 914 CHARACTER(LEN=*) , INTENT(in) :: cdname 915 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: plon 916 REAL(wp), DIMENSION(jpi,jpj), INTENT(in) :: plat 917 918 CALL event__set_grid_dimension( cdname, jpiglo, jpjglo) 919 CALL event__set_grid_domain( cdname, nlei-nldi+1, nlej-nldj+1, nimpp+nldi-1, njmpp+nldj-1, & 920 & plon(nldi:nlei, nldj:nlej), plat(nldi:nlei, nldj:nlej) ) 921 CALL event__set_grid_type_nemo( cdname ) 922 923 END SUBROUTINE set_grid 924 925 926 SUBROUTINE iom_init_chkcpp 927 !!--------------------------------------------------------------------- 928 !! *** SUBROUTINE *** 929 !! 930 !! ** Purpose : 931 !!--------------------------------------------------------------------- 932 USE zdfddm, ONLY : lk_zdfddm ! vertical physics: double diffusion 933 934 #if defined key_dynspg_rl 935 CALL event__disable_field( "sossheig" ) 936 #else 937 CALL event__disable_field( "sobarstf" ) 938 #endif 939 940 !!#if ! ( ! defined key_dynspg_rl && defined key_ice_lim) 941 !! CALL disable_field( "iowaflup" ) 942 !! CALL disable_field( "sowaflep" ) 943 !!#endif 944 945 #if ! defined key_coupled 946 CALL event__enable_field( "sohefldp" ) 947 CALL event__enable_field( "sowafldp" ) 948 CALL event__enable_field( "sosafldp" ) 949 #endif 950 951 #if ( defined key_coupled && ! defined key_lim3 && ! defined key_lim2 ) 952 CALL event__enable_field( "sohefldp" ) 953 CALL event__enable_field( "sowafldp" ) 954 CALL event__enable_field( "sosafldp" ) 955 #endif 956 957 #if ! defined key_diaspr 958 CALL event__disable_field( "sosurfps" ) 959 #endif 960 961 #if ! defined key_diahth 962 CALL event__disable_field( "sothedep" ) 963 CALL event__disable_field( "so20chgt" ) 964 CALL event__disable_field( "so28chgt" ) 965 CALL event__disable_field( "sohtc300" ) 966 #endif 967 968 #if defined key_coupled 969 # if defined key_lim3 970 Must be adapted to LIM3 971 # else 972 CALL event__enable_field( "soicetem" ) 973 CALL event__enable_field( "soicealb" ) 974 # endif 975 #endif 976 977 #if ! defined key_diaeiv 978 CALL event__disable_field( "vozoeivu" ) 979 CALL event__disable_field( "vomeeivv" ) 980 CALL event__disable_field( "voveeivw" ) 981 #endif 982 983 #if ! defined key_dynspg_rl 984 CALL event__disable_field( "sozospgx" ) 985 CALL event__disable_field( "somespgy" ) 986 #endif 987 988 IF( lk_zdfddm ) CALL event__enable_field( "voddmavs" ) 989 990 #if ! defined key_traldf_c2d 991 CALL event__disable_field( "soleahtw" ) 992 #endif 993 994 #if ! defined key_traldf_eiv 995 CALL event__disable_field( "soleaeiw" ) 996 #endif 997 998 END SUBROUTINE iom_init_chkcpp 999 1000 #else 1001 1002 SUBROUTINE iom_setkt( kt ) 1003 INTEGER, INTENT(in ):: kt 1004 END SUBROUTINE iom_setkt 1005 1006 #endif 825 1007 826 1008
Note: See TracChangeset
for help on using the changeset viewer.