SUBROUTINE TRYCK(GRAV,NTAU,TAU,TT,PPE,PP) * *----------------------------------------------------------------------- * * TRYCK IS A FAST PRESSURE INTEGRATION ROUITINE. IT IS FAST BECAUSE OF * TWO REASONS: 1) IT INTEGRATES THE DIFFFERENTIAL EQUATION FOR LN(P) * AS A FUNCTION OF LN(TAU). 2) IT ITERAES DIRECTLY ON THE ELECTRON * PRESSURE, KEEPING THE NUMBER OF CALLS TO ABSKO TO A MINIMUM. * ASSUMING A POWER LAW BEHAVIOUR OF PP,TT,PPE,ETC.: PP=C*TAU**DP,ETC., * ONE CAN SHOW THAT DP=(1.+DT*(ROSSPE*PGT/PGPE-ROSST)/(1.+ROSSPE/PGPE). * THE ANSATZ FOR PP IMPLIES PP(1)=TAU(1)*GRAV/(ROSS(1)*DP), WHICH * SERVES AS A BOUNDARY CONDITION. * 790516 *NORD* * * Export version 1988-03-24 ********* Olof Morell *** Uppsala * *----------------------------------------------------------------------- * INCLUDE 'spectrum.inc' DIMENSION TAU(NDP),TT(NDP),PPE(NDP),PP(NDP),PPR(NDP),PPT(NDP), & DLNTAU(NDP),ROSS(NDP) * COMMON/CI8/ PGC,RHOC,EC * DATA EPS,RELT,RELPE,PEDEF/1.E-3,1.E-3,1.E-3,1./ * DO 1 K=1,NTAU PPR(K)=0. PPT(K)=0. IF(K.EQ.1)GOTO 1 DLNTAU(K)=ALOG(TAU(K)/TAU(K-1)) 1 CONTINUE * * START * PRINT 101 101 FORMAT('1PRESSURE INTEGRATION'/' K',6X,'TAU',10X,'TT', & 9X,'PPE',8X,'PTOT',8X,'ROSS',10X,'DP',9X,'NABSKO') DT=0. * * USE 'DLNT/DLNTAU'=DT=0. TO BE COMPATIBLE WITH SOLVE. OTHERWISE * DT=(TT(2)/TT(1)-1.)/DLNTAU(2) * NABSKO=0 KK=1 IF(PPE(1).LE.0.) PPE(1)=PEDEF * * ITERATE ON BOUNDARY CONDITION, USING PARTIAL DERIVATIVES * 100 CONTINUE ROSS(1)=ROSSOP(TT(1),PPE(1),1) PP(1)=PGC+PPT(1)+PPR(1) PG=PGC ROSST=ROSSOP(TT(1)*(1.+RELT),PPE(1),1) PGT=PGC ROSSPE=ROSSOP(TT(1),PPE(1)*(1.+RELPE),1) PGPE=PGC PGT=(PGT/PG-1.)/RELT PGPE=(PGPE/PG-1.)/RELPE ROSST=(ROSST/ROSS(1)-1.)/RELT ROSSPE=(ROSSPE/ROSS(1)-1.)/RELPE NABSKO=NABSKO+3 DP=(1.+DT*(ROSSPE*PGT/PGPE-ROSST))/(1.+ROSSPE/PGPE) DP=AMAX1(DP,.1) DLNPE=ALOG(GRAV*TAU(1)/(PG*ROSS(1)*DP))/(PGPE+ROSSPE) PPE(1)=PPE(1)*EXP(DLNPE) IF(ABS(DLNPE).GT.EPS) GOTO 100 * * END BOUNDARY CONDITION * ROSS(1)=ROSSOP(TT(1),PPE(1),1) NABSKO=NABSKO+1 PP(1)=PGC+PPT(1)+PPR(1) PRINT 102,KK,TAU(1),TT(1),PPE(1),PP(1),ROSS(1),DP,NABSKO 102 FORMAT(I3,6E12.5,I12) * DPE=(DP-DT*PGT)/PGPE DEDLNP=-(PGPE*PG/PP(1)+.5*DLNTAU(2)*GRAV*TAU(1)/(PP(1)*ROSS(1))* & (PGPE*PG/PP(1)+ROSSPE)) * * TAU LOOP * DO 110 K=2,NTAU PPE(K)=PPE(K-1)*EXP(DPE*DLNTAU(K)) NABSKO=0 * * ITERATION LOOP * DLNPE=0. 111 CONTINUE ROSS(K)=ROSSOP(TT(K),PPE(K),k) PP(K)=PGC+PPT(K)+PPR(K) NABSKO=NABSKO+1 ERROR=(.5*DLNTAU(K)*GRAV*(TAU(K-1)/(PP(K-1)*ROSS(K-1))+ & TAU(K)/(PP(K)*ROSS(K)))-ALOG(PP(K)/PP(K-1))) CALL ZEROF(ERROR,DLNPE,DEDLNP) PPE(K)=PPE(K)*EXP(DLNPE) IF(ABS(DLNPE).GT.EPS) GOTO 111 * ROSS(K)=ROSSOP(TT(K),PPE(K),k) NABSKO=NABSKO+1 PP(K)=PGC+PPT(K)+PPR(K) DP=GRAV*TAU(K)/(PGC*ROSS(K)) DPE=ALOG(PPE(K)/PPE(K-1))/DLNTAU(K) PRINT 102,K,TAU(K),TT(K),PPE(K),PP(K),ROSS(K),DP,NABSKO 110 CONTINUE * * END TAU LOOP * RETURN END