c*********************************************************************** subroutine cm15um_hb_simple (ig,icurt) c computing the curtix matrixes for the 15 um hot bands c (las de las bandas fudnamentales las calcula cm15um_fb) c jan 98 malv version de mod3/cm_15um.f para mz1d c jul 2011 malv+fgg adapted to LMD-MGCM c*********************************************************************** implicit none !!!!!!!!!!!!!!!!!!!!!!! ! common variables & constants include 'nltedefs.h' include 'nlte_atm.h' include 'nlte_data.h' ! include '../CMN/tcr_15um.cmn' include 'tcr_15um.h' include 'nlte_results.h' include 'nlte_matrix.h' include 'nlte_curtis.h' !!!!!!!!!!!!!!!!!!!!!!! ! arguments integer ig ! ADDED FOR TRACEBACK integer icurt ! icurt=0,1,2 ! new calculations? (see caa.f heads) !!!!!!!!!!!!!!!!!!!!!!! ! local variables real*4 cdummy(nl,nl), csngl(nl,nl) real*8 cax1(nl,nl), cax2(nl,nl), cax3(nl,nl) real*8 v1(nl), v2(nl), v3(nl), cm_factor, vc_factor integer itauout,icfout,itableout, interpol,ismooth, isngldble integer i,j,ik,ist,isot,ib,itt !character bandcode*2 character isotcode*2 character codmatrx_hot*5 !!!!!!!!!!!!!!!!!!!!!!! ! external functions external bandid character*2 bandid !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! subroutines called: ! mz4sub, dmzout, readc_mz4, readcupdw, mztf !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! formatos 132 format(i2) ************************************************************************ ************************************************************************ call zerom (c121,nl) call zerov (vc121,nl) call zerom (cup121,nl) call zerom (cdw121,nl) call zerov (taugr121,nl) itauout = 0 ! =1 --> with output of tau icfout = 0 ! =1 --> with output of cf itableout = 0 ! =1 --> with output of table of taus isngldble = 1 ! =1 --> dble precission codmatrx_hot=' ' if (icurt.eq.2) then icfout=1 elseif (icurt.eq.0) then write (*,'(a,a$)') @ ' hot bands. code for old matrixes (5 chars): ' read (*,'(a)') codmatrx_hot endif fileroot = 'cfl' ! ====================== curtis matrixes for fh bands ================== ! una piedra en el camino ... ! write (*,*) ' cm15um_hb/1 ' ccc if ( input_cza.ge.1 ) then ccc if (icurt.eq.2) then write (*,'(a,a$)') @ ' new calculation of curt. mat. for fh bands.', @ ' code for new matrixes : ' read (*,'(a)') codmatrx_hot elseif (icurt.eq.0) then write (*,'(a,a$)') @ ' reading in curt. mat. for fh bands.', @ ' code for old matrixes : ' read (*,'(a)') codmatrx_hot else ! write (*,'(a)') ! @ ' new calculation of curt. mat. for fh bands.' end if ! fh bands for the 626 isotope ================================- ist = 1 isot = 26 ! encode (2,132,isotcode) isot write (isotcode,132) isot do 11, ik=1,3 ib=ik+1 if (icurt.gt.0) then call zero3m (cax1,cax2,cax3,nl) ! una piedra en el camino ... !write (*,*) ' cm15um_hb/11 ' !write (*,*) ' ib, ist, irw, imu =', ib, ist, irw_mztf, imu call mztf ( ig,cax1,cax2,cax3,v1,v2, ib,ist,irw_mztf,imu, @ itauout,icfout,itableout) ! else ! bandcode = bandid(ib) ! filend=isotcode//dn//bandcode//codmatrx_hot !! write (*,*) char(9), fileroot//filend ! call zero3m (cax1,cax2,cax3,nl) ! call readcud_mz1d ( cax1,cax2,cax3, v1, v2, ! @ fileroot,filend, csngl, nl,nan,0,isngldble) end if c calculating the total c121(n,r) matrix for the first hot band do i=1,nl if ( ib .eq. 4 ) then ! write (*,*) ' ' ! write (*,*) i, ' ib,ist, altura :', ib,ist, zl(i) endif ! if ( v1(i) .le. 1.d-99 ) v1(i) = 0.0d0 ! if ( v2(i) .le. 1.d-99 ) v2(i) = 0.0d0 if(ik.eq.1)then cm_factor = (dble(618.03/667.75))**2.d0* @ exp( dble(ee*(667.75-618.03)/t(i)) ) vc_factor = dble(667.75/618.03) elseif(ik.eq.2)then cm_factor = 1.d0 vc_factor = 1.d0 elseif(ik.eq.3)then cm_factor = ( dble(720.806/667.75) )**2.d0* @ exp( dble(ee*(667.75-720.806)/t(i)) ) vc_factor = dble(667.75/720.806) end if do j=1,nl ! if (cax1(i,j) .le. 1.d-99 ) cax1(i,j) = 0.0d0 ! if (cax2(i,j) .le. 1.d-99 ) cax2(i,j) = 0.0d0 ! if (cax3(i,j) .le. 1.d-99 ) cax3(i,j) = 0.0d0 c121(i,j) = c121(i,j) + cax1(i,j) * cm_factor cup121(i,j) = cup121(i,j) + cax2(i,j) * cm_factor cdw121(i,j) = cdw121(i,j) + cax3(i,j) * cm_factor end do ! write (*,*) ' i =', i ! write (*,*) ' vc_factor =', vc_factor ! write (*,*) ' v1 =', v1(i) ! write (*,*) ' v2 =', v2(i) ! write (*,*) vc121(i), taugr121(i) ! write (*,*) v1(i) * vc_factor ! write (*,*) vc121(i) + v1(i) * vc_factor vc121(i) = vc121(i) + v1(i) * vc_factor ! write (*,*) v2(i) * vc_factor ! write (*,*) taugr121(i) + v2(i) * vc_factor taugr121(i) = taugr121(i) + v2(i) * vc_factor end do 11 continue ccc end if ccc return end