New User Special Price Expires in

Let's log you in.

Sign in with Facebook


Don't have a StudySoup account? Create one here!


Create a StudySoup account

Be part of our community, it's free to join!

Sign up with Facebook


Create your account
By creating an account you agree to StudySoup's terms and conditions and privacy policy

Already have a StudySoup account? Login here

Computational Physics I

by: Mireya Oberbrunner

Computational Physics I PHZ 5156C

Mireya Oberbrunner
GPA 3.82


Almost Ready


These notes were just uploaded, and will be ready to view shortly.

Purchase these notes here, or revisit this page.

Either way, we'll remind you when they're ready :)

Preview These Notes for FREE

Get a free preview of these Notes, just enter your email below.

Unlock Preview
Unlock Preview

Preview these materials now for free

Why put in your email? Get access to more of this material and other relevant free materials for your school

View Preview

About this Document

Class Notes
25 ?




Popular in Course

Popular in Physics 2

This 13 page Class Notes was uploaded by Mireya Oberbrunner on Wednesday September 23, 2015. The Class Notes belongs to PHZ 5156C at University of South Florida taught by Staff in Fall. Since its upload, it has received 30 views. For similar materials see /class/212664/phz-5156c-university-of-south-florida in Physics 2 at University of South Florida.


Reviews for Computational Physics I


Report this Material


What is Karma?


Karma is the currency of StudySoup.

You can buy or earn more Karma at anytime and redeem it for class notes, study guides, flashcards, and more!

