Changeset 97
- Timestamp:
- 08/04/12 00:13:44 (12 years ago)
- Location:
- codes/icosagcm/trunk/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/caldyn_gcm.f90
r96 r97 643 643 USE omega_mod 644 644 USE write_field 645 USE vertical_interp_mod 645 646 TYPE(t_field),POINTER :: f_ps(:), f_phis(:), f_u(:), f_theta_rhodz(:), f_dps(:), & 646 647 f_buf_i(:), f_buf_v(:), f_buf_i3(:), f_buf1_i(:), f_buf2_i(:), f_buf_s(:), f_buf_p(:) 648 649 REAL(rstd) :: out_pression_lev 650 CHARACTER(LEN=255) :: str_pression 651 652 out_pression_level=0 653 CALL getin("out_pression_level",out_pression_level) 654 WRITE(str_pression,*) INT(out_pression_level/100) 655 str_pression=ADJUSTL(str_pression) 647 656 648 657 CALL writefield("ps",f_ps) … … 654 663 CALL w_omega(f_ps, f_u, f_buf_i) 655 664 CALL writefield('omega', f_buf_i) 665 IF (out_pression_level<=preff) THEN 666 CALL vertical_interp(f_ps,f_buf_i,f_buf_s,out_pression_level) 667 CALL writefield("omega"//TRIM(str_pression),f_buf_s) 668 ENDIF 656 669 657 670 ! Temperature 658 671 CALL theta_rhodz2temperature(f_ps,f_theta_rhodz,f_buf_i) ; 659 672 CALL writefield("T",f_buf_i) 673 674 IF (out_pression_level<=preff) THEN 675 CALL vertical_interp(f_ps,f_buf_i,f_buf_s,out_pression_level) 676 CALL writefield("T"//TRIM(str_pression),f_buf_s) 677 ENDIF 660 678 661 679 ! velocity components … … 663 681 CALL writefield("ulon",f_buf1_i) 664 682 CALL writefield("ulat",f_buf2_i) 683 684 IF (out_pression_level<=preff) THEN 685 CALL vertical_interp(f_ps,f_buf1_i,f_buf_s,out_pression_level) 686 CALL writefield("ulon"//TRIM(str_pression),f_buf_s) 687 CALL vertical_interp(f_ps,f_buf2_i,f_buf_s,out_pression_level) 688 CALL writefield("vlon"//TRIM(str_pression),f_buf_s) 689 ENDIF 665 690 666 691 ! geopotential … … 670 695 CALL writefield("theta",f_buf1_i) ! potential temperature 671 696 CALL writefield("pk",f_buf2_i) ! Exner pressure 697 672 698 673 699 END SUBROUTINE write_output_fields -
codes/icosagcm/trunk/src/icosa_gcm.f90
r82 r97 6 6 USE wind_mod 7 7 USE mpipara 8 USE vertical_interp_mod 8 9 IMPLICIT NONE 9 10 … … 48 49 CALL compute_geometry 49 50 CALL init_disvert 50 51 CALL init_vertical_interp 52 51 53 CALL allocate_field(sum_ne,field_T,type_real) 52 54 … … 79 81 ! CALL WriteField("sum_ne",sum_ne) 80 82 CALL write_apbp 81 CALL create_time_counter_header83 CALL init_time 82 84 CALL timeloop 83 85 -
codes/icosagcm/trunk/src/time.f90
r82 r97 1 1 MODULE time_mod 2 2 use prec 3 3 PRIVATE 4 4 … … 7 7 INTEGER,SAVE :: it 8 8 9 PUBLIC create_time_counter_header, update_time_counter, close_time_counter 9 REAL(rstd),SAVE :: dt 10 REAL(rstd),SAVE :: write_period 11 INTEGER,SAVE :: itau_out 12 INTEGER,SAVE :: itaumax 13 14 PUBLIC create_time_counter_header, update_time_counter, close_time_counter, init_time 10 15 11 16 12 17 13 18 CONTAINS 19 20 SUBROUTINE init_time 21 USE earth_const 22 USE ioipsl 23 IMPLICIT NONE 24 REAL(rstd) :: run_length 25 26 dt=90. 27 CALL getin('dt',dt) 28 29 itaumax=100 30 CALL getin('itaumax',itaumax) 31 32 run_length=dt*itaumax 33 CALL getin('run_length',run_length) 34 itaumax=run_length/dt 35 PRINT *,'itaumax=',itaumax 36 dt=dt/scale_factor 37 38 write_period=0 39 CALL getin('write_period',write_period) 40 write_period=write_period/scale_factor 41 itau_out=FLOOR(.5+write_period/dt) 42 PRINT *, 'Output frequency (scaled) set to ',write_period, ' : itau_out = ',itau_out 43 44 CALL create_time_counter_header 45 46 END SUBROUTINE init_time 14 47 15 48 SUBROUTINE create_time_counter_header … … 21 54 INTEGER :: timeid, dtid 22 55 REAL(rstd) :: dt 56 CHARACTER(LEN=255) :: time_frequency 57 23 58 status = NF90_CREATE('time_counter.nc', NF90_CLOBBER, ncid) 24 59 status = NF90_DEF_DIM(ncid,'time_counter',NF90_UNLIMITED,timeid) … … 28 63 status = NF90_PUT_ATT(ncid,time_counter_id,"calendar","noleap") 29 64 status = NF90_DEF_VAR(ncid,'mdt',NF90_DOUBLE,varid=dtid) 65 66 WRITE(time_frequency,*) write_period 67 PRINT*,TRIM(time_frequency) 68 status = NF90_PUT_ATT(ncid,NF90_GLOBAL,"time_frequency",TRIM(time_frequency)//"s") 69 30 70 status = NF90_ENDDEF(ncid) 31 71 -
codes/icosagcm/trunk/src/timeloop_gcm.f90
r81 r97 102 102 103 103 CALL etat0(f_ps,f_phis,f_theta_rhodz,f_u, f_q) 104 CALL writefield("phis",f_phis,once=.TRUE.) 104 105 CALL transfert_request(f_q,req_i1) 105 106
Note: See TracChangeset
for help on using the changeset viewer.