Skip to content

Commit

Permalink
Merge branch 'master' of calypso02:/n/projects/lanl/LanlGeoMag
Browse files Browse the repository at this point in the history
  • Loading branch information
drsteve committed Mar 28, 2013
2 parents 86a34cd + c960353 commit a3d699a
Show file tree
Hide file tree
Showing 12 changed files with 385 additions and 304 deletions.
6 changes: 6 additions & 0 deletions Examples/Bfield/B2.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,12 @@ int main(){
printf( "%20.14lf%20.14lf%20.14lf", B.x, B.y, B.z );
printf( "%20.14lf\n", Lgm_Magnitude( &B ) );

Lgm_MagModelInfo_Set_MagModel( LGM_IGRF, LGM_EXTMODEL_T01S, mInfo );
mInfo->Bfield( &u, &B, mInfo );
printf( "%20.14lf%20.14lf%20.14lf", u.x, u.y, u.z );
printf( "%20.14lf%20.14lf%20.14lf", B.x, B.y, B.z );
printf( "%20.14lf\n", Lgm_Magnitude( &B ) );


Lgm_FreeMagInfo( mInfo );

Expand Down
7 changes: 4 additions & 3 deletions Examples/Trace/MagTrace.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,11 +97,11 @@ int main(){
Lgm_MagModelInfo *mInfo = Lgm_InitMagInfo();


NX = 1000;
NX = 10;
LX_MIN = -30.0;
LX_MAX = 30.0;

NY = 1000;
NY = 10;
LY_MIN = -30.0;
LY_MAX = 30.0;

Expand All @@ -118,6 +118,7 @@ int main(){
Lgm_MagModelInfo_Set_MagModel( LGM_IGRF, LGM_EXTMODEL_TS04, mInfo );
Lgm_MagModelInfo_Set_MagModel( LGM_IGRF, LGM_EXTMODEL_T89, mInfo );
Lgm_MagModelInfo_Set_MagModel( LGM_IGRF, LGM_EXTMODEL_T96, mInfo );
Lgm_MagModelInfo_Set_MagModel( LGM_IGRF, LGM_EXTMODEL_T01S, mInfo );

Lgm_Set_Open_Limits( mInfo, -100.0, 30.0, -40.0, 40.0, -40.0, 40.0 );

Expand Down Expand Up @@ -163,7 +164,7 @@ int main(){



DumpGif( "Image_T96_3", NX, NY, Image );
DumpGif( "Image_T01S_2", NX, NY, Image );
LGM_ARRAY_2D_FREE( Image );

Lgm_FreeMagInfo( mInfo );
Expand Down
2 changes: 1 addition & 1 deletion Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ if DX_COND_pdf
endif
if DX_COND_ps
MAYBE_PS = @DX_DOCDIR@/@[email protected]
uninst_ps = $(pdfdir)
uninst_ps = $(psdir)
endif
if DX_COND_html
MAYBE_HTML = @DX_DOCDIR@/html
Expand Down
2 changes: 2 additions & 0 deletions Tools/MagEphemFromSpiceKernel.c
Original file line number Diff line number Diff line change
Expand Up @@ -891,6 +891,8 @@ int main( int argc, char *argv[] ){
MagEphemInfo->LstarInfo->mInfo->Bfield = Lgm_B_T89;
} else if ( !strcmp( ExtModel, "T96" ) ){
MagEphemInfo->LstarInfo->mInfo->Bfield = Lgm_B_T96;
} else if ( !strcmp( ExtModel, "T01S" ) ){
MagEphemInfo->LstarInfo->mInfo->Bfield = Lgm_B_T01S;
} else if ( !strcmp( ExtModel, "TS04D" ) ){
MagEphemInfo->LstarInfo->mInfo->Bfield = Lgm_B_TS04;
} else if ( !strcmp( ExtModel, "TS07D" ) ){
Expand Down
14 changes: 4 additions & 10 deletions Tools/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,10 @@ MagEphemFromSpiceKernel_SOURCES = MagEphemFromSpiceKernel.c
MagEphemFromSpiceKernel_LDADD = $(top_builddir)/libLanlGeoMag/libLanlGeoMag.la @cspice_LIBS@
if ENABLE_STATIC_TOOLS
MagEphemFromSpiceKernel_LDFLAGS = $(AM_LDFLAGS) @PERL_LDFLAGS@ -static @OPENMP_CFLAGS@
MagEphemFromSpiceKernel_CFLAGS = $(AM_CFLAGS) @PERL_CFLAGS@ -I$(LGMSRCDIR) -I$(LGMSRCDIR)/Lgm @cspice_CFLAGS@ @OPENMP_CFLAGS@
MagEphemFromSpiceKernel_CFLAGS = $(AM_CFLAGS) @PERL_CFLAGS@ @cspice_CFLAGS@ @OPENMP_CFLAGS@
else
MagEphemFromSpiceKernel_LDFLAGS = $(AM_LDFLAGS) @OPENMP_CFLAGS@
MagEphemFromSpiceKernel_CFLAGS = $(AM_CFLAGS) -I$(LGMSRCDIR) -I$(LGMSRCDIR)/Lgm @cspice_CFLAGS@ @OPENMP_CFLAGS@
MagEphemFromSpiceKernel_CFLAGS = $(AM_CFLAGS) @cspice_CFLAGS@ @OPENMP_CFLAGS@
endif

#CFLAGS = -Wall -O3 -march=opteron -msse2 -mfpmath=sse,387 -ffast-math
#SPICE_LIBS = '/home/mgh/SPICE/cspice/lib/cspice.a'
#SPICE_INC = '-I/home/mgh/SPICE/cspice/include'
#HDF5_LIBS = '-L/packages/lib/hdf5-1.8.7'
#HDF5_INC = '-I/packages/include/hdf5-1.8'
#LIBS = `pkg-config --libs lgm`
#CFLAGS = `pkg-config --cflags lgm` $(SPICE_INC)
#http://www.gnu.org/software/automake/manual/html_node/Flag-Variables-Ordering.html
MagEphemFromSpiceKernel_CPPFLAGS = -I$(LGMSRCDIR) -I$(LGMSRCDIR)/Lgm $(AM_CPPFLAGS)
4 changes: 2 additions & 2 deletions libLanlGeoMag/Lgm/Lgm_MagEphemInfo.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#ifndef MAGEPHEMINFO_H
#define MAGEPHEMINFO_H

#include <Lgm/Lgm_MagModelInfo.h>
#include <Lgm/Lgm_LstarInfo.h>
#include "Lgm/Lgm_MagModelInfo.h"
#include "Lgm/Lgm_LstarInfo.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
Expand Down
18 changes: 8 additions & 10 deletions libLanlGeoMag/Lgm/Lgm_MagModelInfo.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
#include "Lgm/Lgm_Octree.h"
#include "Lgm/Lgm_Constants.h"
#include "Lgm/Lgm_DFI_RBF.h"
#include "Lgm/Lgm_Tsyg1996.h"
#include "Lgm/Lgm_Tsyg2001.h"
#include "Lgm/Lgm_Tsyg2004.h"
#include "Lgm/Lgm_Tsyg2007.h"
#include "Lgm/Lgm_Tsyg1996.h"
#include "gsl/gsl_errno.h"
#include "gsl/gsl_spline.h"
//#include "Lgm/Lgm_FastPowPoly.h"
Expand Down Expand Up @@ -441,6 +442,11 @@ typedef struct Lgm_MagModelInfo {
*/
LgmTsyg1996_Info T96_Info;

/*
* Info structure for T01S
*/
LgmTsyg2001_Info T01_Info;

/*
* Info structure for TS04
*/
Expand Down Expand Up @@ -646,15 +652,7 @@ void Tsyg_TS07( int IOPT, double *PARMOD, double PS, double SINPS, double COSPS,
*/
double mypow( double, double );
int Lgm_B_T01S( Lgm_Vector *v, Lgm_Vector *B, Lgm_MagModelInfo *Info );
void Tsyg_T01S( int IOPT, double *PARMOD, double PS, double SINPS, double COSPS, double X, double Y, double Z, double *BX, double *BY, double *BZ);
void T01S_EXTALL( int IOPGEN, int IOPT, int IOPB, int IOPR, double *A, int NTOT, double PDYN, double DST, double BYIMF,
double BZIMF, double VBIMF1, double VBIMF2, double PS, double X, double Y, double Z,
double *BXCF, double *BYCF, double *BZCF, double *BXT1, double *BYT1, double *BZT1,
double *BXT2, double *BYT2, double *BZT2, double *BXSRC, double *BYSRC, double *BZSRC,
double *BXPRC, double *BYPRC, double *BZPRC, double *BXR11, double *BYR11, double *BZR11,
double *BXR12, double *BYR12, double *BZR12, double *BXR21, double *BYR21, double *BZR21,
double *BXR22, double *BYR22, double *BZR22, double *HXIMF, double *HYIMF, double *HZIMF,
double *BX, double *BY, double *BZ);
void Tsyg_T01S( int IOPT, double *PARMOD, double PS, double SINPS, double COSPS, double X, double Y, double Z, double *BX, double *BY, double *BZ, LgmTsyg2001_Info *tInfo );


/*
Expand Down
137 changes: 137 additions & 0 deletions libLanlGeoMag/Lgm/Lgm_Tsyg2001.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
#ifndef LGM_TSYG2001_H
#define LGM_TSYG2001_H

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

/*
* Lgm_Tsyg2001.h
*/


#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif



/*
* Define some structures to accomodate the FORTRAN common blocks
*/
typedef struct _CB_T01S_TAIL { double DXSHIFT1, DXSHIFT2, D, DELTADY; } _CB_T01S_TAIL;
typedef struct _CB_T01S_BIRKPAR { double XKAPPA1, XKAPPA2; } _CB_T01S_BIRKPAR;
typedef struct _CB_T01S_RCPAR { double SC_SY, SC_AS, PHI; } _CB_T01S_RCPAR;
typedef struct _CB_T01S_G { double G; } _CB_T01S_G;
typedef struct _CB_T01S_RH0 { double RH0; } _CB_T01S_RH0;
typedef struct _CB_T01S_DPHI_B_RHO0 { double DPHI, B, RHO_0, XKAPPA; } _CB_T01S_DPHI_B_RHO0;
typedef struct _CB_T01S_MODENUM { int M; } _CB_T01S_MODENUM;
typedef struct _CB_T01S_DTHETA { double DTHETA; } _CB_T01S_DTHETA;



/*
* Define a structure to hold all of the info needed in TS04
*/
typedef struct LgmTsyg2001_Info {

/*
* These are versions of the original fortran common blocks
*/
_CB_T01S_TAIL CB_TAIL;
_CB_T01S_BIRKPAR CB_BIRKPAR;
_CB_T01S_RCPAR CB_RCPAR;
_CB_T01S_G CB_G;
_CB_T01S_RH0 CB_RH0;
_CB_T01S_DPHI_B_RHO0 CB_DPHI_B_RHO0;
_CB_T01S_MODENUM CB_MODENUM;
_CB_T01S_DTHETA CB_DTHETA;


/*
* SIN(PS) and COS(PS) are calculated 6 times each. This is very wasteful
* especially since we have it already. Lets pass sin_psi_op and
* cos_psi_op as globals....
*/
double sin_psi, cos_psi;


double OLD_PS;
double OLD_X;
double OLD_Y;
double OLD_Z;


int DoneJ[4];
double CPS, SPS, S3PS, PST1[4], PST2[4], ST1[4], CT1[4], ST2[4], CT2[4], X1[4], Z1[4], X2[4], Z2[4];
double P[4][4], ooP[4][4], ooP2[4][4];
double Q[4][4], ooQ[4][4], ooQ2[4][4];
double R[4][4], ooR[4][4], ooR2[4][4];
double S[4][4], ooS[4][4], ooS2[4][4];
double YooP[4][4], YooQ[4][4], CYPI[4][4], CYQI[4][4], SYPI[4][4], SYQI[4][4];
double Z1ooR[4][4], Z2ooS[4][4], SZRK[4][4], CZSK[4][4], CZRK[4][4], SZSK[4][4];
double SQPR[4][4][4], SQQS[4][4][4], EPR[4][4][4], EQS[4][4][4];




} LgmTsyg2001_Info;







/*
* Function declarations
*/
void T01S_EXTALL( int IOPGEN, int IOPT, int IOPB, int IOPR, double *A, int NTOT, double PDYN, double DST, double BYIMF,
double BZIMF, double VBIMF1, double VBIMF2, double PS, double X, double Y, double Z,
double *BXCF, double *BYCF, double *BZCF, double *BXT1, double *BYT1, double *BZT1,
double *BXT2, double *BYT2, double *BZT2, double *BXSRC, double *BYSRC, double *BZSRC,
double *BXPRC, double *BYPRC, double *BZPRC, double *BXR11, double *BYR11, double *BZR11,
double *BXR12, double *BYR12, double *BZR12, double *BXR21, double *BYR21, double *BZR21,
double *BXR22, double *BYR22, double *BZR22, double *HXIMF, double *HYIMF, double *HZIMF,
double *BX, double *BY, double *BZ, LgmTsyg2001_Info *t );
void T01S_SHLCAR3X3( double X, double Y, double Z, double PS, double *BX, double *BY, double *BZ );
void T01S_DEFORMED( int IOPT, double PS, double X, double Y, double Z,
double *BX1, double *BY1, double *BZ1, double *BX2, double *BY2, double *BZ2, LgmTsyg2001_Info *t );
void T01S_WARPED( int IOPT, double PS, double X, double Y, double Z,
double *BX1, double *BY1, double *BZ1, double *BX2, double *BY2, double *BZ2, LgmTsyg2001_Info *t );
void T01S_UNWARPED( int IOPT, double X, double Y, double Z,
double *BX1, double *BY1, double *BZ1, double *BX2, double *BY2, double *BZ2, LgmTsyg2001_Info *t );
void T01S_TAILDISK( double D0, double DELTADX, double DELTADY, double X, double Y, double Z, double *BX, double *BY, double *BZ);
void T01S_SHLCAR5X5( double *A, double X, double Y, double Z, double DSHIFT, double *HX, double *HY, double *HZ );
void T01S_BIRK_TOT( int IOPB, double PS, double X, double Y, double Z,
double *BX11, double *BY11, double *BZ11, double *BX12, double *BY12, double *BZ12,
double *BX21, double *BY21, double *BZ21, double *BX22, double *BY22, double *BZ22, LgmTsyg2001_Info *t );
void T01S_BIRK_1N2( int NUMB, int MODE, double PS, double X, double Y, double Z, double *BX, double *BY, double *BZ, LgmTsyg2001_Info *t ) ;
void T01S_TWOCONES( double *A, double X, double Y, double Z, double *BX, double *BY, double *BZ, LgmTsyg2001_Info *t );
void T01S_ONE_CONE( double *A, double X, double Y, double Z, double *BX, double *BY, double *BZ, LgmTsyg2001_Info *t );
double T01S_THETA_S( double *A, double R, double THETA);
double T01S_R_S( double *A, double R, double THETA);
void T01S_FIALCOS( double R, double THETA, double PHI, double *BTHETA, double *BPHI, int N, double THETA0, double DT);
void T01S_BIRK_SHL( int, int, int, int, int, double *A, double PS, double X_SC, double X, double Y, double Z, double *BX, double *BY, double *BZ, LgmTsyg2001_Info *t );
void T01S_FULL_RC( int IOPR, double PS, double X, double Y, double Z,
double *BXSRC, double *BYSRC, double *BZSRC, double *BXPRC, double *BYPRC, double *BZPRC, LgmTsyg2001_Info *t);
void T01S_SRC_PRC( int IOPR, double SC_SY, double SC_PR, double PHI, double PS, double X, double Y, double Z,
double *BXSRC, double *BYSRC, double *BZSRC, double *BXPRC, double *BYPRC, double *BZPRC, LgmTsyg2001_Info *t);
void T01S_RC_SYMM( double X, double Y, double Z, double *BX, double *BY, double *BZ);
double T01S_AP( double R, double SINT, double COST);
void PT01S_RC_SYMM( double X,double Y,double Z, double *BX, double *BY, double *BZ );
double T01S_T01S_APPRC( double R, double SINT, double COST);
void T01S_PRC_QUAD( double X, double Y, double Z, double *BX, double *BY, double *BZ);
double T01S_BR_PRC_Q( double R, double SINT, double COST );
double T01S_BT_PRC_Q( double R, double SINT, double COST);
void T01S_FFS( double A, double A0, double DA, double *F, double *FA, double *FS );
void T01S_RC_SHIELD( double *A, double PS, double X_SC, double X, double Y, double Z, double *BX, double *BY, double *BZ, LgmTsyg2001_Info *t );
void T01S_DIPOLE( double PS, double X, double Y, double Z, double *BX, double *BY, double *BZ, LgmTsyg2001_Info *t );




#endif
2 changes: 1 addition & 1 deletion libLanlGeoMag/Lgm/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pkginclude_HEADERS = Lgm_CTrans.h Lgm_Eop.h Lgm_FieldIntInfo.h Lgm_IGRF.h
Lgm_SphHarm.h quicksort.h Lgm_ElapsedTime.h Lgm_PolyRoots.h Lgm_SummersDiffCoeff.h \
Lgm_QinDenton.h Lgm_FastPowPoly.h Lgm_Misc.h Lgm_Constants.h Lgm_DFI_RBF.h uthash.h \
Lgm_HDF5.h Lgm_AE_index.h qsort.h Lgm_Tsyg2004.h Lgm_Utils.h Lgm_Tsyg2007.h Lgm_Metadata.h \
Lgm_Tsyg1996.h
Lgm_Tsyg1996.h Lgm_Tsyg2001.h


uninstall-hook:
Expand Down
5 changes: 5 additions & 0 deletions libLanlGeoMag/Lgm_InitMagInfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,11 @@ void Lgm_InitMagInfoDefaults( Lgm_MagModelInfo *MagInfo ) {
*/
Lgm_Init_T96( &MagInfo->T96_Info );

/*
* Inits for T01
*/
Lgm_Init_T01S( &MagInfo->T01_Info );

/*
* Inits for TS04
*/
Expand Down
2 changes: 1 addition & 1 deletion libLanlGeoMag/T01S.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ int Lgm_B_T01S( Lgm_Vector *v, Lgm_Vector *B, Lgm_MagModelInfo *Info ) {
ps = Info->c->psi; // dipole tilt angle
X = v->x; Y = v->y; Z = v->z;

Tsyg_T01S( iopt, parmod, ps, Info->c->sin_psi, Info->c->cos_psi, X, Y, Z, &Bx, &By, &Bz );
Tsyg_T01S( iopt, parmod, ps, Info->c->sin_psi, Info->c->cos_psi, X, Y, Z, &Bx, &By, &Bz, &Info->T01_Info );
/*
printf("Bt01s = (%g, %g, %g)\n", Bx, By, Bz);
B_cdip( v, &B2, Info );
Expand Down
Loading

0 comments on commit a3d699a

Please sign in to comment.