Changeset 5128 for LMDZ6/branches/Amaury_dev/libf/dyn3d
- Timestamp:
- Jul 25, 2024, 5:47:25 PM (12 months ago)
- Location:
- LMDZ6/branches/Amaury_dev/libf/dyn3d
- Files:
-
- 1 deleted
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3d/bilan_dyn.F90
r5118 r5128 14 14 USE temps_mod, ONLY: annee_ref, day_ref, itau_dyn 15 15 USE lmdz_iniprint, ONLY: lunout, prt_level 16 16 17 17 18 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/check_isotopes.F90
r5117 r5128 3 3 USE infotrac, ONLY: nqtot, niso, nphas, isotope, isoCheck, iqIsoPha, isoSelect, & 4 4 ntiso, iH2O, nzone, tracers, isoName, itZonIso, getKey 5 5 6 IMPLICIT NONE 6 7 include "dimensions.h" -
LMDZ6/branches/Amaury_dev/libf/dyn3d/conf_gcm.f90
r5118 r5128 17 17 USE temps_mod, ONLY: calend, year_len 18 18 USE lmdz_iniprint, ONLY: lunout, prt_level 19 19 20 20 21 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/dynetat0.F90
r5118 r5128 22 22 USE lmdz_description, ONLY: descript 23 23 USE lmdz_iniprint, ONLY: lunout, prt_level 24 24 25 25 26 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/dynredem_mod.F90
r5101 r5128 1 1 MODULE dynredem_mod 2 2 3 USE netcdf, ONLY: nf90_strerror, nf90_noerr,nf90_redef,nf90_put_var,nf90_enddef,nf90_put_att,&4 nf90_inq_varid, nf90_get_var,nf90_def_var3 USE netcdf, ONLY: nf90_strerror, nf90_noerr, nf90_redef, nf90_put_var, nf90_enddef, nf90_put_att, & 4 nf90_inq_varid, nf90_get_var, nf90_def_var 5 5 USE lmdz_cppkeys_wrapper, ONLY: nf90_format 6 6 IMPLICIT NONE; PRIVATE … … 9 9 include "dimensions.h" 10 10 include "paramet.h" 11 CHARACTER(LEN =256), SAVE :: fil, modname12 INTEGER, 11 CHARACTER(LEN = 256), SAVE :: fil, modname 12 INTEGER, SAVE :: nvarid 13 13 14 14 … … 16 16 17 17 18 !===============================================================================19 20 SUBROUTINE dynredem_write_u(ncid,id,var,ll)21 22 !===============================================================================23 ! Arguments:24 INTEGER,INTENT(IN) :: ncid25 CHARACTER(LEN=*), INTENT(IN) :: id26 REAL, INTENT(IN) :: var(iip1,jjp1,ll)27 INTEGER,INTENT(IN) :: ll28 !===============================================================================29 ! Local variables:30 INTEGER :: start(4), count(4)31 !===============================================================================32 start(:)=[1,1,1,1]; count(:)=[iip1,jjp1,ll,1]33 CALL err(nf90_inq_varid(ncid,id,nvarid),"inq",id)34 CALL err(nf90_put_var(ncid,nvarid,var,start,count),"put",id)35 36 END SUBROUTINE dynredem_write_u37 38 !===============================================================================39 40 41 !===============================================================================42 43 SUBROUTINE dynredem_write_v(ncid,id,var,ll)44 45 !===============================================================================46 ! Arguments:47 INTEGER,INTENT(IN) :: ncid48 CHARACTER(LEN=*), INTENT(IN) :: id49 REAL, INTENT(IN) :: var(iip1,jjm,ll)50 INTEGER,INTENT(IN) :: ll51 !===============================================================================52 ! Local variables:53 INTEGER :: start(4), count(4)54 !===============================================================================55 start(:)=[1,1,1,1]; count(:)=[iip1,jjm,ll,1]56 CALL err(nf90_inq_varid(ncid,id,nvarid),"inq",id)57 CALL err(nf90_put_var(ncid,nvarid,var,start,count),"put",id)58 59 END SUBROUTINE dynredem_write_v60 61 !===============================================================================62 63 64 !===============================================================================65 66 SUBROUTINE dynredem_read_u(ncid,id,var,ll)67 68 !===============================================================================69 ! Arguments:70 INTEGER, INTENT(IN):: ncid71 CHARACTER(LEN=*), INTENT(IN):: id72 REAL, INTENT(OUT) :: var(iip1,jjp1,ll)73 INTEGER, INTENT(IN):: ll74 !===============================================================================75 ! Local variables:76 INTEGER :: start(4), count(4)77 !===============================================================================78 start(:)=[1,1,1,1]; count(:)=[iip1,jjp1,ll,1]79 CALL err(nf90_inq_varid(ncid,id,nvarid),"inq",id)80 CALL err(nf90_get_var(ncid,nvarid,var,start,count),"get",id)81 82 END SUBROUTINE dynredem_read_u 83 84 !===============================================================================85 86 87 !===============================================================================88 89 SUBROUTINE cre_var(ncid,var,title,did,units)90 91 !===============================================================================92 ! Arguments:93 INTEGER,INTENT(IN) :: ncid94 CHARACTER(LEN=*),INTENT(IN) :: var, title95 INTEGER,INTENT(IN) :: did(:)96 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units97 !===============================================================================98 CALL err(nf90_def_var(ncid,var,nf90_format,did,nvarid),"inq",var)99 IF(title/="") CALL err(nf90_put_att(ncid,nvarid,"title",title),var)100 IF(PRESENT(units)) CALL err(nf90_put_att(ncid,nvarid,"units",units),var)101 102 END SUBROUTINE cre_var103 104 !===============================================================================105 106 107 !===============================================================================108 109 SUBROUTINE put_var1(ncid,var,title,did,v,units)110 111 !===============================================================================112 ! Arguments:113 INTEGER,INTENT(IN) :: ncid114 CHARACTER(LEN=*),INTENT(IN) :: var, title115 INTEGER,INTENT(IN) :: did(1)116 REAL,INTENT(IN) :: v(:)117 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units118 !===============================================================================119 IF( PRESENT(units)) CALL cre_var(ncid,var,title,did,units)120 IF(.NOT.PRESENT(units)) CALL cre_var(ncid,var,title,did)121 CALL err(nf90_enddef(ncid))122 CALL err(nf90_put_var(ncid,nvarid,v),"put",var)123 CALL err(nf90_redef(ncid))124 125 END SUBROUTINE put_var1126 127 !===============================================================================128 129 130 !===============================================================================131 132 SUBROUTINE put_var2(ncid,var,title,did,v,units)133 134 !===============================================================================135 ! Arguments:136 INTEGER,INTENT(IN) :: ncid137 CHARACTER(LEN=*),INTENT(IN) :: var, title138 INTEGER,INTENT(IN) :: did(2)139 REAL, INTENT(IN) :: v(:,:)140 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units141 !===============================================================================142 IF( PRESENT(units)) CALL cre_var(ncid,var,title,did,units)143 IF(.NOT.PRESENT(units)) CALL cre_var(ncid,var,title,did)144 CALL err(nf90_enddef(ncid))145 CALL err(nf90_put_var(ncid,nvarid,v),"put",var)146 CALL err(nf90_redef(ncid))147 148 END SUBROUTINE put_var2149 150 !===============================================================================151 152 153 !===============================================================================154 155 FUNCTION msg(typ,nam)156 157 !===============================================================================158 ! Arguments:159 CHARACTER(LEN=256):: msg !--- STANDARDIZED MESSAGE160 CHARACTER(LEN=*),INTENT(IN) :: typ !--- TYPE OF OPERATION161 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME162 !===============================================================================163 SELECT CASE(typ)164 CASE('open'); msg ="Opening failed for <"//TRIM(fil)//">"165 CASE('close'); msg ="Closing failed for <"//TRIM(fil)//">"166 CASE('get'); msg ="Reading failed for <"//TRIM(nam)//">"167 CASE('put'); msg ="Writting failed for <"//TRIM(nam)//">"168 CASE('inq'); msg ="Missing field <"//TRIM(nam)//">"169 CASE('fnd'); msg ="Found field <"//TRIM(nam)//">"170 END SELECT171 msg=TRIM(msg)//" in file <"//TRIM(fil)//">"172 173 END FUNCTION msg174 175 !===============================================================================176 177 178 !===============================================================================179 180 SUBROUTINE err(ierr,typ,nam)181 182 !===============================================================================183 ! Arguments:184 INTEGER,INTENT(IN) :: ierr !--- NetCDF ERROR CODE185 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: typ !--- TYPE OF OPERATION186 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME187 !===============================================================================188 IF(ierr==nf90_noerr) RETURN189 IF(.NOT.PRESENT(typ)) THEN190 CALL ABORT_gcm(modname,nf90_strerror(ierr),ierr)191 ELSE192 CALL ABORT_gcm(modname,msg(typ,nam),ierr)193 END IF194 195 END SUBROUTINE err196 197 !===============================================================================18 !=============================================================================== 19 20 SUBROUTINE dynredem_write_u(ncid, id, var, ll) 21 22 !=============================================================================== 23 ! Arguments: 24 INTEGER, INTENT(IN) :: ncid 25 CHARACTER(LEN = *), INTENT(IN) :: id 26 REAL, INTENT(IN) :: var(iip1, jjp1, ll) 27 INTEGER, INTENT(IN) :: ll 28 !=============================================================================== 29 ! Local variables: 30 INTEGER :: start(4), count(4) 31 !=============================================================================== 32 start(:) = [1, 1, 1, 1]; count(:) = [iip1, jjp1, ll, 1] 33 CALL err(nf90_inq_varid(ncid, id, nvarid), "inq", id) 34 CALL err(nf90_put_var(ncid, nvarid, var, start, count), "put", id) 35 36 END SUBROUTINE dynredem_write_u 37 38 !=============================================================================== 39 40 41 !=============================================================================== 42 43 SUBROUTINE dynredem_write_v(ncid, id, var, ll) 44 45 !=============================================================================== 46 ! Arguments: 47 INTEGER, INTENT(IN) :: ncid 48 CHARACTER(LEN = *), INTENT(IN) :: id 49 REAL, INTENT(IN) :: var(iip1, jjm, ll) 50 INTEGER, INTENT(IN) :: ll 51 !=============================================================================== 52 ! Local variables: 53 INTEGER :: start(4), count(4) 54 !=============================================================================== 55 start(:) = [1, 1, 1, 1]; count(:) = [iip1, jjm, ll, 1] 56 CALL err(nf90_inq_varid(ncid, id, nvarid), "inq", id) 57 CALL err(nf90_put_var(ncid, nvarid, var, start, count), "put", id) 58 59 END SUBROUTINE dynredem_write_v 60 61 !=============================================================================== 62 63 64 !=============================================================================== 65 66 SUBROUTINE dynredem_read_u(ncid, id, var, ll) 67 68 !=============================================================================== 69 ! Arguments: 70 INTEGER, INTENT(IN) :: ncid 71 CHARACTER(LEN = *), INTENT(IN) :: id 72 REAL, INTENT(OUT) :: var(iip1, jjp1, ll) 73 INTEGER, INTENT(IN) :: ll 74 !=============================================================================== 75 ! Local variables: 76 INTEGER :: start(4), count(4) 77 !=============================================================================== 78 start(:) = [1, 1, 1, 1]; count(:) = [iip1, jjp1, ll, 1] 79 CALL err(nf90_inq_varid(ncid, id, nvarid), "inq", id) 80 CALL err(nf90_get_var(ncid, nvarid, var, start, count), "get", id) 81 82 END SUBROUTINE dynredem_read_u 83 84 !=============================================================================== 85 86 87 !=============================================================================== 88 89 SUBROUTINE cre_var(ncid, var, title, did, units) 90 91 !=============================================================================== 92 ! Arguments: 93 INTEGER, INTENT(IN) :: ncid 94 CHARACTER(LEN = *), INTENT(IN) :: var, title 95 INTEGER, INTENT(IN) :: did(:) 96 CHARACTER(LEN = *), OPTIONAL, INTENT(IN) :: units 97 !=============================================================================== 98 CALL err(nf90_def_var(ncid, var, nf90_format, did, nvarid), "inq", var) 99 IF(title/="") CALL err(nf90_put_att(ncid, nvarid, "title", title), var) 100 IF(PRESENT(units)) CALL err(nf90_put_att(ncid, nvarid, "units", units), var) 101 102 END SUBROUTINE cre_var 103 104 !=============================================================================== 105 106 107 !=============================================================================== 108 109 SUBROUTINE put_var1(ncid, var, title, did, v, units) 110 111 !=============================================================================== 112 ! Arguments: 113 INTEGER, INTENT(IN) :: ncid 114 CHARACTER(LEN = *), INTENT(IN) :: var, title 115 INTEGER, INTENT(IN) :: did(1) 116 REAL, INTENT(IN) :: v(:) 117 CHARACTER(LEN = *), OPTIONAL, INTENT(IN) :: units 118 !=============================================================================== 119 IF(PRESENT(units)) CALL cre_var(ncid, var, title, did, units) 120 IF(.NOT.PRESENT(units)) CALL cre_var(ncid, var, title, did) 121 CALL err(nf90_enddef(ncid)) 122 CALL err(nf90_put_var(ncid, nvarid, v), "put", var) 123 CALL err(nf90_redef(ncid)) 124 125 END SUBROUTINE put_var1 126 127 !=============================================================================== 128 129 130 !=============================================================================== 131 132 SUBROUTINE put_var2(ncid, var, title, did, v, units) 133 134 !=============================================================================== 135 ! Arguments: 136 INTEGER, INTENT(IN) :: ncid 137 CHARACTER(LEN = *), INTENT(IN) :: var, title 138 INTEGER, INTENT(IN) :: did(2) 139 REAL, INTENT(IN) :: v(:, :) 140 CHARACTER(LEN = *), OPTIONAL, INTENT(IN) :: units 141 !=============================================================================== 142 IF(PRESENT(units)) CALL cre_var(ncid, var, title, did, units) 143 IF(.NOT.PRESENT(units)) CALL cre_var(ncid, var, title, did) 144 CALL err(nf90_enddef(ncid)) 145 CALL err(nf90_put_var(ncid, nvarid, v), "put", var) 146 CALL err(nf90_redef(ncid)) 147 148 END SUBROUTINE put_var2 149 150 !=============================================================================== 151 152 153 !=============================================================================== 154 155 FUNCTION msg(typ, nam) 156 157 !=============================================================================== 158 ! Arguments: 159 CHARACTER(LEN = 256) :: msg !--- STANDARDIZED MESSAGE 160 CHARACTER(LEN = *), INTENT(IN) :: typ !--- TYPE OF OPERATION 161 CHARACTER(LEN = *), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME 162 !=============================================================================== 163 SELECT CASE(typ) 164 CASE('open'); msg = "Opening failed for <" // TRIM(fil) // ">" 165 CASE('close'); msg = "Closing failed for <" // TRIM(fil) // ">" 166 CASE('get'); msg = "Reading failed for <" // TRIM(nam) // ">" 167 CASE('put'); msg = "Writting failed for <" // TRIM(nam) // ">" 168 CASE('inq'); msg = "Missing field <" // TRIM(nam) // ">" 169 CASE('fnd'); msg = "Found field <" // TRIM(nam) // ">" 170 END SELECT 171 msg = TRIM(msg) // " in file <" // TRIM(fil) // ">" 172 173 END FUNCTION msg 174 175 !=============================================================================== 176 177 178 !=============================================================================== 179 180 SUBROUTINE err(ierr, typ, nam) 181 182 !=============================================================================== 183 ! Arguments: 184 INTEGER, INTENT(IN) :: ierr !--- NetCDF ERROR CODE 185 CHARACTER(LEN = *), OPTIONAL, INTENT(IN) :: typ !--- TYPE OF OPERATION 186 CHARACTER(LEN = *), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME 187 !=============================================================================== 188 IF(ierr==nf90_noerr) RETURN 189 IF(.NOT.PRESENT(typ)) THEN 190 CALL ABORT_gcm(modname, nf90_strerror(ierr), ierr) 191 ELSE 192 CALL ABORT_gcm(modname, msg(typ, nam), ierr) 193 END IF 194 195 END SUBROUTINE err 196 197 !=============================================================================== 198 198 199 199 END MODULE dynredem_mod -
LMDZ6/branches/Amaury_dev/libf/dyn3d/friction.F90
r5118 r5128 8 8 USE comconst_mod, ONLY: pi 9 9 USE lmdz_iniprint, ONLY: lunout, prt_level 10 11 10 12 IMPLICIT NONE 11 13 -
LMDZ6/branches/Amaury_dev/libf/dyn3d/gcm.F90
r5118 r5128 28 28 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 29 29 USE lmdz_iniprint, ONLY: lunout, prt_level 30 30 31 31 32 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/groupe.F90
r5119 r5128 5 5 USE comconst_mod, ONLY: ngroup 6 6 USE lmdz_ssum_scopy, ONLY: scopy 7 7 8 8 9 IMPLICIT NONE … … 105 106 CALL vitvert(zconvmm, wm) 106 107 107 108 108 END SUBROUTINE groupe 109 109 -
LMDZ6/branches/Amaury_dev/libf/dyn3d/guide_mod.F90
r5118 r5128 16 16 nf90_64bit_offset, nf90_inq_dimid, nf90_inquire_dimension, nf90_put_var 17 17 USE lmdz_pres2lev, ONLY: pres2lev 18 18 19 19 20 IMPLICIT NONE … … 75 76 USE serre_mod, ONLY: grossismx 76 77 78 77 79 IMPLICIT NONE 78 80 … … 355 357 USE comvert_mod, ONLY: ap, bp, preff, presnivs, pressure_exner 356 358 USE lmdz_iniprint, ONLY: lunout, prt_level 359 357 360 358 361 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/iniacademic.F90
r5118 r5128 19 19 USE lmdz_ran1, ONLY: ran1 20 20 USE lmdz_iniprint, ONLY: lunout, prt_level 21 21 22 22 23 ! Author: Frederic Hourdin original: 15/01/93 -
LMDZ6/branches/Amaury_dev/libf/dyn3d/integrd.F90
r5123 r5128 13 13 USE lmdz_iniprint, ONLY: lunout, prt_level 14 14 USE lmdz_ssum_scopy, ONLY: scopy, ssum 15 15 16 16 17 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/leapfrog.F90
r5123 r5128 28 28 USE lmdz_iniprint, ONLY: lunout, prt_level 29 29 USE lmdz_ssum_scopy, ONLY: scopy, ssum 30 30 31 31 32 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/paramet.h
r5099 r5128 18 18 19 19 PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3 & 20 &,jjp1=jjm+1-1/jjm)20 ,jjp1=jjm+1-1/jjm) 21 21 PARAMETER( llmp1 = llm+1, llmp2 = llm+2, llmm1 = llm-1 ) 22 22 PARAMETER( kftd = iim/2 -ndm ) -
LMDZ6/branches/Amaury_dev/libf/dyn3d/replay3d.F90
r5117 r5128 21 21 grossismx, grossismy, dzoomx, dzoomy,taux,tauy 22 22 USE mod_const_mpi, ONLY: comm_lmdz 23 23 24 24 25 IMPLICIT NONE -
LMDZ6/branches/Amaury_dev/libf/dyn3d/vlspltqs.F90
r5123 r5128 16 16 ! 17 17 ! pente_max facteur de limitation des pentes: 2 en general 18 ! 18 !0 pour un schema amont 19 19 ! pbaru,pbarv,w flux de masse en u ,v ,w 20 20 ! pdt pas de temps -
LMDZ6/branches/Amaury_dev/libf/dyn3d/wrgrads.f90
r5117 r5128 3 3 subroutine wrgrads(if, nl, field, name, titlevar) 4 4 USE lmdz_formcoord, ONLY: formcoord 5 6 5 7 IMPLICIT NONE 6 8
Note: See TracChangeset
for help on using the changeset viewer.