C ============================================================================= C POINT-TO-SUN LINE-OF-SIGHT PROPAGATION: C FOR DIRECT NONISOTHERMAL SOLAR SOURCE FUNCTION EVALUATIONS C . . . OSUN(1): OPTICAL DEPTH AT LINE CENTER FOR SCATTERING C . . . OSUN(2): OPTICAL DEPTH FOR ABSORPTION C . . . OSUN(3): NONISOTHERMAL TRANSMISSION FUNCTION C NOTE THAT IN THIS APPLICATION, THETA IS IDENTICALLY EQUAL TO CHI AND C PHI IS IDENTICALLY ZERO, SO (IN THE NOTATION OF ZONE) THET2=X2; C HENCE THETA & THET2 ARE ELIMINATED IN FAVOR OF X1 & X2. C ----------------------------------------------------------------------------- C [January 2002]: C Evaluation of solar slant path spectral opacities and total resonance line C transmission function (CFR approximation) returned to simple grid-based C propagations, consistent with ZONE. In the past, a single ZSUN routine C was used for both solar transmission function evaluations and line-of-sight C ACER integrations, for reasons of C 1) convenience, and C 2) because it was then thought that a more "precise" spectral opacity C evaluation (using the thermospheric "fine-grid" table) was one step C involved in implementing the "second order" solution. C However, current opinion is that the placement of a representative midpoint C is too arbitrary to make the "precise" evaluation an "accurate" one. C C Further, rather than collapse to the 2-D geometry used in the earlier ZSUN, C the full 3-D ZONE geometry is retained with PHI set to a small nonzero C value. The idea here is to make it easier to add in a second source C of incident flux from another direction. C ----------------------------------------------------------------------------- SUBROUTINE ZSUN_CELL(IKNT,JKNT,BRAD,BCHI,HDNS,O2DNS,TATM, & I1,J1,R1,X1,THETA,PHI, & LPROF,SPDPT,WSPD,OSUN) IMPLICIT REAL*8 (A-H,O-Z) LOGICAL PASS, INSIDE DIMENSION BRAD(IKNT+1),BCHI(JKNT+1) DIMENSION HDNS(IKNT),O2DNS(IKNT),TATM(IKNT) DIMENSION SPDPT(LPROF),WSPD(LPROF) DIMENSION OSUN(3), TAU_LP(0 : 16) DIMENSION PARAM_SOLAR(13) C COMMON / LOSREF_PARM / C & CX1, SX1, CU1, SU1, CP1, SP1, C & RSMU, DSMU, XSKIM, XTOT, OSKIM, OTOT, IPHASE, PASS COMMON /EXOS/ GM,CONL,PLANETR,RBASE,RC,RUPR,RP,TEXO,DEXO,VELT, & RADPF,CENTER,ABSCSX,FTSAT,FDSAT,IGEO COMMON /NMBR/ PI,RTPI,PID2,OFFSET C ----------------------------------------------------------------------------- C INITIALIZE STORAGE ARRAYS (MOST ENTRIES REMAIN ZERO/FALSE) C ----------------------------------------------------------------------------- DO ISUN = 1,3 OSUN(ISUN) = 0.0D0 END DO TAU_O2 = 0.0D0 TAULOC = 0.0D0 DO LP = 0,LPROF TAU_LP(LP) = 0.0D0 END DO C ----------------------------------------------------------------------------- C LINE OF SIGHT REFERENCE QUANTITIES C ----------------------------------------------------------------------------- CALL LOS_PARAM(I1,J1,R1,X1,THETA,PHI,PARAM_SOLAR,PASS,IPHASE) TREF = TATM(I1) C ----------------------------------------------------------------------------- C LOS-SEGMENT FROM INITIAL POINT (NOMINAL CELL CENTER) TO CELL POINT-OF-EXIT C AND CORRESPONDING INCREMENT TO SPECTRAL OPACITY C ----------------------------------------------------------------------------- ITRIP = 0 DELTA_A = 0.0D0 I_A = I1 J_A = J1 R_A = R1 X_A = X1 T_A = THETA CALL FAR_SIDE(IKNT, JKNT, BRAD, BCHI, PARAM_SOLAR, INSIDE, & I_A, J_A, T_A, R_A, X_A, PASS, IPHASE, & I_B, J_B, T_B, R_B, X_B, OMEGA) DELTA_B = SQRT(R_B**2 + R1**2 - 2.0D0*R_B*R1*COS(OMEGA)) C OPTICAL DEPTH ARRAY ELEMENTS IF ( INSIDE ) THEN TAU_O2 = DELTA_B * O2DNS(I_A) * ABSCSX TAULOC = DELTA_B * HDNS(I_A) * CENTER TAU_LP(0) = TAULOC FCTR = SQRT(TEXO/TATM(I_A)) DO LP = 1,LPROF XPNT = (FCTR * SPDPT(LP))**2 TAU_LP(LP) = TAULOC * FCTR * EXP(-XPNT) END DO IF ((I_B.LT.1).OR.(I_B.GT.IKNT)) GO TO 222 END IF C ----------------------------------------------------------------------------- C SUBSEQUENT STEPS THROUGH CELLS ALONG LINE OF SIGHT C ----------------------------------------------------------------------------- 111 CONTINUE ITRIP = ITRIP + 1 DELTA_A = DELTA_B I_A = I_B J_A = J_B R_A = R_B X_A = X_B T_A = T_B CALL FAR_SIDE(IKNT, JKNT, BRAD, BCHI, PARAM_SOLAR, INSIDE, & I_A, J_A, T_A, R_A, X_A, PASS, IPHASE, & I_B, J_B, T_B, R_B, X_B, OMEGA) DELTA_B = SQRT(R_B**2 + R1**2 - 2.0D0*R_B*R1*COS(OMEGA)) C OPTICAL DEPTH ARRAY ELEMENTS IF ( INSIDE ) THEN TAU_O2 = (DELTA_B - DELTA_A) * O2DNS(I_A) * ABSCSX + TAU_O2 TAULOC = (DELTA_B - DELTA_A) * HDNS(I_A) * CENTER TAU_LP(0) = TAULOC + TAU_LP(0) FCTR = SQRT(TEXO/TATM(I_A)) DO LP = 1,LPROF XPNT = (FCTR * SPDPT(LP))**2 TAU_LP(LP) = TAULOC * FCTR * EXP(-XPNT) + TAU_LP(LP) END DO IF ((I_B.LT.1).OR.(I_B.GT.IKNT)) GO TO 222 END IF GO TO 111 C ----------------------------------------------------------------------------- C FINAL TRANMISSION FUNCTION C ----------------------------------------------------------------------------- 222 CONTINUE OSUN(1) = TAU_LP(0) OSUN(2) = TAU_O2 OSUN(3) = 0.0D0 FCTREF = TEXO/TREF DO LP = 1,LPROF XPNT = (FCTREF - 1.0D0) * (SPDPT(LP)**2) OSUN(3) = OSUN(3) + WSPD(LP) * EXP(-TAU_LP(LP)) * EXP(-XPNT) END DO OSUN(3) = OSUN(3) * SQRT(FCTREF) * 2.0D0 / RTPI C ----------------------------------------------------------------------------- RETURN END C =============================================================================