Date Created: 09/23/15
Physics PHZ 5156 O 23 August 2004 Week 1 Histograms and an Introduction to O Copy the question les and suggested program templates from home5156assignments weekl for ewample using the following commands cd start at your home directory cp r home5156assignmentsweek1 copy the directory to all levels cd weekl begin working in this directory When you have completed everything the make command should compile and demonstrate your programs Feel free to modify the Makefile if you wish The grading for this week is SU with S allowed for any substantial e ort we expect that students with more programming experience will help those with less Type make submit when you are ready to submit your work Often one measures something that should have a single value but nds a distribution of values Standard courses in statistical techniques tell us how to estimate the true underlying value often the mean is best justi ed and variance This week however we d just like to draw a histogram as an approximation to the shape of the distribution of uctuations If we see two separated peaks in the histogram we might begin to wonder whether in fact the thing we are measuring can take two different true values The next page of notes gives you your assignment To help any students with less experience in the C programming language I ve provided partly completed template les I shall be available several evenings this week in room 102 to work individually or in a group with students requiring a review The rest of the notes are essentially props to help with the C language These include some comparisons of C to other languages The comparison of quick sort routines demonstrates how it is possible to write very concise easy to read code The following example shows how the opposite is also possible Some people count the mere possibility of writing obfuscated code against C but then the same criticism could apply to English or French Just as everyone writes text differently so everyone writes C differently You will be exposed to at least three programming styles Of these that in Numerical Recipes is probably the worst the authors are FORTRAN programmers who haven t mastered the C idiom In all cases your goal should be code that you or someone else will be able to pick up in ve years and still understand completely Short subroutines and copious comments are the most important keys to achieving this In this course we are not going to be concerned with how fast your program runs Once you start writing programs for research you will nd that typical programs spend nearly all their time in a few very well isolated pieces of code it therefore makes better sense to worry about optimizing these sections only after everything works than to take ten times as long to write the program by squeezing every possible optimization out of the irrelevant parts We distinguish however algorithms from code optimization often you will achieve an enormous savings in time both execution and programming by picking the right algorithm from the start Continuing in the packet we offer some elementary exercises in preparation for the week s assignment information on how to compile and debug programs pictures modeling how C treats pointers and argument passing internally a binary tree sorting program to demonstrate the use of structs and a list of common programming mistakes It will help if you bring your copy of these notes to the laboratory so we can refer to them in explaining some point or another 1 Histograms and an Introduction to C IN Week 1 Project We shall write three programs useful for the manipulation of data Even before you have written them yourself you will be able to test working versions These commands extract columns of data from a le collect the data into histogram bins and then convert the histogram bins for graphing by the axis program Using the working versions rst try them out You will already have copied the data le into your directory it contains three columns of manufactured data The following command will plot a histogram of the second column extract 2 lt data I histbin I hist2axis I axis I xplot The data in column 2 all of which here happen to lie between 0 and 1 have been grouped into ten bins with the number in each bin plotted vertically so the rst bin for data greater than or equal to 0 but less than 01 contains 50 data the second bin between 01 and 02 51 counts the third 45 etc Histograms nd use wherever measurements include noise or a fundamentally stochastic ele ment For example in Chapter 4 we ll use the histogram program written here to analyze data from a cat s brain stem one could apply the same program to a distribution of scattering angles in particle physics or to the spacings between energy levels of electrons in a ring extract While in the example above we wished to extract only a single column in general the extract program should know how to extract an arbitrary number of columns For example to plot column two against column three we could give the command extract 2 3 lt data I sort n I axis I xplot You will already have copied an outline extract c that includes comments and templates for writing the various functions needed as well as a complete utilc containing some miscellaneous utilities needed for the project and a Makefile Once you have completed extract c the command make extract should compile and link the program The top of extractc contains a detailed description of what the program should do Once the program has compiled you should test it with your own data set or with the data le provided making sure it does what you expect The template also suggests an optional feature the processing of comment lines embedded in the data I like to use such lines to track when and how data were created and later processed histbin This program reads in a single column of numbers determines the range of the data the extremal numbers all the data lie between puts them into bins and prints out two columns The rst column is the midpoint of a bin the second the number of counts in that bin If an argument is given to histbin on the command line it speci es how many equal width bins histbin should create Otherwise the program makes ten I have provided in histread c a histread function to read all the lines of the le into an array internally it uses a singly linked list before converting the list to an array for your use Again the top of histbinc describes in greater detail what the program should do hist2axis The public domain axis program prints a graph of x and y values in the rst and second columns in its simplest form axis merely connects the dots with lines and draws a graduated frame The output of histbin above can be piped to axis extract 2 lt data I histbin I axis I xplot but the result doesn t look very good We prefer to represent the number of counts in each histogram bin as a box of some height rather than as a point in an x y plot The hist2axis program accomplishes this by writing the x and y values of the box s corners on successive lines which axis then connects with lines 1 Histograms and an Introduction to C Comparison of C and FORTRAN Quick sort Algorithm qsortc x 795 x adapted from Kerulghau and Ritchie 2nd ed wdef1ne MINFDRD 7 1f fewer than MINFDRD elements nse 1nsert1on sortx x swap elements 1 and J of tne array v mnst work even if 1 gt x void swaplt1nt xv 1m 1 1m J 1m temp vb vb vb v temp Insertion sort good wnen tnere aren t too many to sort ltnlengtn x ans works by picking tne second item from tne left and ordering 1t with x respect to Just tne f1rst two tnen picking tne third ordering 1t with x respect to tne f1rst tnree etc Adapted from Numerical Rec1pes void 1nsert1onsortlt1nt xvec int n 1m xvleft vrghtvec1 urightu nleft1 Dinner a b wh11equoturlght gt o erlght forltn1nnernleftvleftvr1gnt 1f 1 vleft lt a break v1eft1 b lllllllel vleftquot fonnd place x x shuffle x vleft1 e a Pick an element from somewnere 1n tne vector between left and right x At tne end of this routine tne element will be moved so tnat everything x to its left 1s smaller everything to its r1th larger void qsortlt1nt xvec 1m left 1m right 1m 1 last frghtileft1 lt MINFDRU more efficient X usertonsortvecleft 1 to call this algorx retnrn swapltvec left leftrlght2 move partition elemx last left to vecleft x forlleft1 1ltr1gnt part1t1on f vec lt vecleft swa vec 1ast 1 swapvec left last qsortltvec left lasvl qsortltvec last1 r1gnt Test 1t x 1m memo static int v6123777595013981239808715848081706571 1m pv uslzeofvslzeofv0 qsortv 0 Ir wh11e Why implicit typing is bad DU 1 0 C FUSEIRTJT C 796 DAR C ADAPTED FRDM NUMERICAL RECIPES C THE DNLY CHANGES I VE MADE ARE TD ELIMINATE IMPLICIT TYPING TD NAME C A FEW DF THE VARIABLES MDRE MNEMDNICALLY TD SHDRTEN THE PRDGRAM BY C REMDVING THE CDMPLICATIDN THAT MAKES SURE AN ALREADY SEIRTEZD ARRAY ISN T C THE WDRST CASE TD CHANGE THE DRDER DF PARAMETERS AND TD ADD A MAIN C RDUTINE FDR TESTING C TEST DSDRT PRDGRAM MAIN IMPLICIT NDNE INTEGER ARRAY I DIMENSIDN ARRAYlt15gt DATA ARRAY195611685623235666454852654077 CALL DSDRTARRAY1 WRITEG100 ARRAYI 100 FDRMATlt1H END 15 C SDRT AN ARRAY DF LENGTH N INTD ASCENDING NUMERICAL DRDER SUBRDUTINE DSDRTARRN IMPLICIT NDNE C USE INSERTIDN SDRT DN ANY SUB SECTIEIN SMALLER THAN DSDRTMAX C THIS WDRRS BY PICKING THE SECDND ITEM FRDM THE LEFT AND DRDERING IT WITH C RESPECT TD JUST THE FIRST TWD THEN PICKING THE THIRD DRDERING IT WITH C RESPECT TD THE FIRST THREE ETC ADAPTED FRDM NUMERICAL RECIPES INTEGER DSDRTMAX NSTACK PARAMETERltDSDRTMAX NSTACR50 INTEGER A ARR N ISTACK JSTACK LEFT RIGHT J I In DIMENSIDN ARRN ISTACKNSTACK JSTACK0 LEFT7 RIGHT 1o IFRIGHT7LEFTLTUSEIRTMAX THEN DD 13 LEFT1RIGHT AARRJ DD 11 IJ711 1 IFARRILEA GDTD 12 ARRI1ARRI 11 CDNTINUE Io 12 AKRI1 A 13 CDNTINUE IFJSTACKED0 RETURN RIG ELSE C DUICR SDRT PICK AN ELEMENT FRDM SDMEWHERE IN THE VECTDR BETWEEN LEFT AND C RIGHT AT THE END DF THIS SECTIDN THE ELEMENT WILL BE MDVED SD THAT C EVERYTHING TD ITS LEFT IS SMALLER EVERYTHING TD ITS RIGHT LARGER ILEFT ARRltIDgt ARRltLEFTgt 2o CDNTINUE 21 IFJGT0THEN IFALTARRJTHEN JJ71 GDTD 21 IF ENDIF IFJLEITHEN ARRltIgtA GDTD 30 ENDIF ARRIARRJ 1 11 1 22 IFILENTHEN IFAGTARRITHEN II1 GDTD 22 ENDIF ENDIF IFJLEITHEN ARRltJgtA ARRltJgtARRltIgt J 71 30 JSTACKJSTACK2 IFJSTACRGTNSTACRPAUSE FEIRTRAN CANNDT HANDLE THIS LEFTTHEN GHT ISTACK JSTACKrl LEFTI1 1 Histograms and an Introduction to C Winner 1995 International Obfuscated C Contest Best Game Category Don Dodson Glendale Arizona USA include lttimehgt include ltcurseshgt define PABCDE mvaddchbAaBqyampCDE define UABC case AifqxampBCbreak define R randO define U 014 define Jx 1ltltx define V int r27 OJO 21 3 25U UUUU u61 7494971q343xyd1342ab j int mainsrandtime0forx oxlt343xqx R 343while1d 1 11727 ifx 7 xud 7x0x31 xu d 0x31 x7 7 x ud7Z 7 J1 ampamp xud gt0 ampampxu d lt343 if qx ud qx J d xud qx J 5 d 1else ifRltROx7doxRZOx157 whileqx x294R 0x31initscrO n crmode cleaI refresh While xgt0move J0 60 printwquotLeVel dquot xOx31J0 qEXJJJ3f 1 YX 0x310x31ylt J 0 xOx31 0x31yif qy M J 3 a 03 y7 7 b 3 y 7 mvaddch J1y Z73J 1y 7Z73 VP0 000j P300 OjPO300jP3300jP0J0 J0VjPOJ1J0VjPJ03J 1VjPJ13J1VjPJ1J04 U VPJ1J1J3 D VPJ0O J4V jPJ1 VjP3 JOJ5 VjP 3J1J 5v j mvaddch J 1 X17 3J12 x7 73 refresh switchgetchar0 k J0 xU j J5 x0 1 J 1 x 3J 0U h J4 x7D u 4 x49 cleaIU d 8X 49CleaI case q x1breakclear refresh v nocrmode echoendwin if xprintf quotYou Escaped nquot exit 0 1 Histograms and an Introduction to C Physics Z 5156 August 2004 Some items of C syntax compared to other languages meaning C FORTRAN IV77 Pascal end of statement end of line only between statements line continuation not needed digit in column 6 not needed comment cols 727807 C col 1 begin block IF7 DO7 etc begin end block ENDIF397 etc end i holds an integer int i INTEGER I var i integer X holds a real number double X REAL8 X var X double s holds a lOObyte string char 5 100 CHARACTER 100 S type str100array1100 of character var s str100 implicit typing generally not allowed allowed7 causes trouble not allowed composite object struct COMMON very limited record assignment equality test EQ inequality test 39 NE ltgt Boolean false 0 FALSE false Boolean true nonzero TRUE true Boolean subexpressions stop when determined evaluate all evaluate all parameter passing by value or pointer by reference by value or reference function return return value name value name valu e function returning double double name FUNCTION name REAL8 name funct ion name double function returning nothing void name SUBROUTINE name procedure name local storage stack7 constant7 or static implement ation dependent stack or constant 1 Histograms and an Introduction to C examples and exercises l lleHo helloc 796 D Rabson The canonical hello world program in C include ltstdiohgt int main printf Hello worldn return 0 required by ANSI standard l 2 Temperature table ttablec 796 DAR Print a table of Celsius temperatures and their conversions to Fahrenheit Exercise modify the print format so that it comes out prettier include ltstdiohgt int main double celsius hold the Celsius temperature For loop first part is initialization second is the condition to be tested before each iteration of the loop last is an action to take at the end of each iteration Any of the parts may be blank although it s not sensible for the second one to be blank forcelsius5 celsiuslt40 celsius2 printf f fn celsius 18celsius 32 return 0 ANSI standard requires this l 3 Using an array Make a lookup table of Farhenheit equivalents for integral Celsius temperatures from 0 to 257 then print it Here7s a start Be sure to add comments define LARGEST 25 largest C temperature 11in0 double fahrenheit LARGEST1 room for 0 to LARGEST Void initializetable double E int below Void printtabledouble int below initializejzable fahrenheit LARGEST1 printtable fahrenhe it LARGEST1 urn initialize print it out 0 1 Histograms and an Introduction to C 4 Fahrenheiticelsius The program is correct as printed here7 but you will be given a version with two bugs slipped in Use a debugger to nd them fahr2celsc 796 DAR convert Fahrenheit to Celsius degrees C 59F 32 usage fahr2cels lt input gt output converts each line of input from Fahrenheit to Celsius ignoring blank lines Other lines that cannot be converted into numbers will be interpreted ero fahr2cels number number number converts each argument from Fahrenheit to Celsius I ve written this to demonstrate as many as possible of the items in the syntaxcomparison chart it could be much shorter include ltstdlibhgt include standard declarations include ltstdiohgt standard IO declarations include ltctypehgt includes isspace preprocessor directives these take effect when the compiler reads the source code define SCALE 59 note no semicolons define OFFSET 32 Define a preprocessor function beware side effects define MAXab agtb a b Statics these are accessible by any function in this file static double absoluteO 27315 absolute zero in degrees Celsius The main program if called with any arguments it tries to interpret each in turn as a Fahrenheit degree to be converted to Celsius If there are no arguments the program reads lines of input Note that argv0 is the name by which the program was called Note that we ve not declared a type for main function but not a variable defaults to Hin The type of a t mainint argc char argv static void printconversiondouble a function defined below char buf1024 room to hold a line static char findfirstnonspacechar a function below char line a line we got from fgets ifargcgt1 braces optional block 1 statement whileargc ditto left out here atof is declared in stdlibh printconversionatofargv else fgets is decalared in stdioh 1 Histograms and an Introduction to C whi1elinefindfirstnonspacefgetsbufsizeofbuf1stdin 0 the 0 is optional if1ine0 continue blank line printconversionatofline return 0 ANSI C requires return value l Print the conversion of a double from Fahrenheit to Celsius static means that it can be called only from this file static void printconversiondoub1e f This is a somewhat silly way to initialize the scale factor of 59 but I do it this way for demonstration purposes static double scale 0 0 before this is ever run double c hold a degreesCelsius temperature ifsca1e first time run only scale SCALE I don t combine these two lines into one because the MAX preprocessor macro evaluates one of its arguments twice c scalef0FFSET printf fn MAXcabsolute0 print Celsius conversion Find and return a pointer to the first nonspace in a string static char findfirstnonspacechar s I ve deliberately written this less than optimally in order to demonstrate some pieces of syntax whi1es ampamp s ampamp isspaces ampamp s return s 1 Histograms and an Introduction to C Mechanics of compiling and debugging a C program simple program cc g 0 program program c g allows debugging be sure not to overwrite program to run the 0 le linking two les cc g c prog1c cc g c prog2c cc g 0 program prog1o prog2o lm simple Make le for the shell cat Makefile previous examp e CFLAGSg tabs not spaces mandatory LDLAGSg LIBSlm 1m to link to math library program prog1o prog2o cc LDFLAGS 0 program prog1o prog2o LIBS shell shell make information on linking see the le home5156docexample cprog C to FORTRAN optimization replace g debugging with O faster code alternative compiler gcc actually on Linux cc is gcc alternative compiler pgcc commercial sometimes produces faster code A typical compilation actually goes through several steps For instance when I say cc c programc the le program c is rst passed through the C preprocessor which expands the directives It then goes through one or more passes of the main compiler including optional optimization 0 to create a temporary assemblycode le The assembly code can be saved in a 5 le wit the S switch The assembler as is then called to create an object 0 le which is nally linked together by ld with one or more startup modules and numerous default and userspeci ed runtime and static libraries see the 1d manual page for the l and L ags to create an executable le Debugging Don t make mistakes they re a waste of time quot TRACER Scattering pr intf calls throughout a program is often the easiest debugging method My les home5156rabsonlibsrcdebug h and home5156rabsonl ibsrcdebug c show an unnec essarily fancy way of implementing tracers dbx Standard Unix debugger available on most platforms but a little nonUnix like in its syntax Not available on Linux gdb Similar to dbx different syntax Use the help comamnd for help See also my initialization le home5156rabsonlib gdbinit ddd Graphical front end to gdb This works fairly well and is selfexplanatory xxgdb Graphical front end to gdb not as fancy as ddd but works without the Motif library pgdbg This graphical debugger comes with the Portlandgroup compilers and may be less buggy than ddd and xxgdb adb assemblylevel debugger for Real Programmers It even has an option for examining and modifying variables in a running kernel Not available on Lima gprof A pro ler not a debugger It is rarely good practice to write every routine to be as fast as possible Rather you will nd that most numerical programs spend 90 of their time executing 1 of the code Compile with pg then run gprof to nd the 1 of code whose e iciency matters EFF464 EFF46O EFF45C EFF458 EFF454 EFF450 EFF44C The stack 0x1086C 0x10828 0x10828 1 Histograms and an Introduction to C schematic implementation dependent int factorial int r1 ampnSP4 int mnel ampmsp if mlt0 return 1 saved addr main 10828 return nfactorial m outennostn maim static int 1 ampl0X20b30 outennostmlt i factorial 10 SP 1086C gt l DE 20b30 saved addr factorial next n This picture is oversimpli ed Automatic variables will often be put into registers and saved on the stack along with return addresses Also many machines have both a stack and a frame pointer to reduce the overhead of each subroutine The model7 however7 is right for the C language7 which does not depend on hardware storage de nitions declarations underlined mu char sv static int count0 extern int errno sg 5 storage initialization scope static address xed compilation time global if declared elsewhere static compilation time this c le static another le this c le and the other see below this c another le this le and wherever declared global automatic stack each invocation func static compilation only func static another le func and elsewhere printf sdn s count y0 0 mallocstr1enx x automatic g this le x this func g this function global if y passed y automatic each invocation y0 eta malloc hasn t happened yet y0 here global Pointers and arrays Physics Z5156 FC 00 147G14EN1491152R154T153S136 1027 1026 1025 1024 1023 1022 1021 1020 101F 00 FF I00 100 110 120 I44 193 1C7 static char arr char p arr printfquotpxsnquotpp printfquotamppxnquotampp 5008 quotSTRINGquot same as amparrO p1020STRING ampp5008 printfquotamparr0Xnquotamparr0 1020 printfquotarr2cnquot arr2 R printfquotp2cnquot p121 R printfquotddnquotsizeofpsizeofarr 47 3 01 uoponponul ue pue summonng 391 1 Histograms and an Introduction to C Some mistakes in C Get a string from standard input truncating at the newline Use this instead of gets because gets can overflow THIS CODE IS WRONG char safegets char buffer512 char rvaluefgetsbuffer sizeofbuffer stdin return rvalue The string sent to this routine should be of the form ltintegergt ltdoublegt The caller passes variables i and x to stuff with these two numbers We return 0 on success 1 on trouble THIS CODE IS WRONG int getintanddoublechar input int i double x ifsscanfinput d lf i x2 return 0 else return 1 failure Return 1 if the three integers are all equal 0 otherwise THIS CODE IS WRONG int equa13a b c oldstyle function this isn t the bug int a b c this line optional in old style I if ab ampamp bc return 1 else return 0 Increment the integer pointed to by ip THIS CODE IS WRONG void incrint ip ip 1 Histograms and an Introduction to C Structures A binary tree bintreec at 796 DAR Input Sort input lines alphabetically w binary tree screw bolt One of the chief advantages of a binary tree fastener at although this program does not exploit it diode 0 A is the ability to mix additions and deletions trans lstor o 0 at yet with the tree completely sorted at klystron at mes For lar e pplications such re at should use balancing techniques which I have at not implemented here include ltstd1ibhgt include ltstdiohgt define ALLDCX x mallocsizeofx The binary tree node struct node char string struct node left struct node right copy a string into dynamic storage char copychar 5 ar rvalue mallocstr1ens1 strcpyrvalue s returnryalue Copy string into dynamic store amp return node struct node newnodechar stri s ruct node rvalue ALLDCstruct node rvaluegtstring copystring rvaluegtright rValuegtleft 0 e urn rvalue Truncate a string 6 first newline if any char stripnlchar s char c rvalues original s ifs return 0 whilec s ifc n Add a string to the binary tree s 0 Void addchar s struct node Mrootptr return rValue make node amp find where to put it locatesrootptr newnode s s Print the binary tree recursively return rvalue Void out struct node node ifnode return no more Find where a string belongs in a binary tree out nodegtleft before this return pointer to stuff printfquot snquot nodegtstringprint this nodet outnodegtright after this struct node H locatechar s struct node rootptr Main routine take input until done then print treet struct node n rootptr r main if tree is empty stuff root ptr struct node root0 the root ifrootptr return rootptr char buf 256 room for input while 11 traverse tree whilefgetsbufsizeof buf1stdinread n rstrcmpngtstringsgt0 addstripnlbuf hoot ampadd 7ampn gtleft ampn gtright out root print tree return r ret 0


