Skip to content

Instantly share code, notes, and snippets.

@ckm3
Last active July 3, 2024 18:56
Show Gist options
  • Save ckm3/5a4531e0268e78e9c444f5bc84cfe8c1 to your computer and use it in GitHub Desktop.
Save ckm3/5a4531e0268e78e9c444f5bc84cfe8c1 to your computer and use it in GitHub Desktop.
LC generator of WD code in Python version.
import fortranformat as ff
def generate_first_line(MPAGE=1, NREF=1, MREF=1, IFSMV1=1, IFSMV2=1, ICOR1=1, ICOR2=1, IF3B=0, LD1=-3, LD2=-2, KSPEV=0,
KSPOT=2, NOMAX=1, IFCGS=0, KTSTEP=0):
fortran_format = ff.FortranRecordWriter('8(I1,1X),2(I2,1X),4(I1,1X),I6')
return fortran_format.write(
[MPAGE, NREF, MREF, IFSMV1, IFSMV2, ICOR1, ICOR2, IF3B, LD1, LD2, KSPEV, KSPOT, NOMAX, IFCGS, KTSTEP]) + '\n'
def generate_second_line(JDPHS=2, HJD0=30979.347628, PZERO=12, DPDT=0.02, PSHIFT=0, DELPH=0.01156, NGA=1, STDEV=0,
NOISE=1, SEED=1384723):
fortran_format = ff.FortranRecordWriter('I1,F15.6,D17.10,D14.6,F10.4,F8.5,I3,D11.4,I2,F11.0')
return fortran_format.write([JDPHS, HJD0, PZERO, DPDT, PSHIFT, DELPH, NGA, STDEV, NOISE, SEED]) + '\n'
def generate_thrid_line(HJDST=30979.347628, HJDSP=30980.347628, HJDIN=0.100000, PHSTRT=-0.200000, PHSTOP=1, PHIN=0.01,
PHN=0.25, PHOBS=0.75, LSP=1, TOBS=1.014):
fortran_format = ff.FortranRecordWriter('F14.6,F15.6,F13.6,4F12.6,F10.4,I2,F8.4')
return fortran_format.write([HJDST, HJDSP, HJDIN, PHSTRT, PHSTOP, PHIN, PHN, PHOBS, LSP, TOBS]) + '\n'
def genereate_forth_line(MODE=2, IPB=0, IFAT1=1, IFAT2=1, N1=30, N2=30, PERR0=2.308469, DPERDT=0.00011, THE=0,
VUNIT=100):
fortran_format = ff.FortranRecordWriter('4I2,2I4,F13.6,D14.6,F8.5,F8.2')
return fortran_format.write([MODE, IPB, IFAT1, IFAT2, N1, N2, PERR0, DPERDT, THE, VUNIT]) + '\n'
def genereate_fifth_line(E=.2185, A=10.3, F1=2.9, F2=1.59, VGA=-0.099, XINCL=89.362, GR1=1, GR2=1, ABUNIN=0, Fspot1=1,
Fspot2=1):
fortran_format = ff.FortranRecordWriter('F6.5,D13.6,2F10.4,F10.4,F9.3,2F7.3,F7.2,2F10.4')
return fortran_format.write([E, A, F1, F2, VGA, XINCL, GR1, GR2, ABUNIN, Fspot1, Fspot2]) + '\n'
def genereate_sixth_line(TAVH=1.014, TAVC=0.8487, ALB1=1, ALB2=1, POTH=0.659, POTC=6.366, RM=0.7417, XBOL1=0.538,
XBOL2=0.658, YBOL1=0.174, YBOL2=0.142, DPCLOG=2.7324):
fortran_format = ff.FortranRecordWriter('F7.4,1X,F7.4,2F7.3,3D13.6,4F7.3,F8.5')
return fortran_format.write([TAVH, TAVC, ALB1, ALB2, POTH, POTC, RM, XBOL1, XBOL2, YBOL1, YBOL2, DPCLOG]) + '\n'
def genereate_seventh_line(A3B=0, P3B=32.78, XINC3B=76, E3B=0.160038, PERR3B=3.6376558, TC3B=44655.414831):
fortran_format = ff.FortranRecordWriter('D12.6,D14.7,F11.5,F9.6,F10.7,F17.8')
return fortran_format.write([A3B, P3B, XINC3B, E3B, PERR3B, TC3B]) + '\n'
def genereate_eighth_line(IBAND=7, HL=0.0010759, CL=0.000465577, XH=-0.029, XC=0.669, YH=0.726, YC=0.285,
EL3=0.1048e-4, OPSF=0, ZERO=8, FACTOR=1, WL=0.55, AEXTINC=0, CALIB=0.36895):
fortran_format = ff.FortranRecordWriter('I3,2D15.7,4F7.3,D12.4,D11.4,F8.3,F8.4,F10.6,F8.4,d12.5')
return fortran_format.write([IBAND, HL, CL, XH, XC, YH, YC, EL3, OPSF, ZERO, FACTOR, WL, AEXTINC, CALIB]) + '\n'
def write_to_infile():
infile_list = [generate_first_line(), generate_second_line(), generate_thrid_line(), genereate_forth_line(),
genereate_fifth_line(), genereate_sixth_line(), genereate_seventh_line(), genereate_eighth_line(),
'150.']
with open('../results/lcin.active', 'w') as infile:
infile.writelines(infile_list)
def main():
write_to_infile()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment