Changeset 314 for codes/icosagcm/branches/SATURN_DYNAMICO
- Timestamp:
- 12/15/14 17:10:42 (10 years ago)
- Location:
- codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/physics_lmdz_generic.f90
r303 r314 54 54 REAL(rstd),ALLOCATABLE :: bounds_latfi(:,:) 55 55 REAL(rstd),ALLOCATABLE :: bounds_lonfi(:,:) 56 INTEGER :: time0 56 57 57 58 start_day=0 … … 120 121 ENDDO 121 122 122 123 time0=itau0*dt 123 124 CALL initialize_unstructured_physics(nbp_phys,llm, comm_icosa, mpi_size,distrib, & 124 day_length,start_day, itau_physics*dt, &125 day_length,start_day,time0,itau_physics*dt, & 125 126 6,latfi,lonfi,airefi,bounds_lonfi,bounds_latfi, & 126 127 radius,g, gas_constant/mu, cpp, & -
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/restart.f90
r297 r314 4 4 TYPE t_field_array 5 5 TYPE(t_field),POINTER :: field(:) 6 INTEGER :: id 6 7 END TYPE t_field_array 7 8 8 9 9 TYPE(t_field_array),SAVE :: field_array(20) 10 !$OMP THREADPRIVATE(field_array) 11 12 INTEGER,SAVE :: ncid 13 INTEGER,SAVE :: itid 14 15 16 PRIVATE :: ncid 17 10 18 CONTAINS 11 19 … … 31 39 TYPE(t_field_array) :: field_array(20) 32 40 INTEGER :: nfield 33 INTEGER :: fieldId(20)34 41 35 42 TYPE(t_domain),POINTER :: d … … 39 46 CHARACTER(LEN=255) :: restart_file_name 40 47 INTEGER,PARAMETER :: nvert=6 41 INTEGER :: ncid,cellId, levId, edgeId, vertid, lonId, latId, bounds_lonId, bounds_latId, nqId, levAxisId48 INTEGER :: cellId, levId, edgeId, vertid, lonId, latId, bounds_lonId, bounds_latId, nqId, levAxisId 42 49 INTEGER :: ind,ind_glo,i,j,k,nf 43 50 INTEGER :: status 44 51 REAL(rstd),ALLOCATABLE :: lon(:),lat(:),bounds_lon(:,:),bounds_lat(:,:) 52 LOGICAL,SAVE :: first=.TRUE. 53 !$OMP THREADPRIVATE(first) 45 54 46 55 restart_file_name="restart" 47 56 CALL getin("restart_file_name",restart_file_name) 48 57 58 !$OMP BARRIER 49 59 !$OMP MASTER 50 60 … … 73 83 74 84 75 IF (is_mpi_root ) THEN85 IF (is_mpi_root .AND. first) THEN 76 86 status = NF90_CREATE(TRIM(ADJUSTL(restart_file_name))//'.nc', IOR(NF90_CLOBBER,NF90_NETCDF4), ncid) 77 87 IF (status/=NF90_NOERR) THEN … … 86 96 status = NF90_DEF_DIM(ncid,'nvert',nvert,vertId) 87 97 status = NF90_DEF_DIM(ncid,'nq',nqtot,nqId) 88 status = NF90_PUT_ATT(ncid,NF90_GLOBAL,"iteration",it) 98 ! status = NF90_PUT_ATT(ncid,NF90_GLOBAL,"iteration",it) 99 status = NF90_DEF_VAR(ncid,"iteration",NF90_INT,varid=itid) 89 100 90 101 status = NF90_DEF_VAR(ncid,'lon',NF90_DOUBLE,(/ cellId /),lonId) … … 107 118 IF (field(1)%field_type==field_T) THEN 108 119 IF (field(1)%ndim==2) THEN 109 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ cellId /),field Id(nf))110 status = NF90_PUT_ATT(ncid, FieldId(nf),"coordinates","lon lat")120 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ cellId /),field_array(nf)%id) 121 status = NF90_PUT_ATT(ncid,field_array(nf)%id,"coordinates","lon lat") 111 122 ELSE IF (field(1)%ndim==3) THEN 112 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ cellId, levId /),field Id(nf))113 status = NF90_PUT_ATT(ncid, FieldId(nf),"coordinates","lev lon lat")123 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ cellId, levId /),field_array(nf)%id) 124 status = NF90_PUT_ATT(ncid,field_array(nf)%id,"coordinates","lev lon lat") 114 125 ELSE IF (field(1)%ndim==4) THEN 115 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ cellId, levId,nqId /),field Id(nf))116 status = NF90_PUT_ATT(ncid, FieldId(nf),"coordinates","nq lev lon lat")126 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ cellId, levId,nqId /),field_array(nf)%id) 127 status = NF90_PUT_ATT(ncid,field_array(nf)%id,"coordinates","nq lev lon lat") 117 128 ENDIF 118 129 ELSE IF (field(1)%field_type==field_U) THEN 119 130 IF (field(1)%ndim==2) THEN 120 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ edgeId /),field Id(nf))131 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ edgeId /),field_array(nf)%id) 121 132 ELSE IF (field(1)%ndim==3) THEN 122 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ edgeId, levId /),field Id(nf))133 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ edgeId, levId /),field_array(nf)%id) 123 134 ELSE IF (field(1)%ndim==4) THEN 124 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ edgeId, levId, nqId /),field Id(nf))135 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(field(1)%name)),NF90_DOUBLE,(/ edgeId, levId, nqId /),field_array(nf)%id) 125 136 ENDIF 126 137 ENDIF … … 162 173 status=NF90_PUT_VAR(ncid,bounds_latId,REAL(bounds_lat,r8),start=(/ 1,1 /),count=(/ nvert,ncell_glo /)) 163 174 status=NF90_PUT_VAR(ncid,levAxisId,REAL(presnivs,r8),start=(/ 1 /),count=(/ llm /)) 175 first=.FALSE. 176 164 177 ENDIF ! of IF (is_mpi_root) 165 178 179 IF (is_mpi_root) status=NF90_PUT_VAR(ncid,itid,it) 166 180 DO nf=1,nfield 167 181 field=>field_array(nf)%field 168 CALL write_restart_field(field,field Id(nf),ncid)182 CALL write_restart_field(field,field_array(nf)%id,ncid) 169 183 ENDDO 170 184 … … 177 191 178 192 IF (is_mpi_root) THEN 179 status = NF90_ CLOSE(ncid)193 status = NF90_SYNC(ncid) 180 194 IF (status/=NF90_NOERR) THEN 181 195 WRITE(*,*) "write_restart error: failed to close ",TRIM(ADJUSTL(restart_file_name))//'.nc' … … 418 432 field=>field_array(nf)%field 419 433 status = nf90_inq_varid(ncid, TRIM(ADJUSTL(field(1)%name)), fieldId(nf)) 420 status = nf90_get_att(ncid, NF90_GLOBAL, "iteration", it) 434 status = nf90_inq_varid(ncid, "iteration",itid) 435 IF (status==NF90_NOERR) THEN 436 status = nf90_get_var(ncid, itid, it) 437 ELSE 438 status = nf90_get_att(ncid, NF90_GLOBAL, "iteration", it) 439 ENDIF 421 440 CALL read_start_field(field,fieldId(nf),ncid) 422 441 ENDDO -
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/time.f90
r298 r314 17 17 REAL(rstd),SAVE :: write_period 18 18 !$OMP THREADPRIVATE(write_period) 19 INTEGER,SAVE :: itau_out, itau_adv, itau_dissip, itau_physics, itaumax 20 !$OMP THREADPRIVATE(itau_out, itau_adv, itau_dissip, itau_physics, itaumax )19 INTEGER,SAVE :: itau_out, itau_adv, itau_dissip, itau_physics, itaumax, itau_write_etat0 20 !$OMP THREADPRIVATE(itau_out, itau_adv, itau_dissip, itau_physics, itaumax, itau_write_etat0) 21 21 22 22 INTEGER,SAVE :: day_step,ndays … … 38 38 39 39 PUBLIC create_time_counter_header, update_time_counter, close_time_counter, init_time, & 40 dt, write_period, itau_out, itau_adv, itau_dissip, itau_physics, itaumax, &40 dt, write_period, itau_out, itau_adv, itau_dissip, itau_physics,itau_write_etat0, itaumax, & 41 41 day_step,ndays,jD_ref,jH_ref,day_ini,day_end,annee_ref,day_ref,an, mois, jour,heure, & 42 42 calend,time_style,itau0 … … 86 86 itau_physics=1 87 87 CALL getin('itau_physics',itau_physics) 88 89 itau_write_etat0=HUGE(itau_write_etat0) 90 CALL getin('itau_write_etat0',itau_write_etat0) 91 itau_write_etat0=itau_write_etat0/dt 88 92 89 93 IF (is_mpi_root .AND. omp_master) THEN -
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/timeloop_gcm.f90
r304 r314 302 302 CALL physics(it,f_phis, f_ps, f_theta_rhodz, f_u, f_wflux, f_q) 303 303 ENDIF 304 305 IF (MOD(it,itau_write_etat0)==0 .OR. it==itau0+itaumax) THEN 306 CALL write_etat0(it,f_ps, f_phis,f_theta_rhodz,f_u,f_q) 307 ENDIF 304 308 305 309 ENDDO 306 310 307 CALL write_etat0(itau0+itaumax,f_ps, f_phis,f_theta_rhodz,f_u,f_q)311 ! CALL write_etat0(itau0+itaumax,f_ps, f_phis,f_theta_rhodz,f_u,f_q) 308 312 309 313 CALL check_conserve(f_ps,f_dps,f_u,f_theta_rhodz,f_phis,it)
Note: See TracChangeset
for help on using the changeset viewer.