Buy Material

Are you sure you want to buy this material for

25 Karma

Buy Material

BOOM! Enjoy Your Free Notes!

We've added these Notes to your profile, click here to view them now.


You're already Subscribed!

Looks like you've already subscribed to StudySoup, you won't need to purchase another subscription to get this material. To access this material simply click 'View Full Document'

Why people love StudySoup

Bentley McCaw University of Florida

"I was shooting for a perfect 4.0 GPA this semester. Having StudySoup as a study aid was critical to helping me achieve my goal...and I nailed it!"

Janice Dongeun University of Washington

"I used the money I made selling my notes & study guides to pay for spring break in Olympia, Washington...which was Sweet!"

Steve Martinelli UC Los Angeles

"There's no way I would have passed my Organic Chemistry class this semester without the notes and study guides I got from StudySoup."

Parker Thompson 500 Startups

"It's a great way for students to improve their educational experience and it seemed like a product that everybody wants, so all the people participating are winning."

Become an Elite Notetaker and start selling your notes online!

Refund Policy


All subscriptions to StudySoup are paid in full at the time of subscribing. To change your credit card information or to cancel your subscription, go to "Edit Settings". All credit card information will be available there. If you should decide to cancel your subscription, it will continue to be valid until the next payment period, as all payments for the current period were made in advance. For special circumstances, please email


StudySoup has more than 1 million course-specific study resources to help students study smarter. If you’re having trouble finding what you’re looking for, our customer support team can help you find what you need! Feel free to contact them here:

Recurring Subscriptions: If you have canceled your recurring subscription on the day of renewal and have not downloaded any documents, you may request a refund by submitting an email to

Satisfaction Guarantee: If you’re not satisfied with your subscription, you can contact us for further help. Contact must be made within 3 business days of your subscription purchase and your refund request will be subject for review.

Please Note: Refunds can never be provided more than 30 days after the initial purchase date regardless of your activity on the site.