-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit bff1f6e
Showing
831 changed files
with
3,680,770 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
# Backup # | ||
########## | ||
*~ | ||
*.asv | ||
|
||
# Output # | ||
########## | ||
*.nc | ||
*.png | ||
|
||
# Large files # | ||
############### | ||
*.uint8 | ||
*.float32 | ||
*.int16 | ||
|
||
# Compiled source # | ||
################### | ||
*.com | ||
*.class | ||
*.dll | ||
*.exe | ||
*.o | ||
*.so | ||
|
||
# Packages # | ||
############ | ||
# it's better to unpack these files and commit the raw source | ||
# git has its own built in compression methods | ||
*.7z | ||
*.dmg | ||
*.gz | ||
*.iso | ||
*.jar | ||
*.rar | ||
*.tar | ||
*.zip | ||
|
||
# Logs and databases # | ||
###################### | ||
*.log | ||
*.sql | ||
*.sqlite | ||
|
||
# OS generated files # | ||
###################### | ||
.DS_Store | ||
.DS_Store? | ||
._* | ||
.Spotlight-V100 | ||
.Trashes | ||
ehthumbs.db | ||
Thumbs.db | ||
.classpath | ||
.project | ||
.prj | ||
/.vscode/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,253 @@ | ||
########################## Macro Definitions ############################ | ||
|
||
# Let's try to auto-detect what platform we're on. | ||
# If this fails, set PLATFORM manually in the else block. | ||
AUTOPLATFORM = Failed | ||
ifeq ($(MSYSTEM),MINGW32) | ||
AUTOPLATFORM = Succeeded | ||
PLATFORM = __MSYS__ | ||
endif | ||
UNAME_S := $(shell uname -s) | ||
ifeq ($(UNAME_S),Linux) | ||
AUTOPLATFORM = Succeeded | ||
PLATFORM = __linux__ | ||
endif | ||
ifeq ($(UNAME_S),Darwin) | ||
AUTOPLATFORM = Succeeded | ||
PLATFORM = __APPLE__ | ||
endif | ||
ifeq ($(AUTOPLATFORM),Failed) | ||
# Autodetect failed. Set platform manually. | ||
#PLATFORM = __APPLE__ | ||
#PLATFORM = __linux__ | ||
PLATFORM = __MSYS__ | ||
endif | ||
|
||
#TIMEFLAG = | ||
TIMEFLAG = -D _USE_SYSTEM_TIME_ | ||
|
||
OPENMPFLAG = -fopenmp | ||
#OPENMPFLAG = | ||
|
||
NAME = SOCRATES | ||
|
||
# Basic directories | ||
PROJDIR = ./ | ||
CODE = $(PROJDIR)code/ | ||
OUT = $(PROJDIR) | ||
INOUT42 = $(PROJDIR)orbit/42input/ | ||
OBJ = $(CODE)object/ | ||
INC = $(CODE)include/ | ||
SRC = $(CODE)source/ | ||
ORB42DIR = ./orbit/42/ | ||
OBJ42 = $(ORB42DIR)Object/ | ||
INC42 = $(ORB42DIR)Include/ | ||
SRC42 = $(ORB42DIR)Source/ | ||
KIT42DIR = $(ORB42DIR)Kit/ | ||
KIT42INC = $(KIT42DIR)Include/ | ||
KIT42SRC = $(KIT42DIR)Source/ | ||
|
||
ifeq ($(PLATFORM),__APPLE__) | ||
# Mac Macros | ||
CINC = -I /usr/include | ||
LIBS = -framework System -lnetcdf | ||
LFLAGS = -bind_at_load $(OPENMPFLAG) | ||
# ARCHFLAG = -arch i386 | ||
# ARCHFLAG = -arch x86_64 | ||
ARCHFLAG = -arch arm64 | ||
EXENAME = $(NAME) | ||
CC = mpicc | ||
endif | ||
|
||
ifeq ($(PLATFORM),__linux__) | ||
# Linux Macros | ||
CINC = | ||
LIBS = -ldl -lm -lnetcdf | ||
LFLAGS = $(OPENMPFLAG) | ||
ARCHFLAG = | ||
EXENAME = $(NAME) | ||
CC = mpicc | ||
endif | ||
|
||
ifeq ($(PLATFORM),__MSYS__) | ||
CINC = | ||
LIBS = -lws2_32 -lnetcdf | ||
LFLAGS = $(OPENMPFLAG) | ||
ARCHFLAG = | ||
EXENAME = $(NAME).exe | ||
CC = mpicc | ||
endif | ||
|
||
SOOPOBJ = $(OBJ)socrates.o $(OBJ)init.o $(OBJ)obs.o $(OBJ)geometry.o $(OBJ)ground.o $(OBJ)product.o $(OBJ)antenna.o $(OBJ)attitude.o $(OBJ)earthdata.o $(OBJ)interface.o $(OBJ)util.o | ||
|
||
BUSOBJ = $(OBJ)comm.o | ||
|
||
RETOBJ = $(OBJ)retrieval.o | ||
|
||
DEVOBJ = $(OBJ)design.o | ||
|
||
42OBJ = $(OBJ42)42main.o $(OBJ42)42exec.o $(OBJ42)42actuators.o $(OBJ42)42cmd.o \ | ||
$(OBJ42)42dynamics.o $(OBJ42)42environs.o $(OBJ42)42ephem.o $(OBJ42)42fsw.o \ | ||
$(OBJ42)42init.o $(OBJ42)42jitter.o $(OBJ42)42joints.o \ | ||
$(OBJ42)42perturb.o $(OBJ42)42report.o $(OBJ42)42sensors.o $(OBJ42)AcApp.o | ||
|
||
KIT42OBJ = $(OBJ42)dcmkit.o $(OBJ42)envkit.o $(OBJ42)fswkit.o $(OBJ42)geomkit.o \ | ||
$(OBJ42)iokit.o $(OBJ42)mathkit.o $(OBJ42)nrlmsise00kit.o $(OBJ42)msis86kit.o \ | ||
$(OBJ42)orbkit.o $(OBJ42)radbeltkit.o $(OBJ42)sigkit.o $(OBJ42)sphkit.o $(OBJ42)timekit.o | ||
|
||
CFLAGS = -Wall -Wshadow -Wno-deprecated -g $(GLINC) $(CINC) -I $(INC) -I $(SRC) -I $(INC42) -I $(KIT42INC) -I $(KIT42SRC) -O0 $(ARCHFLAG) $(TIMEFLAG) $(OPENMPFLAG) | ||
#-fno-stack-protector | ||
|
||
########################## Rules to link SoOp ############################# | ||
|
||
SOCRATES : $(SOOPOBJ) $(BUSOBJ) $(DEVOBJ) $(RETOBJ) $(42OBJ) $(KIT42OBJ) | ||
$(CC) $(LFLAGS) -o $(EXENAME) $(SOOPOBJ) $(DEVOBJ) $(RETOBJ) $(BUSOBJ) $(42OBJ) $(KIT42OBJ) $(LIBS) | ||
|
||
#################### Rules to compile objects ########################### | ||
|
||
$(OBJ)socrates.o : $(SRC)socrates.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)socrates.c -o $(OBJ)socrates.o | ||
|
||
$(OBJ)init.o : $(SRC)init.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)init.c -o $(OBJ)init.o | ||
|
||
$(OBJ)obs.o : $(SRC)obs.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)obs.c -o $(OBJ)obs.o | ||
|
||
$(OBJ)geometry.o : $(SRC)geometry.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)geometry.c -o $(OBJ)geometry.o | ||
|
||
$(OBJ)ground.o : $(SRC)ground.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)ground.c -o $(OBJ)ground.o | ||
|
||
$(OBJ)product.o : $(SRC)product.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)product.c -o $(OBJ)product.o | ||
|
||
$(OBJ)antenna.o : $(SRC)antenna.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)antenna.c -o $(OBJ)antenna.o | ||
|
||
$(OBJ)attitude.o : $(SRC)attitude.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)attitude.c -o $(OBJ)attitude.o | ||
|
||
$(OBJ)interface.o : $(SRC)interface.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)interface.c -o $(OBJ)interface.o | ||
|
||
$(OBJ)earthdata.o : $(SRC)earthdata.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)earthdata.c -o $(OBJ)earthdata.o | ||
|
||
$(OBJ)util.o : $(SRC)util.c $(INC)util.h $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)util.c -o $(OBJ)util.o | ||
|
||
$(OBJ)retrieval.o : $(SRC)retrieval.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)retrieval.c -o $(OBJ)retrieval.o | ||
|
||
$(OBJ)comm.o : $(SRC)comm.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)comm.c -o $(OBJ)comm.o | ||
|
||
$(OBJ)design.o : $(SRC)design.c $(INC)socrates.h $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC)design.c -o $(OBJ)design.o | ||
|
||
$(OBJ42)42main.o : $(SRC42)42main.c | ||
$(CC) $(CFLAGS) -c $(SRC42)42main.c -o $(OBJ42)42main.o | ||
|
||
$(OBJ42)42exec.o : $(SRC42)42exec.c $(INC42)42.h $(INC)socrates.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42exec.c -o $(OBJ42)42exec.o | ||
|
||
$(OBJ42)42actuators.o : $(SRC42)42actuators.c $(INC42)42.h $(INC42)Ac.h $(INC42)AcTypes.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42actuators.c -o $(OBJ42)42actuators.o | ||
|
||
$(OBJ42)42cmd.o : $(SRC42)42cmd.c $(INC42)42.h $(INC42)Ac.h $(INC42)AcTypes.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42cmd.c -o $(OBJ42)42cmd.o | ||
|
||
$(OBJ42)42dynamics.o : $(SRC42)42dynamics.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42dynamics.c -o $(OBJ42)42dynamics.o | ||
|
||
$(OBJ42)42environs.o : $(SRC42)42environs.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42environs.c -o $(OBJ42)42environs.o | ||
|
||
$(OBJ42)42ephem.o : $(SRC42)42ephem.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42ephem.c -o $(OBJ42)42ephem.o | ||
|
||
$(OBJ42)42fsw.o : $(SRC42)42fsw.c $(INC42)Ac.h $(INC42)AcTypes.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42fsw.c -o $(OBJ42)42fsw.o | ||
|
||
$(OBJ42)42GlutGui.o : $(SRC42)42GlutGui.c $(INC42)42.h $(INC42)42GlutGui.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42GlutGui.c -o $(OBJ42)42GlutGui.o | ||
|
||
$(OBJ42)42init.o : $(SRC42)42init.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42init.c -o $(OBJ42)42init.o | ||
|
||
$(OBJ42)42jitter.o : $(SRC42)42jitter.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42jitter.c -o $(OBJ42)42jitter.o | ||
|
||
$(OBJ42)42joints.o : $(SRC42)42joints.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42joints.c -o $(OBJ42)42joints.o | ||
|
||
$(OBJ42)42perturb.o : $(SRC42)42perturb.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42perturb.c -o $(OBJ42)42perturb.o | ||
|
||
$(OBJ42)42report.o : $(SRC42)42report.c $(INC42)42.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42report.c -o $(OBJ42)42report.o | ||
|
||
$(OBJ42)42sensors.o : $(SRC42)42sensors.c $(INC42)42.h $(INC42)Ac.h $(INC42)AcTypes.h | ||
$(CC) $(CFLAGS) -c $(SRC42)42sensors.c -o $(OBJ42)42sensors.o | ||
|
||
$(OBJ42)AcApp.o : $(SRC42)AcApp.c $(INC42)Ac.h $(INC42)AcTypes.h | ||
$(CC) $(CFLAGS) -c $(SRC42)AcApp.c -o $(OBJ42)AcApp.o | ||
|
||
$(OBJ42)dcmkit.o : $(KIT42SRC)dcmkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)dcmkit.c -o $(OBJ42)dcmkit.o | ||
|
||
$(OBJ42)envkit.o : $(KIT42SRC)envkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)envkit.c -o $(OBJ42)envkit.o | ||
|
||
$(OBJ42)fswkit.o : $(KIT42SRC)fswkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)fswkit.c -o $(OBJ42)fswkit.o | ||
|
||
$(OBJ42)glkit.o : $(KIT42SRC)glkit.c $(KIT42INC)glkit.h | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)glkit.c -o $(OBJ42)glkit.o | ||
|
||
$(OBJ42)geomkit.o : $(KIT42SRC)geomkit.c $(KIT42INC)geomkit.h | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)geomkit.c -o $(OBJ42)geomkit.o | ||
|
||
$(OBJ42)gmseckit.o : $(KIT42SRC)gmseckit.c $(KIT42INC)gmseckit.h | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)gmseckit.c -o $(OBJ42)gmseckit.o | ||
|
||
$(OBJ42)iokit.o : $(KIT42SRC)iokit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)iokit.c -o $(OBJ42)iokit.o | ||
|
||
$(OBJ42)mathkit.o : $(KIT42SRC)mathkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)mathkit.c -o $(OBJ42)mathkit.o | ||
|
||
$(OBJ42)nrlmsise00kit.o : $(KIT42SRC)nrlmsise00kit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)nrlmsise00kit.c -o $(OBJ42)nrlmsise00kit.o | ||
|
||
$(OBJ42)msis86kit.o : $(KIT42SRC)msis86kit.c $(KIT42INC)msis86kit.h | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)msis86kit.c -o $(OBJ42)msis86kit.o | ||
|
||
$(OBJ42)orbkit.o : $(KIT42SRC)orbkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)orbkit.c -o $(OBJ42)orbkit.o | ||
|
||
$(OBJ42)radbeltkit.o : $(KIT42SRC)radbeltkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)radbeltkit.c -o $(OBJ42)radbeltkit.o | ||
|
||
$(OBJ42)sigkit.o : $(KIT42SRC)sigkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)sigkit.c -o $(OBJ42)sigkit.o | ||
|
||
$(OBJ42)sphkit.o : $(KIT42SRC)sphkit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)sphkit.c -o $(OBJ42)sphkit.o | ||
|
||
$(OBJ42)timekit.o : $(KIT42SRC)timekit.c | ||
$(CC) $(CFLAGS) -c $(KIT42SRC)timekit.c -o $(OBJ42)timekit.o | ||
|
||
######################## Miscellaneous Rules ############################ | ||
clean : | ||
ifeq ($(PLATFORM),_WIN32) | ||
del .\obj\*.o .\$(EXENAME) | ||
else ifeq ($(PLATFORM),_WIN64) | ||
del .\obj\*.o .\$(EXENAME) | ||
else | ||
rm -f $(OBJ)*.o | ||
endif | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
# SOCRATES | ||
|
||
SOCRATES (Signals of Opportunity Constellation and Remote sensing Analysis Tool for Earth Science) is an end-to-end mission simulator for multiple Signals of Opportunity (multi-SoOp) for land remote sensing. This tool offers a comprehensive analysis environment to explore from a high-level mission design to scientific measurements. The current release of SOCRATES boasts the following capabilities: | ||
|
||
- Satellite- and tower-based observation of soil moisture using multi-SoOp. | ||
- Tradespace exploration of multi-SoOp constellation design. | ||
- Orbit propagation and import of multiple receivers and transmitters. | ||
- Specular reflection point prediction on the Earth surface. | ||
- Instrument property realizations including channel frequency, bandwidth, coherent integration time, and noise temperature. | ||
- Antenna property realizations including antenna orientation and gain pattern. | ||
- Geophysical data realizations including soil moisture, soil temperature, soil texture, vegetation, land cover, freeze/thaw state, and snow cover. | ||
- Link budget for direct and reflected signals. | ||
- Modeling of multi-body spacecraft attitude dynamics with rigid bodies. | ||
|
||
Use SOCRATES-Retrieval for end-to-end retrieval analysis using multi-SoOp. SOCRATES-Retrieval can be accessed from the following Code Ocean capsule: <https://doi.org/10.24433/CO.5405959.v1> | ||
|
||
## Compilation | ||
|
||
The GNU Compiler Collection with C11 standard on a Unix or Linux platform is recommended to compile the code. Additional software packages OpenMPI and netCDF are required for the compilation. The latest versions of the packages are recommended. OpenMPI is used for multi-processing the mission design processes. NetCDF is for creating, reading, and writing the NetCDF files. | ||
|
||
SOCRATES can be accessed from the following GitHub repository: <https://github.itap.purdue.edu/RadioNavigationLab/SOCRATES>. To install from GitHub: | ||
|
||
1. Download the source code from the latest release or clone the code from GitHub: `$ git clone git@github.itap.purdue.edu:RadioNavigationLab/SOCRATES.git` | ||
2. Open a terminal on the top-level directory (i.e., .../SOCRATES) and run `$ make` to compile the simulator. Note that `$ make clean` deletes the existing object files and the executable file. | ||
3. An executable file SOCRATES should be created in the top-level directory. | ||
|
||
## Downloading Large Binaries | ||
In the current version, the following large files must exist in each corresponding directory: | ||
|
||
- A 1-km resolution land mask: ./earthdata/static/Land_Mask_1km_EASE2.uint8 | ||
|
||
These files are distributed through releases. To download: | ||
|
||
1. Visit <https://github.itap.purdue.edu/RadioNavigationLab/SOCRATES/releases> and click the latest release. | ||
2. Download the necessary large files attached to the release. | ||
3. Place each file in each corresponding directory. | ||
|
||
## Getting Started | ||
See the manual, "SOCRATES\_User\_Manual.pdf" in the ./doc folder. | ||
|
||
## Citation | ||
S. Kim and J. L. Garrison, "A Mission Design Tool for Satellite Constellations Using Multi-Frequency Signals of Opportunity," IGARSS 2023 - 2023 IEEE International Geoscience and Remote Sensing Symposium, 2023. |
Binary file not shown.
Binary file not shown.
Oops, something went wrong.