Changeset 1528 for LMDZ4/branches/LMDZ4_AR5/libf/cosp/phys_cosp.F90
- Timestamp:
- May 26, 2011, 2:06:28 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/branches/LMDZ4_AR5/libf/cosp/phys_cosp.F90
r1368 r1528 1 1 ! Simulateur COSP : Cfmip Observation Simulator Package 2 2 3 ! ISCCP, Radar (QuickBeam), Lidar et Parasol (ACTSIM), MISR, RTTOVS 3 4 !Idelkadi Abderrahmane Aout-Septembre 2009 4 5 5 6 6 subroutine phys_cosp( itap,dtime,freq_cosp, & … … 8 8 ecrit_mth,ecrit_day,ecrit_hf, & 9 9 Nptslmdz,Nlevlmdz,lon,lat, presnivs,overlaplmdz, & 10 ref_liq,ref_ice,fracTerLic,u_wind,v_wind,phi ,ph,p,skt,t, &10 ref_liq,ref_ice,fracTerLic,u_wind,v_wind,phis,phi,ph,p,skt,t, & 11 11 sh,rh,tca,cca,mr_lsliq,mr_lsice,fl_lsrainI,fl_lssnowI, & 12 12 fl_ccrainI,fl_ccsnowI,mr_ozone,dtau_s,dem_s) … … 25 25 ! u_wind,v_wind, !Vents a 10m ??? 26 26 ! phi, !Geopotentiel 27 ! phis, !Geopotentiel sol 27 28 ! ph, !pression pour chaque inter-couche 28 29 ! p, !Pression aux milieux des couches … … 85 86 integer, save :: isccp_topheight,isccp_topheight_direction,overlap 86 87 integer,save :: Ncolumns ! Number of subcolumns in SCOPS 87 integer,parameter :: Ncollmdz=20 88 ! integer,parameter :: Ncollmdz=20 89 integer,parameter :: Ncolmax=100 88 90 integer, save :: Npoints ! Number of gridpoints 89 91 !$OMP THREADPRIVATE(Npoints) … … 126 128 !$OMP THREADPRIVATE(debut_cosp) 127 129 integer :: itau_wcosp 128 character(len=10),dimension(Ncollmdz),parameter :: chcol=(/'c01','c02','c03','c04','c05','c06','c07','c08','c09','c10', & 129 'c11','c12','c13','c14','c15','c16','c17','c18','c19','c20'/) 130 real,dimension(Ncollmdz) :: column_ax 130 character(len=2) :: str2 131 real,dimension(Ncolmax) :: column_ax 132 character(len=10),save,dimension(Ncolmax) :: chcol 133 131 134 integer, save :: Nlevout 132 135 !$OMP THREADPRIVATE(Nlevout) … … 137 140 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Input variables from LMDZ-GCM 138 141 integer :: overlaplmdz ! overlap type: 1=max, 2=rand, 3=max/rand ! cosp input (output lmdz) 139 ! real,dimension(Npoints,Nlevels) :: height,phi,p,ph,T,sh,rh,tca,cca,mr_lsliq,mr_lsice,mr_ccliq,mr_ccice, &140 142 real,dimension(Nptslmdz,Nlevlmdz) :: height,phi,p,ph,T,sh,rh,tca,cca,mr_lsliq,mr_lsice,mr_ccliq,mr_ccice, & 141 143 fl_lsrain,fl_lssnow,fl_ccrain,fl_ccsnow,fl_lsgrpl, & 142 zlev, mr_ozone,radliq,radice,dtau_s,dem_s,ref_liq,ref_ice144 zlev,zlev_half,mr_ozone,radliq,radice,dtau_s,dem_s,ref_liq,ref_ice 143 145 real,dimension(Nptslmdz,Nlevlmdz) :: fl_lsrainI,fl_lssnowI,fl_ccrainI,fl_ccsnowI 144 real,dimension(Nptslmdz) :: lon,lat,skt,fracTerLic,u_wind,v_wind 146 real,dimension(Nptslmdz) :: lon,lat,skt,fracTerLic,u_wind,v_wind,phis 145 147 real,dimension(Nlevlmdz) :: presnivs 146 148 integer :: itap,k,ip … … 165 167 if (debut_cosp) then 166 168 NPoints=Nptslmdz 169 Nlevels=Nlevlmdz 170 167 171 ! Lecture du namelist input 168 172 CALL read_cosp_input 169 173 174 do ii=1,Ncolumns 175 write(str2,'(i2.2)')ii 176 chcol(ii)="c"//str2 177 column_ax(ii) = real(ii) 178 enddo 179 170 180 ! Clefs Outputs 171 181 call read_cosp_output_nl(cosp_output_nl,cfg) 172 182 173 if ( (Ncollmdz.ne.Ncolumns).or. (Nlevlmdz.ne.Nlevels) ) then174 print*,'Nb points Horiz, Vert, Sub-col passes par physiq.F = ', &175 Nptslmdz, Nlevlmdz, Ncollmdz176 print*,'Nb points Horiz, Vert, Sub-col lus dans namelist = ', &177 Npoints, Nlevels, Ncolumns178 print*,'Nb points Horiz, Vert, Sub-col passes par physiq.F est different de celui lu par namelist '179 call abort180 endif181 182 183 if (overlaplmdz.ne.overlap) then 183 184 print*,'Attention overlaplmdz different de overlap lu dans namelist ' … … 221 222 gbx%p = p ! 222 223 gbx%ph = ph 223 gbx%zlev_half = phi/9.81 224 225 do k = 1, Nlevels-1 226 do ip = 1, Npoints 227 zlev(ip,k) = phi(ip,k)/9.81 + (phi(ip,k+1)-phi(ip,k))/9.81 * (ph(ip,k)-ph(ip,k+1))/p(ip,k) 228 enddo 229 enddo 230 do ip = 1, Npoints 231 zlev(ip,Nlevels) = zlev(ip,Nlevels-1)+ 2.*(phi(ip,Nlevels)/9.81-zlev(ip,Nlevels-1)) 232 END DO 233 gbx%zlev = zlev 224 gbx%zlev = phi/9.81 225 226 zlev_half(:,1) = phis(:)/9.81 227 do k = 2, Nlevels 228 do ip = 1, Npoints 229 zlev_half(ip,k) = phi(ip,k)/9.81 + & 230 (phi(ip,k)-phi(ip,k-1))/9.81 * (ph(ip,k)-p(ip,k)) / (p(ip,k)-p(ip,k-1)) 231 enddo 232 enddo 233 gbx%zlev_half = zlev_half 234 234 235 235 gbx%T = T … … 275 275 gbx%snow_cv = fl_ccsnow !flux_convective_cloud_snow 276 276 277 !Attention Teste278 ! do k = 1, Nlevels279 ! do ip = 1, Npoints280 !! liquid particles :281 ! radliq(ip,k) = 12.0e-06282 ! if (k.le.3) radliq(ip,k) = 11.0e-06283 284 ! ice particles :285 ! if ( (t(ip,k)-273.15).gt.-81.4 ) then286 ! radice(ip,k) = (0.71*(t(ip,k)-273.15)+61.29)*1e-6287 ! else288 ! radice(ip,k) = 3.5*1e-6289 ! endif290 ! END DO291 ! END DO292 293 ! gbx%Reff(:,:,I_LSCLIQ) = radliq294 ! gbx%Reff(:,:,I_LSCICE) = radice295 ! gbx%Reff(:,:,I_CVCLIQ) = radliq296 ! gbx%Reff(:,:,I_CVCICE) = radice297 ! print*,'radliq(1,:)=',radliq(1,:)298 ! print*,'radice(1,:)=',radice(1,:)299 300 277 gbx%Reff(:,:,I_LSCLIQ) = ref_liq*1e-6 301 278 gbx%Reff(:,:,I_LSCICE) = ref_ice*1e-6 302 279 gbx%Reff(:,:,I_CVCLIQ) = ref_liq*1e-6 303 280 gbx%Reff(:,:,I_CVCICE) = ref_ice*1e-6 304 ! print*,'ref_liq(1,:)=',ref_liq(1,:)*1e-6305 ! print*,'ref_liq(1,:)=',ref_ice(1,:)*1e-6306 281 307 282 ! ISCCP simulator … … 338 313 include "ini_histhfCOSP.h" 339 314 endif 340 341 ! print*,'Fin Initialisation des sorties COSP, debut_cosp =',debut_cosp342 ! print*,'R_UNDEF=',R_UNDEF343 315 344 316 debut_cosp=.false.
Note: See TracChangeset
for help on using the changeset viewer.